type CountByGVKRows struct { Count int `json:"c"` APIVersion string `json:"api_version"` Kind string `json:"kind"` }
type DBHandle struct { *sql.DB ClusterID string }
func FromDSN(dsn string, maxOpenConns, maxIdleConns int) (*DBHandle, error)
func FromEnv() (*DBHandle, error)
func (db *DBHandle) CountByGVK(ctx context.Context) ([]CountByGVKRows, error)
CountByGVK gives a simple count summary of watched resources across all clusters, counting by apiVersion and kind. This is a more efficient, unsorted query suitable for gathering metrics data.
func (db *DBHandle) DeleteArtifactVersion(ctx context.Context, image, sha25Digest string) error
func (db *DBHandle) DeleteRemoteCommand(ctx context.Context, id string) error
TODO(dk185217): Transact, or similar. Get, handle, and delete commands according to successful completion, and make sure it is row locked for a single handler at once
func (db *DBHandle) DeleteResource(ctx context.Context, resource model.WatchedResource) error
func (db *DBHandle) GetClustersMatchingArtifactLabels(ctx context.Context, artifact uuid.UUID) ([]uuid.UUID, error)
func (db *DBHandle) GetKinformPubSubSubscriptions(ctx context.Context) ([]model.PubSubSubscription, error)
func (db *DBHandle) GetRemoteCommand(ctx context.Context) (RemoteCommand, bool, error)
func (db *DBHandle) InsertArtifact(ctx context.Context, a sovereign.Artifact) (uuid.UUID, error)
func (db *DBHandle) InsertArtifactLabel(ctx context.Context, artifact uuid.UUID, key, value string) (uuid.UUID, error)
func (db *DBHandle) InsertArtifactObserved(ctx context.Context, image string) error
TODO(dk185217): This should be temporary. It is parsing raw image strings from deployment specs. It should be replaced by functionality acting on higher level information about artifacts
func (db *DBHandle) InsertArtifactVersion(ctx context.Context, image, tag, sha25Digest string) (uuid.UUID, error)
func (db *DBHandle) InsertCluster(ctx context.Context, name string) (uuid.UUID, error)
func (db *DBHandle) InsertClusterLabel(ctx context.Context, cluster uuid.UUID, key, value string) (uuid.UUID, error)
func (db *DBHandle) InsertKinformPubSubSubscription(ctx context.Context, sub model.PubSubSubscription) (uuid.UUID, error)
func (db *DBHandle) InsertResource(ctx context.Context, resource model.WatchedResource) error
func (db *DBHandle) InsertResourceObservation(ctx context.Context, resource model.WatchedResource) error
TODO(dk185217): experimental. full history of objects
func (db *DBHandle) QueryArtifactVersion(ctx context.Context, image, sha25Digest string) (sovereign.ArtifactVersion, error)
func (db *DBHandle) SummarizeGVKs(ctx context.Context) ([]SummarizeGVKsRow, error)
SummarizeGVKs gives a high level rollup-style summary of watched resources across all clusters, counting by apiVersion and kind. For example: c0 api_version c1 kind 614 "iam.cnrm.cloud.google.com/v1beta1" 532 "IAMPolicyMember" 614 "iam.cnrm.cloud.google.com/v1beta1" 41 "IAMPartialPolicy" 614 "iam.cnrm.cloud.google.com/v1beta1" 21 "IAMServiceAccount" 614 "iam.cnrm.cloud.google.com/v1beta1" 15 "IAMServiceAccountKey" 614 "iam.cnrm.cloud.google.com/v1beta1" 5 "IAMCustomRole" 230 "serviceusage.cnrm.cloud.google.com/v1beta1" 230 "Service" 127 "compute.cnrm.cloud.google.com/v1beta1" 97 "ComputeFirewall" shows the total count of all resources in group version, followed by a break down of which kinds contribute to that count.
func (db *DBHandle) UpdateClusterHeartbeatWithSession(ctx context.Context, h model.ClusterHeartbeat) error
func (db *DBHandle) UpdateResource(ctx context.Context, resource model.WatchedResource) error
TODO(dk185217): Begin to refactor out ORM-style domain types (ie, entity mappings to go structs)
type RemoteCommand struct { ID string CmdType string CmdArgs string }
type SummarizeGVKsRow struct { APIVersionCount int `json:"c0"` APIVersion string `json:"api_version"` KindCount int `json:"c1"` Kind string `json:"kind"` }