// 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"
	ExperimentReadSymbolHistory           = "read-symbol-history"
	ExperimentSearchGrouping              = "search-grouping"
	ExperimentSearchIncrementally         = "search-incrementally"
	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 and documentation_symbols.",
	ExperimentNewUnitLayout:               "Enable the new layout on the unit page.",
	ExperimentReadSymbolHistory:           "Read data from the symbol_history table.",
	ExperimentSearchGrouping:              "Group search results.",
	ExperimentSearchIncrementally:         "Use incremental query for 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
}
