package domain

// QueryPlan is the reviewed search intent compiled from a DemandMap. It is
// persisted with both versions so a sweep can prove which product truth it
// searched, and can safely discard a stale plan after an edit.
type QueryPlan struct {
	DemandInputVersion string           `json:"demand_input_version"`
	MapVersion         int64            `json:"map_version"`
	Groups             []QueryPlanGroup `json:"groups"`
}

type QueryPlanGroup struct {
	Query      string   `json:"query"`
	Include    []string `json:"include"`
	Exclude    []string `json:"exclude"`
	BasisKinds []string `json:"basis_kinds"`
	BasisTexts []string `json:"basis_texts"`
}
