// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package internal contains data used through x/pkgsite.
package internal

const (
	ExperimentDeprecatedDoc               = "deprecated-doc"
	ExperimentEnableStdFrontendFetch      = "enable-std-frontend-fetch"
	ExperimentInsertSymbolSearchDocuments = "insert-symbol-search-documents"
	ExperimentNewUnitLayout               = "new-unit-layout"
	ExperimentReadImports                 = "read-imports"
	ExperimentReadSymbolHistory           = "read-symbol-history"
	ExperimentSearchGrouping              = "search-grouping"
	ExperimentSkipInsertSymbols           = "skip-insert-symbols"
	ExperimentStyleGuide                  = "styleguide"
	ExperimentSymbolHistoryMainPage       = "symbol-history-main-page"
	ExperimentSymbolHistoryVersionsPage   = "symbol-history-versions-page"
	ExperimentSymbolSearch                = "symbol-search"
)

// Experiments represents all of the active experiments in the codebase and
// a description of each experiment.
var Experiments = map[string]string{
	ExperimentDeprecatedDoc:               "Treat deprecated symbols specially in documentation.",
	ExperimentEnableStdFrontendFetch:      "Enable frontend fetching for module std.",
	ExperimentInsertSymbolSearchDocuments: "Insert data into symbol_search_documents.",
	ExperimentNewUnitLayout:               "Enable the new layout on the unit page.",
	ExperimentReadImports:                 "Read from imports instead of package_imports.",
	ExperimentReadSymbolHistory:           "Read data from the symbol_history table.",
	ExperimentSearchGrouping:              "Group search results.",
	ExperimentSkipInsertSymbols:           "Don't insert data into symbols tables.",
	ExperimentStyleGuide:                  "Enable the styleguide.",
	ExperimentSymbolHistoryMainPage:       "Show package API history on the main unit page.",
	ExperimentSymbolHistoryVersionsPage:   "Show package API history on the versions page.",
	ExperimentSymbolSearch:                "Enable searching for symbols.",
}

// Experiment holds data associated with an experimental feature for frontend
// or worker.
type Experiment struct {
	// This struct is used to decode dynamic config (see
	// internal/config/dynconfig). Make sure that changes to this struct are
	// coordinated with the deployment of config files.

	// Name is the name of the feature.
	Name string

	// Rollout is the percentage of requests enrolled in the experiment.
	Rollout uint

	// Description provides a description of the experiment.
	Description string
}
