blob: b8ca3d78a58099bd79ffdcb93729da62f87c3642 [file] [log] [blame]
package schema
import "time"
// AnomalyGroupSchemaSchema represents the SQL schema of the AnomalyGroups table.
type AnomalyGroupSchema struct {
ID string `sql:"id UUID PRIMARY KEY DEFAULT gen_random_uuid()"`
// The timestamp when the anomaly group is created.
CreationTime time.Time `sql:"creation_time TIMESTAMPTZ DEFAULT now()"`
// The LIST of metadata for each anomaly
AnomalyIDs []string `sql:"anomaly_ids UUID ARRAY"`
// The meta data from the first grouped anomaly.
// Currently we should expect the followings:
// subscription_name;
// subscription_revision;
// master_name;
// benchmark_name.
GroupMetaData interface{} `sql:"group_meta_data JSONB"`
// The overlapped reivision range among all the anomalies.
// These two properties may change when new anomalies are added.
// Keeping the up-to-date values here to avoid querying anomaly table.
CommonRevStart int `sql:"common_rev_start INT"`
CommonRevEnd int `sql:"common_rev_end INT"`
// An alerts.Alert.Action item which can be 'noaction', 'report'
// or 'bisect'.
Action string `sql:"action TEXT"`
// The timestamp when the action takes place.
ActionTime time.Time `sql:"action_time TIMESTAMPTZ"`
// The ID of the bisection job if the action is 'bisect'
BisectionID string `sql:"bisection_id TEXT"`
// The ID of the filed issue if the action is 'report'
// Notice that this is different from the issues filed at the
// end of bisection.
ReportedIssueID string `sql:"reported_issue_id TEXT"`
// The list of culprits found related to this group
CulpritIDs []string `sql:"culprit_ids UUID ARRAY"`
// The timestamp of the last update
LastModifiedTime time.Time `sql:"last_modified_time TIMESTAMPTZ"`
}