app

package
v0.19.907 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2026 License: AGPL-3.0 Imports: 48 Imported by: 0

Documentation ¶

Index ¶

Constants ¶

View Source
const (
	// Build timeout bounds (applies to build operations)
	MinBuildTimeout = time.Second * 1
	MaxBuildTimeout = time.Hour * 1

	// Deploy timeout bounds (applies to deploy operations)
	MinDeployTimeout = time.Second * 1
	MaxDeployTimeout = time.Hour * 1

	// Auto retry bounds (applies to deploy auto-retry)
	MaxAutoRetries = 20
)
View Source
const (
	WorkflowMetadataKeyWorkflowNameSuffix = "workflow-name-suffix"
	WorkflowMetadataKeyRole               = "role"
	WorkflowMetadataKeyOwnerName          = "owner_name"
	WorkflowMetadataKeyChangedInputValues = "changed_input_values"
)
View Source
const (
	DefaultAWSInstanceType = "t3a.medium"
)

Variables ¶

View Source
var (
	CommonRunnerGroupSettingsGroups         = [...]string{"operations", "sync"}
	DefaultOrgRunnerGroupSettingsGroups     = [...]string{"build", "sandbox", "runner"}
	DefaultInstallRunnerGroupSettingsGroups = [...]string{"deploys", "action", "sandbox"}
)

TODO(fd): use the consts

These component types require a component to be passed with them

All component types

View Source
var AllPolicyTypes = config.AllAppPolicyTypes

Functions ¶

func GetFeatureDescriptions ¶

func GetFeatureDescriptions() map[OrgFeature]string

GetFeatureDescriptions returns a map of feature names to their descriptions

Types ¶

type AWSAccount ¶

type AWSAccount struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string `json:"-" gorm:"notnull" temporaljson:"install_id,omitzero,omitempty"`

	Region     string `json:"region,omitzero" gorm:"notnull" temporaljson:"region,omitzero,omitempty"`
	IAMRoleARN string `json:"iam_role_arn,omitzero" gorm:"notnull" temporaljson:"iam_role_arn,omitzero,omitempty"`
}

func (*AWSAccount) BeforeCreate ¶

func (a *AWSAccount) BeforeCreate(tx *gorm.DB) error

func (*AWSAccount) Indexes ¶

func (a *AWSAccount) Indexes(db *gorm.DB) []migrations.Index

type AWSECRImageConfig ¶

type AWSECRImageConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	// connection to parent model
	ComponentConfigID   string `json:"component_config_id,omitzero" gorm:"notnull" temporaljson:"component_config_id,omitzero,omitempty"`
	ComponentConfigType string `json:"component_config_type,omitzero" gorm:"notnull" temporaljson:"component_config_type,omitzero,omitempty"`

	// actual configuration
	IAMRoleARN string `json:"iam_role_arn,omitzero" gorm:"notnull" temporaljson:"iam_role_arn,omitzero,omitempty"`
	AWSRegion  string `json:"aws_region,omitzero" gorm:"notnull" temporaljson:"aws_region,omitzero,omitempty"`
}

func (*AWSECRImageConfig) BeforeCreate ¶

func (c *AWSECRImageConfig) BeforeCreate(tx *gorm.DB) error

func (*AWSECRImageConfig) Indexes ¶

func (c *AWSECRImageConfig) Indexes(db *gorm.DB) []migrations.Index

type AWSIAMRoleType ¶

type AWSIAMRoleType string
const (
	// used for initial install setup
	AWSIAMRoleTypeRunnerProvision AWSIAMRoleType = "runner_provision"
	// used for tearing down an install
	AWSIAMRoleTypeRunnerDeprovision AWSIAMRoleType = "runner_deprovision"
	// used for updates and other maintenance
	AWSIAMRoleTypeRunnerMaintenance AWSIAMRoleType = "runner_maintenance"

	// used for break-glass by the vendor
	AWSIAMRoleTypeBreakGlass AWSIAMRoleType = "breakglass"

	// used for various app operations the vendor
	AWSIAMRoleTypeCustom AWSIAMRoleType = "custom"

	// used for break glass mode where the runner is given elevated permissions
	//
	// NOTE(jm): at some point, we probably need break glass actions
	AWSIAMRoleTypeRunnerBreakGlass AWSIAMRoleType = "runner_breakglass"
)

type AWSRegionType ¶

type AWSRegionType string
const (
	AWSRegionTypeDefault  AWSRegionType = "default"
	AWSRegionTypeGovCloud AWSRegionType = "govcloud"
	AWSRegionTypeUnknown  AWSRegionType = ""
)

func (AWSRegionType) String ¶

func (a AWSRegionType) String() string

type AWSStackOutputs ¶

type AWSStackOutputs struct {
	AccountID             string            `json:"account_id,omitzero" mapstructure:"account_id" temporaljson:"account_id,omitzero,omitempty"`
	Region                string            `json:"region,omitzero" mapstructure:"region" temporaljson:"region,omitzero,omitempty"`
	VPCID                 string            `json:"vpc_id,omitzero" mapstructure:"vpc_id" temporaljson:"vpcid,omitzero,omitempty"`
	RunnerSubnet          string            `json:"runner_subnet,omitzero" mapstructure:"runner_subnet" temporaljson:"runner_subnet,omitzero,omitempty"`
	PublicSubnets         []string          `json:"public_subnets,omitzero" mapstructure:"public_subnets" temporaljson:"public_subnets,omitzero,omitempty"`
	PrivateSubnets        []string          `json:"private_subnets,omitzero" mapstructure:"private_subnets" temporaljson:"private_subnets,omitzero,omitempty"`
	ProvisionIAMRoleARN   string            `` /* 133-byte string literal not displayed */
	DeprovisionIAMRoleARN string            `` /* 139-byte string literal not displayed */
	MaintenanceIAMRoleARN string            `` /* 139-byte string literal not displayed */
	RunnerIAMRoleARN      string            `json:"runner_iam_role_arn,omitzero" mapstructure:"runner_iam_role_arn" temporaljson:"runner_iam_role_arn,omitzero,omitempty"`
	BreakGlassRoleARNs    map[string]string `` /* 130-byte string literal not displayed */
	CustomRoleARNs        map[string]string `json:"custom_role_arns,omitzero" mapstructure:"custom_role_arns" temporaljson:"custom_role_arns,omitzero,omitempty"`
	InstallInputs         map[string]string `json:"install_inputs,omitzero" mapstructure:"install_inputs" temporaljson:"install_inputs,omitzero,omitempty"`
}

func (*AWSStackOutputs) BreakGlassRoleID ¶ added in v0.19.850

func (a *AWSStackOutputs) BreakGlassRoleID(name string) (string, error)

func (*AWSStackOutputs) BreakGlassRoles ¶ added in v0.19.850

func (a *AWSStackOutputs) BreakGlassRoles() (map[string]string, error)

func (*AWSStackOutputs) CustomRoleID ¶ added in v0.19.850

func (a *AWSStackOutputs) CustomRoleID(name string) (string, error)

func (*AWSStackOutputs) CustomRoles ¶ added in v0.19.850

func (a *AWSStackOutputs) CustomRoles() (map[string]string, error)

func (*AWSStackOutputs) DeprovisionRoleID ¶ added in v0.19.850

func (a *AWSStackOutputs) DeprovisionRoleID() (string, error)

func (*AWSStackOutputs) InstallInputValues ¶ added in v0.19.850

func (a *AWSStackOutputs) InstallInputValues() (map[string]string, error)

func (*AWSStackOutputs) MaintenanceRoleID ¶ added in v0.19.850

func (a *AWSStackOutputs) MaintenanceRoleID() (string, error)

func (*AWSStackOutputs) ProvisionRoleID ¶ added in v0.19.850

func (a *AWSStackOutputs) ProvisionRoleID() (string, error)

type Account ¶

type Account struct {
	ID        string                `gorm:"primarykey" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedAt time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_email_subject,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	Email       string      `json:"email,omitzero" gorm:"index:idx_email_subject,unique,not null;default null" temporaljson:"email,omitzero,omitempty"`
	Subject     string      `json:"subject,omitzero" gorm:"index:idx_email_subject,unique,not null;" temporaljson:"subject,omitzero,omitempty"`
	AccountType AccountType `json:"account_type,omitzero" temporaljson:"account_type,omitzero,omitempty"`

	Roles        []Role            `gorm:"many2many:account_roles;constraint:OnDelete:CASCADE;" json:"roles,omitzero" temporaljson:"roles,omitzero,omitempty"`
	Tokens       []Token           `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"tokens,omitzero,omitempty"`
	Identities   []AccountIdentity `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"identities,omitzero,omitempty"`
	UserJourneys UserJourneys      `json:"user_journeys,omitzero" gorm:"type:jsonb;default null" temporaljson:"user_journeys,omitzero,omitempty"`

	// ReadOnly Fields
	OrgIDs         []string        `json:"org_ids,omitzero" gorm:"-" temporaljson:"org_i_ds,omitzero,omitempty"`
	Orgs           []*Org          `json:"-" gorm:"-" temporaljson:"orgs,omitzero,omitempty"`
	AllPermissions permissions.Set `json:"permissions,omitzero" gorm:"-" temporaljson:"all_permissions,omitzero,omitempty"`

	IsEmployee bool `json:"-"`
}

func (*Account) AfterQuery ¶

func (a *Account) AfterQuery(tx *gorm.DB) error

func (*Account) BeforeCreate ¶

func (a *Account) BeforeCreate(tx *gorm.DB) error

func (*Account) Indexes ¶

func (a *Account) Indexes(db *gorm.DB) []migrations.Index

func (*Account) JoinTables ¶

func (*Account) JoinTables() []migrations.JoinTable

type AccountIdentity ¶

type AccountIdentity struct {
	ID        string    `gorm:"primarykey" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedAt time.Time `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`

	// Account relationship
	AccountID string   `` /* 138-byte string literal not displayed */
	Account   *Account `gorm:"constraint:OnDelete:CASCADE" faker:"-" json:"-" temporaljson:"account,omitzero,omitempty"`

	// Identity Provider relationship (nullable for default env-var provider)
	IdentityProviderID *string           `gorm:"index" json:"identity_provider_id,omitempty" temporaljson:"identity_provider_id,omitzero,omitempty"`
	IdentityProvider   *IdentityProvider `gorm:"constraint:OnDelete:SET NULL" faker:"-" json:"-" temporaljson:"identity_provider,omitzero,omitempty"`

	// Provider type - required, enables lookup when using the default env-var provider
	ProviderType ProviderType `` /* 191-byte string literal not displayed */

	// Subject identifier from the IdP - the canonical, stable user identifier
	Sub string `gorm:"not null;index:idx_account_identity_provider_sub,unique" json:"sub,omitzero" temporaljson:"sub,omitzero,omitempty"`

	// User profile information from the identity provider
	Name    string `json:"name,omitempty" temporaljson:"name,omitempty"`
	Picture string `json:"picture,omitempty" temporaljson:"picture,omitempty"`
}

AccountIdentity links an account to an identity provider using the IdP's subject identifier. This enables secure authentication where users are identified by their stable `sub` claim rather than by email (which can change or be reassigned).

func (*AccountIdentity) BeforeCreate ¶

func (a *AccountIdentity) BeforeCreate(tx *gorm.DB) error

func (*AccountIdentity) Indexes ¶

func (a *AccountIdentity) Indexes(db *gorm.DB) []migrations.Index

func (AccountIdentity) TableName ¶

func (a AccountIdentity) TableName() string

type AccountRole ¶

type AccountRole struct {
	ID string `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_account_role:unique" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID generics.NullString `json:"org_id,omitzero" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org                `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	RoleID string `gorm:"primary_key;index:idx_account_role:unique" temporaljson:"role_id,omitzero,omitempty"`
	Role   Role   `temporaljson:"role,omitzero,omitempty"`

	AccountID string  `json:"account_id,omitzero" gorm:"primary_key;index:idx_account_role:unique" temporaljson:"account_id,omitzero,omitempty"`
	Account   Account `json:"account,omitzero" temporaljson:"account,omitzero,omitempty"`
}

AccountRole is a many2many table used by gorm under the hood

func (*AccountRole) BeforeSave ¶

func (c *AccountRole) BeforeSave(tx *gorm.DB) error

func (*AccountRole) Indexes ¶

func (a *AccountRole) Indexes(db *gorm.DB) []migrations.Index

type AccountType ¶

type AccountType string
const (
	AccountTypeAuth    AccountType = "auth"
	AccountTypeAuth0   AccountType = "auth0"
	AccountTypeService AccountType = "service"

	// Internal Account Types for testing
	AccountTypeCanary      AccountType = "canary"
	AccountTypeIntegration AccountType = "integration"
)

type ActionWorkflow ¶

type ActionWorkflow struct {
	ID string `json:"id" gorm:"primary_key;check:id_checker,char_length(id)=26" temporaljson:"id,omitzero,omitempty"`
	// TODO: change to default null after migration & after initial pr
	Status            ActionWorkflowStatus  `json:"status,omitzero" gorm:"notnull;default:'active'" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string                `json:"status_description,omitzero" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus       `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`
	CreatedByID       string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy         Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt         time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt         time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt         soft_delete.DeletedAt `json:"-" gorm:"index:idx_action_workflow_app_id_name,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	App   App    `json:"-" swaggerignore:"true" temporaljson:"app,omitzero,omitempty"`
	AppID string `json:"app_id,omitzero" gorm:"index:idx_action_workflow_app_id_name,unique" faker:"-" temporaljson:"app_id,omitzero,omitempty"`

	Configs     []ActionWorkflowConfig `json:"configs" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"configs,omitzero,omitempty"`
	ConfigCount int                    `json:"config_count" gorm:"->;-:migration" temporaljson:"config_count,omitzero,omitempty"`

	// metadata
	Name string `json:"name,omitzero" gorm:"index:idx_action_workflow_app_id_name,unique" temporaljson:"name,omitzero,omitempty"`
	labels.Labeled
}

func (*ActionWorkflow) BeforeCreate ¶

func (a *ActionWorkflow) BeforeCreate(tx *gorm.DB) error

func (*ActionWorkflow) Indexes ¶

func (a *ActionWorkflow) Indexes(db *gorm.DB) []migrations.Index

type ActionWorkflowConfig ¶

type ActionWorkflowConfig struct {
	ID          string                `json:"id,omitzero" gorm:"primary_key;check:id_checker,char_length(id)=26" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index:idx_action_workflow_id_app_config_id,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	App   App    `json:"-" swaggerignore:"true" temporaljson:"app,omitzero,omitempty"`
	AppID string `json:"app_id,omitzero" gorm:"notnull;index:idx_app_install_name,unique" temporaljson:"app_id,omitzero,omitempty"`

	AppConfigID string    `` /* 134-byte string literal not displayed */
	AppConfig   AppConfig `json:"-" temporaljson:"app_config,omitzero,omitempty"`

	ActionWorkflowID string         `` /* 144-byte string literal not displayed */
	ActionWorkflow   ActionWorkflow `json:"-" temporaljson:"action_workflow,omitzero,omitempty"`

	// INFO: if adding new associations here, ensure they are added to the batch delete activity
	Triggers []ActionWorkflowTriggerConfig `json:"triggers,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"triggers,omitzero,omitempty"`
	Steps    []ActionWorkflowStepConfig    `json:"steps,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"steps,omitzero,omitempty"`
	Runs     []InstallActionWorkflowRun    `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"runs,omitzero,omitempty"`

	Timeout time.Duration `` /* 126-byte string literal not displayed */

	ComponentDependencyIDs pq.StringArray `json:"component_dependency_ids" temporaljson:"component_dependency_ids" swaggertype:"array,string" gorm:"type:text[]"`
	References             pq.StringArray `json:"references" temporaljson:"references" swaggertype:"array,string" gorm:"type:text[]"`

	Refs              []refs.Ref                    `gorm:"-"`
	CronTrigger       *ActionWorkflowTriggerConfig  `json:"-" temporaljson:"cron_trigger,omitzero,omitempty"`
	LifecycleTriggers []ActionWorkflowTriggerConfig `json:"-" temporaljson:"lifecycle_triggers,omitzero,omitempty"`

	BreakGlassRoleARN generics.NullString `` /* 132-byte string literal not displayed */
	Role              string              `json:"role,omitzero" gorm:"default:null" temporaljson:"role,omitzero,omitempty"`

	EnableKubeConfig sql.NullBool `json:"enable_kube_config" gorm:"default:true" temporaljson:"enable_kube_config"`
}

func (*ActionWorkflowConfig) AfterQuery ¶

func (a *ActionWorkflowConfig) AfterQuery(tx *gorm.DB) error

func (*ActionWorkflowConfig) BeforeCreate ¶

func (a *ActionWorkflowConfig) BeforeCreate(tx *gorm.DB) error

func (*ActionWorkflowConfig) GetComponentTriggerIndex ¶

func (a *ActionWorkflowConfig) GetComponentTriggerIndex(typ ActionWorkflowTriggerType, componentID string) int

func (*ActionWorkflowConfig) GetTriggerIndex ¶

func (a *ActionWorkflowConfig) GetTriggerIndex(typ ActionWorkflowTriggerType) int

func (*ActionWorkflowConfig) HasComponentTrigger ¶

func (a *ActionWorkflowConfig) HasComponentTrigger(typ ActionWorkflowTriggerType, componentID string) bool

func (*ActionWorkflowConfig) HasTrigger ¶

func (*ActionWorkflowConfig) Indexes ¶

func (a *ActionWorkflowConfig) Indexes(db *gorm.DB) []migrations.Index

func (*ActionWorkflowConfig) Views ¶

func (i *ActionWorkflowConfig) Views(db *gorm.DB) []migrations.View

func (*ActionWorkflowConfig) WorkflowConfigCanTriggerManually ¶

func (a *ActionWorkflowConfig) WorkflowConfigCanTriggerManually() bool

type ActionWorkflowStatus ¶

type ActionWorkflowStatus string
const (
	ActionWorkflowStatusActive ActionWorkflowStatus = "active"
	// error state
	ActionWorkflowStatusError ActionWorkflowStatus = "error"
	// queued for deletion
	ActionWorkflowStatusDeleteQueued ActionWorkflowStatus = "delete_queued"
)

type ActionWorkflowStepConfig ¶

type ActionWorkflowStepConfig struct {
	ID          string                `json:"id" gorm:"primary_key;check:id_checker,char_length(id)=26" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `` /* 136-byte string literal not displayed */

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	App   App    `json:"-" swaggerignore:"true" temporaljson:"app,omitzero,omitempty"`
	AppID string `json:"app_id,omitzero" gorm:"notnull;index:idx_app_install_name,unique" temporaljson:"app_id,omitzero,omitempty"`

	// this belongs to an app config id
	AppConfigID string    `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`
	AppConfig   AppConfig `json:"-" temporaljson:"app_config,omitzero,omitempty"`

	ActionWorkflowConfigID string               `` /* 184-byte string literal not displayed */
	ActionWorkflowConfig   ActionWorkflowConfig `json:"-" temporaljson:"action_workflow_config,omitzero,omitempty"`

	// metadata
	Name           string         `` /* 142-byte string literal not displayed */
	PreviousStepID string         `json:"previous_step_id,omitzero" temporaljson:"previous_step_id,omitzero,omitempty"`
	Idx            int            `json:"idx,omitzero" temporaljson:"idx,omitzero,omitempty"`
	References     pq.StringArray `json:"references" temporaljson:"references" swaggertype:"array,string" gorm:"type:text[]"`

	// all the details needed for a step
	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 158-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 170-byte string literal not displayed */
	VCSConnectionType        VCSConnectionType         `json:"-" gorm:"-" temporaljson:"vcs_connection_type,omitzero,omitempty"`

	EnvVars        pgtype.Hstore `json:"env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"env_vars,omitzero,omitempty"`
	Command        string        `json:"command,omitzero" temporaljson:"command,omitzero,omitempty"`
	InlineContents string        `json:"inline_contents,omitzero" temporaljson:"inline_contents,omitzero,omitempty"`
}

func (*ActionWorkflowStepConfig) AfterQuery ¶

func (a *ActionWorkflowStepConfig) AfterQuery(tx *gorm.DB) error

func (*ActionWorkflowStepConfig) BeforeCreate ¶

func (a *ActionWorkflowStepConfig) BeforeCreate(tx *gorm.DB) error

func (*ActionWorkflowStepConfig) Indexes ¶

func (a *ActionWorkflowStepConfig) Indexes(db *gorm.DB) []migrations.Index

type ActionWorkflowTriggerConfig ¶

type ActionWorkflowTriggerConfig struct {
	ID          string                `json:"id" gorm:"primary_key;check:id_checker,char_length(id)=26" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `` /* 139-byte string literal not displayed */

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	App   App    `json:"-" swaggerignore:"true" temporaljson:"app,omitzero,omitempty"`
	AppID string `json:"app_id,omitzero" gorm:"notnull;index:idx_app_install_name,unique" temporaljson:"app_id,omitzero,omitempty"`

	// this belongs to an app config id
	AppConfigID string    `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`
	AppConfig   AppConfig `json:"-" temporaljson:"app_config,omitzero,omitempty"`

	ActionWorkflowConfigID string               `` /* 187-byte string literal not displayed */
	ActionWorkflowConfig   ActionWorkflowConfig `json:"-" temporaljson:"action_workflow_config,omitzero,omitempty"`

	Type ActionWorkflowTriggerType `` /* 188-byte string literal not displayed */

	Index int `json:"index,omitzero" swaggertype:"integer" gorm:"default:0;"`

	CronSchedule string              `json:"cron_schedule,omitzero,omitempty" temporaljson:"cron_schedule,omitzero,omitempty"`
	ComponentID  generics.NullString `json:"component_id,omitzero" swaggertype:"string" temporaljson:"component_id,omitzero,omitempty"`
	Component    *Component          `json:"component" temporaljson:"component,omitzero,omitempty"`
}

func (*ActionWorkflowTriggerConfig) BeforeCreate ¶

func (a *ActionWorkflowTriggerConfig) BeforeCreate(tx *gorm.DB) error

func (*ActionWorkflowTriggerConfig) Indexes ¶

type ActionWorkflowTriggerType ¶

type ActionWorkflowTriggerType string
const (
	// this is for manual debugging/triggering in the ui
	ActionWorkflowTriggerTypeManual ActionWorkflowTriggerType = "manual"

	// run on a hook
	ActionWorkflowTriggerTypeCron ActionWorkflowTriggerType = "cron"

	// NEW: For ad-hoc one-off actions without permanent workflow definitions
	ActionWorkflowTriggerTypeAdHoc ActionWorkflowTriggerType = "adhoc"

	// individaul component ones
	ActionWorkflowTriggerTypePreDeployComponent  ActionWorkflowTriggerType = "pre-deploy-component"
	ActionWorkflowTriggerTypePostDeployComponent ActionWorkflowTriggerType = "post-deploy-component"

	ActionWorkflowTriggerTypePreTeardownComponent  ActionWorkflowTriggerType = "pre-teardown-component"
	ActionWorkflowTriggerTypePostTeardownComponent ActionWorkflowTriggerType = "post-teardown-component"

	// internals
	ActionWorkflowTriggerTypePreSecretsSync  ActionWorkflowTriggerType = "pre-secrets-sync"
	ActionWorkflowTriggerTypePostSecretsSync ActionWorkflowTriggerType = "post-secrets-sync"

	// workflow triggers
	ActionWorkflowTriggerTypePreProvision  ActionWorkflowTriggerType = "pre-provision"
	ActionWorkflowTriggerTypePostProvision ActionWorkflowTriggerType = "post-provision"

	ActionWorkflowTriggerTypePreReprovision  ActionWorkflowTriggerType = "pre-reprovision"
	ActionWorkflowTriggerTypePostReprovision ActionWorkflowTriggerType = "post-reprovision"

	ActionWorkflowTriggerTypePreDeprovision  ActionWorkflowTriggerType = "pre-deprovision"
	ActionWorkflowTriggerTypePostDeprovision ActionWorkflowTriggerType = "post-deprovision"

	ActionWorkflowTriggerTypePreDeployAllComponents  ActionWorkflowTriggerType = "pre-deploy-all-components"
	ActionWorkflowTriggerTypePostDeployAllComponents ActionWorkflowTriggerType = "post-deploy-all-components"

	ActionWorkflowTriggerTypePreTeardownAllComponents  ActionWorkflowTriggerType = "pre-teardown-all-components"
	ActionWorkflowTriggerTypePostTeardownAllComponents ActionWorkflowTriggerType = "post-teardown-all-components"

	ActionWorkflowTriggerTypePreDeprovisionSandbox  ActionWorkflowTriggerType = "pre-deprovision-sandbox"
	ActionWorkflowTriggerTypePostDeprovisionSandbox ActionWorkflowTriggerType = "post-deprovision-sandbox"

	ActionWorkflowTriggerTypePreReprovisionSandbox  ActionWorkflowTriggerType = "pre-reprovision-sandbox"
	ActionWorkflowTriggerTypePostReprovisionSandbox ActionWorkflowTriggerType = "post-reprovision-sandbox"

	ActionWorkflowTriggerTypePreUpdateInputs  ActionWorkflowTriggerType = "pre-update-inputs"
	ActionWorkflowTriggerTypePostUpdateInputs ActionWorkflowTriggerType = "post-update-inputs"
)

type AdHocStepConfig ¶ added in v0.19.784

type AdHocStepConfig ActionWorkflowStepConfig

func (*AdHocStepConfig) Scan ¶ added in v0.19.784

func (a *AdHocStepConfig) Scan(value interface{}) error

func (AdHocStepConfig) Value ¶ added in v0.19.784

func (a AdHocStepConfig) Value() (driver.Value, error)

Value implements driver.Valuer for database serialization to JSONB. See queue/signal/db/signal.go for a more complex example with Type() info.

type App ¶

type App struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index:idx_app_name,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	Name        string              `json:"name,omitzero" gorm:"index:idx_app_name,unique" temporaljson:"name,omitzero,omitempty"`
	Description generics.NullString `json:"description,omitzero" swaggertype:"string" temporaljson:"description,omitzero,omitempty"`
	DisplayName generics.NullString `json:"display_name,omitzero" swaggertype:"string" temporaljson:"display_name,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"index:idx_app_name,unique" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org   `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	QueueID *string `json:"queue_id,omitzero"`
	Queue   Queue   `json:"-"`

	NotificationsConfig NotificationsConfig `` /* 155-byte string literal not displayed */
	Repository          AppRepository       `faker:"-" json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"repository,omitzero,omitempty"`

	Components                 []Component            `` /* 129-byte string literal not displayed */
	Installs                   []Install              `faker:"-" json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"installs,omitzero,omitempty"`
	ActionWorkflows            []ActionWorkflow       `json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"action_workflows,omitzero,omitempty"`
	AppBranches                []AppBranch            `json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_branches,omitzero,omitempty"`
	AppInputConfigs            []AppInputConfig       `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_input_configs,omitzero,omitempty"`
	AppPermissionsConfigs      []AppPermissionsConfig `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_permissions_config,omitzero,omitempty"`
	AppSandboxConfigs          []AppSandboxConfig     `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_sandbox_configs,omitzero,omitempty"`
	AppRunnerConfigs           []AppRunnerConfig      `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_runner_configs,omitzero,omitempty"`
	CloudFormationStackConfigs []AppStackConfig       `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"cloud_formation_stack_configs,omitzero,omitempty"`
	AppConfigs                 []AppConfig            `json:"app_configs" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_configs,omitzero,omitempty"`
	AppSecrets                 []AppSecret            `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_secrets,omitzero,omitempty"`
	InstallerApps              []InstallerApp         `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"installer_apps,omitzero,omitempty"`

	Status            AppStatus       `json:"status,omitzero" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string          `json:"status_description,omitzero" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	// fields set via after query
	AppInputConfig       AppInputConfig       `json:"input_config,omitzero" gorm:"-" temporaljson:"app_input_config,omitzero,omitempty"`
	AppPermissionsConfig AppPermissionsConfig `json:"permissions_config,omitzero" gorm:"-" temporaljson:"app_permissions_config,omitzero,omitempty"`
	AppSandboxConfig     AppSandboxConfig     `json:"sandbox_config,omitzero" gorm:"-" temporaljson:"app_sandbox_config,omitzero,omitempty"`
	AppRunnerConfig      AppRunnerConfig      `json:"runner_config,omitzero" gorm:"-" temporaljson:"app_runner_config,omitzero,omitempty"`

	Links map[string]any `json:"links,omitzero,omitempty" temporaljson:"-" gorm:"-"`

	CloudPlatform CloudPlatform `json:"cloud_platform,omitzero" gorm:"-" swaggertype:"string" temporaljson:"cloud_platform,omitzero,omitempty"`
	RunnerType    AppRunnerType `json:"runner_type,omitzero" gorm:"-" swaggertype:"string" temporaljson:"runner_type,omitzero,omitempty"`

	// Transient field for config count (not persisted to database)
	ConfigCount int `json:"config_count,omitempty" gorm:"-"`

	ConfigRepo      string `json:"config_repo,omitzero" temporaljson:"config_repo,omitzero,omitempty"`
	ConfigDirectory string `json:"config_directory,omitzero" temporaljson:"config_directory,omitzero,omitempty"`
}

func (*App) AfterQuery ¶

func (a *App) AfterQuery(tx *gorm.DB) error

func (*App) BeforeCreate ¶

func (a *App) BeforeCreate(tx *gorm.DB) error

func (*App) EventLoops ¶

func (a *App) EventLoops() []bulk.EventLoop

func (*App) Indexes ¶

func (a *App) Indexes(db *gorm.DB) []migrations.Index

type AppAWSIAMPolicyConfig ¶

type AppAWSIAMPolicyConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	AppAWSIAMRoleConfigID string              `json:"app_aws_iam_role_config_id,omitzero" temporaljson:"app_awsiam_role_config_id,omitzero,omitempty"`
	AppAWSIAMRoleConfig   AppAWSIAMRoleConfig `json:"-" temporaljson:"app_awsiam_role_config,omitzero,omitempty"`

	ManagedPolicyName string `json:"managed_policy_name,omitzero" features:"template" temporaljson:"managed_policy_name,omitzero,omitempty"`
	Name              string `json:"name" features:"template,omitzero" temporaljson:"name,omitzero,omitempty"`
	Contents          []byte `` /* 126-byte string literal not displayed */

	GCPPermissions    []string `` /* 128-byte string literal not displayed */
	GCPPredefinedRole string   `json:"gcp_predefined_role,omitzero" gorm:"default:''" temporaljson:"gcp_predefined_role,omitzero,omitempty"`

	CloudFormationStackName string `` /* 131-byte string literal not displayed */
}

func (*AppAWSIAMPolicyConfig) AfterQuery ¶

func (a *AppAWSIAMPolicyConfig) AfterQuery(tx *gorm.DB) error

func (*AppAWSIAMPolicyConfig) BeforeCreate ¶

func (a *AppAWSIAMPolicyConfig) BeforeCreate(tx *gorm.DB) error

func (*AppAWSIAMPolicyConfig) Indexes ¶

func (a *AppAWSIAMPolicyConfig) Indexes(db *gorm.DB) []migrations.Index

type AppAWSIAMRoleConfig ¶

type AppAWSIAMRoleConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	CloudPlatform string         `json:"cloud_platform,omitzero" gorm:"default:'aws'" temporaljson:"cloud_platform,omitzero,omitempty"`
	Type          AWSIAMRoleType `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	Name          string         `json:"name,omitzero" features:"template" temporaljson:"name,omitzero,omitempty"`
	Description   string         `json:"description,omitzero" features:"template" temporaljson:"description,omitzero,omitempty"`
	DisplayName   string         `json:"display_name,omitzero" features:"template" temporaljson:"display_name,omitzero,omitempty"`

	EnabledInStack sql.NullBool `json:"enabled_in_stack,omitempty" gorm:"column:enabled_in_stack" temporaljson:"enabled_in_stack,omitempty"`

	OwnerID   string `` /* 126-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	Policies                     []AppAWSIAMPolicyConfig `json:"policies,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"policies,omitzero,omitempty"`
	PermissionsBoundaryJSON      []byte                  `` /* 155-byte string literal not displayed */
	CloudFormationStackName      string                  `` /* 131-byte string literal not displayed */
	CloudFormationStackParamName string                  `` /* 137-byte string literal not displayed */
}

func (*AppAWSIAMRoleConfig) AfterQuery ¶

func (a *AppAWSIAMRoleConfig) AfterQuery(tx *gorm.DB) error

func (*AppAWSIAMRoleConfig) BeforeCreate ¶

func (a *AppAWSIAMRoleConfig) BeforeCreate(tx *gorm.DB) error

func (*AppAWSIAMRoleConfig) Indexes ¶

func (a *AppAWSIAMRoleConfig) Indexes(db *gorm.DB) []migrations.Index

type AppBranch ¶

type AppBranch struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `` /* 144-byte string literal not displayed */
	App   App    `faker:"-" json:"-" temporaljson:"app,omitzero,omitempty"`

	Name string `gorm:"uniqueIndex:idx_app_branch_name_per_app;not null" json:"name" temporaljson:"name"`

	Queue   Queue             `json:"queue,omitzero" gorm:"polymorphic:Owner;" temporaljson:"queue,omitzero,omitempty"`
	Configs []AppBranchConfig `json:"configs,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"configs,omitzero,omitempty"`

	Workflows []Workflow `json:"workflows,omitzero" gorm:"polymorphic:Owner;constraint:OnDelete:CASCADE;" temporaljson:"workflows,omitzero,omitempty"`
}

func (*AppBranch) BeforeCreate ¶

func (a *AppBranch) BeforeCreate(tx *gorm.DB) error

func (*AppBranch) EventLoops ¶ added in v0.19.850

func (a *AppBranch) EventLoops() []bulk.EventLoop

func (*AppBranch) Indexes ¶

func (a *AppBranch) Indexes(db *gorm.DB) []migrations.Index

type AppBranchConfig ¶ added in v0.19.850

type AppBranchConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppBranchID string    `json:"app_branch_id,omitzero" gorm:"not null;index:idx_app_branch_configs" temporaljson:"app_branch_id,omitzero,omitempty"`
	AppBranch   AppBranch `faker:"-" json:"-" temporaljson:"app_branch,omitzero,omitempty"`

	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 167-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 179-byte string literal not displayed */

	InstallGroups []AppBranchInstallGroup `json:"install_groups,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_groups,omitzero,omitempty"`

	ComponentIDs pq.StringArray `gorm:"type:text[]" json:"component_ids,omitzero" temporaljson:"component_ids,omitzero,omitempty" swaggertype:"array,string"`
	ActionIDs    pq.StringArray `gorm:"type:text[]" json:"action_ids,omitzero" temporaljson:"action_ids,omitzero,omitempty" swaggertype:"array,string"`

	Workflows []Workflow `json:"workflows,omitzero" gorm:"polymorphic:Owner;constraint:OnDelete:CASCADE;" temporaljson:"workflows,omitzero,omitempty"`

	// generated view field
	ConfigNumber int `json:"config_number,omitzero" gorm:"->;-:migration" temporaljson:"config_number,omitzero,omitempty"`
}

func (*AppBranchConfig) BeforeCreate ¶ added in v0.19.850

func (a *AppBranchConfig) BeforeCreate(tx *gorm.DB) error

func (*AppBranchConfig) Indexes ¶ added in v0.19.850

func (a *AppBranchConfig) Indexes(db *gorm.DB) []migrations.Index

func (*AppBranchConfig) UseView ¶ added in v0.19.850

func (a *AppBranchConfig) UseView() bool

func (*AppBranchConfig) ViewVersion ¶ added in v0.19.850

func (a *AppBranchConfig) ViewVersion() string

func (*AppBranchConfig) Views ¶ added in v0.19.850

func (a *AppBranchConfig) Views(db *gorm.DB) []migrations.View

type AppBranchInstallGroup ¶ added in v0.19.850

type AppBranchInstallGroup struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppBranchConfigID string          `` /* 154-byte string literal not displayed */
	AppBranchConfig   AppBranchConfig `faker:"-" json:"-" temporaljson:"app_branch_config,omitzero,omitempty"`

	Name       string         `json:"name,omitzero" gorm:"not null" temporaljson:"name,omitzero,omitempty"`
	Order      int            `json:"order,omitzero" gorm:"not null;uniqueIndex:idx_app_branch_install_group_order" temporaljson:"order,omitzero,omitempty"`
	InstallIDs pq.StringArray `gorm:"type:text[]" json:"install_ids,omitzero" temporaljson:"install_ids,omitzero,omitempty" swaggertype:"array,string"`

	RequiresApproval  bool `json:"requires_approval,omitzero" gorm:"default:false" temporaljson:"requires_approval,omitzero,omitempty"`
	RollbackOnFailure bool `json:"rollback_on_failure,omitzero" gorm:"default:true" temporaljson:"rollback_on_failure,omitzero,omitempty"`
	MaxParallel       int  `json:"max_parallel,omitzero" gorm:"default:5" temporaljson:"max_parallel,omitzero,omitempty"`
}

func (*AppBranchInstallGroup) BeforeCreate ¶ added in v0.19.850

func (a *AppBranchInstallGroup) BeforeCreate(tx *gorm.DB) error

func (*AppBranchInstallGroup) Indexes ¶ added in v0.19.850

func (a *AppBranchInstallGroup) Indexes(db *gorm.DB) []migrations.Index

type AppBranchRun ¶ added in v0.19.850

type AppBranchRun struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by,omitempty" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	AppBranchID string    `json:"app_branch_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"app_branch_id,omitzero,omitempty"`
	AppBranch   AppBranch `json:"app_branch,omitempty" temporaljson:"app_branch,omitzero,omitempty"`

	AppBranchConfigID string          `` /* 127-byte string literal not displayed */
	AppBranchConfig   AppBranchConfig `json:"app_branch_config,omitempty" temporaljson:"app_branch_config,omitzero,omitempty"`

	WorkflowID *string   `json:"workflow_id,omitempty" temporaljson:"workflow_id,omitzero,omitempty"`
	Workflow   *Workflow `json:"workflow,omitempty" temporaljson:"workflow,omitzero,omitempty"`

	// Status tracks the current state of the run
	// Values: pending, running, success, failed, cancelled
	Status string `json:"status,omitzero" gorm:"notnull;default:'pending'" temporaljson:"status,omitzero,omitempty"`

	// Force indicates if this run was forced (bypassing change detection)
	Force bool `json:"force,omitzero" temporaljson:"force,omitzero,omitempty"`

	// StartedAt tracks when execution actually began
	StartedAt *time.Time `json:"started_at,omitempty" temporaljson:"started_at,omitzero,omitempty"`

	// CompletedAt tracks when execution finished
	CompletedAt *time.Time `json:"completed_at,omitempty" temporaljson:"completed_at,omitzero,omitempty"`

	// ErrorMessage stores any error that occurred during execution
	ErrorMessage string `json:"error_message,omitempty" temporaljson:"error_message,omitzero,omitempty"`

	// AppConfigID is the app config that was created/synced during this run
	AppConfigID string `json:"app_config_id,omitempty" temporaljson:"app_config_id,omitzero,omitempty"`

	// LogStreamID is the log stream created during this run for event tracking
	LogStreamID *string    `json:"log_stream_id,omitempty" temporaljson:"log_stream_id,omitzero,omitempty"`
	LogStream   *LogStream `json:"log_stream,omitempty" temporaljson:"log_stream,omitzero,omitempty"`

	// CommitSHA is the VCS commit that triggered or is associated with this run
	// DEPRECATED: Use VCSConnectionCommit relationship instead
	CommitSHA string `json:"commit_sha,omitzero" temporaljson:"commit_sha,omitzero,omitempty"`

	// VCSConnectionCommit is the full commit record associated with this run
	VCSConnectionCommitID *string              `json:"vcs_connection_commit_id,omitempty" swaggerignore:"true" temporaljson:"vcs_connection_commit_id,omitzero,omitempty"`
	VCSConnectionCommit   *VCSConnectionCommit `json:"vcs_connection_commit,omitempty" temporaljson:"vcs_connection_commit,omitzero,omitempty"`

	// QueueSignal is the signal that was enqueued to trigger this run
	QueueSignal *QueueSignal `json:"queue_signal,omitempty" gorm:"polymorphic:Owner;" temporaljson:"queue_signal,omitzero,omitempty"`
}

AppBranchRun represents a single execution of an app branch workflow. Each run is triggered manually or automatically and processes the branch's configuration through the install groups.

func (*AppBranchRun) BeforeCreate ¶ added in v0.19.850

func (a *AppBranchRun) BeforeCreate(tx *gorm.DB) error

func (*AppBranchRun) Indexes ¶ added in v0.19.850

func (a *AppBranchRun) Indexes(db *gorm.DB) []migrations.Index

type AppBreakGlassConfig ¶

type AppBreakGlassConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	App   App    `faker:"-" json:"-" temporaljson:"app,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	Roles []AppAWSIAMRoleConfig `json:"aws_iam_roles,omitzero" gorm:"constraint:OnDelete:CASCADE;polymorphic:Owner;" temporaljson:"roles,omitzero,omitempty"`
}

func (*AppBreakGlassConfig) BeforeCreate ¶

func (a *AppBreakGlassConfig) BeforeCreate(tx *gorm.DB) error

func (*AppBreakGlassConfig) Indexes ¶

func (a *AppBreakGlassConfig) Indexes(db *gorm.DB) []migrations.Index

type AppConfig ¶

type AppConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`

	Status            AppConfigStatus `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string          `json:"status_description,omitzero" gorm:"notnull;default null" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	State      string `json:"state,omitzero" temporaljson:"state,omitzero,omitempty"`
	Readme     string `json:"readme,omitzero" temporaljson:"readme,omitzero,omitempty"`
	Checksum   string `json:"checksum,omitzero" temporaljson:"checksum,omitzero,omitempty"`
	CLIVersion string `json:"cli_version,omitzero" gorm:"default null" temporaljson:"cli_version,omitzero,omitempty"`

	ComponentIDs pq.StringArray `gorm:"type:text[]" json:"component_ids,omitzero" temporaljson:"component_ids,omitzero,omitempty" swaggertype:"array,string"`
	ActionIDs    pq.StringArray `gorm:"type:text[]" json:"action_ids,omitzero" temporaljson:"action_ids,omitzero,omitempty" swaggertype:"array,string"`

	IntermediateConfig *blobstore.Blob `json:"intermediate_config" temporaljson:"intermediate_config"`

	PermissionsConfig          AppPermissionsConfig        `` /* 126-byte string literal not displayed */
	BreakGlassConfig           AppBreakGlassConfig         `` /* 126-byte string literal not displayed */
	PoliciesConfig             AppPoliciesConfig           `json:"policies,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"policies_config,omitzero,omitempty"`
	SecretsConfig              AppSecretsConfig            `json:"secrets,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"secrets_config,omitzero,omitempty"`
	SandboxConfig              AppSandboxConfig            `json:"sandbox,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"sandbox_config,omitzero,omitempty"`
	InputConfig                AppInputConfig              `json:"input,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"input_config,omitzero,omitempty"`
	RunnerConfig               AppRunnerConfig             `json:"runner,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"runner_config,omitzero,omitempty"`
	StackConfig                AppStackConfig              `json:"stack,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"stack_config,omitzero,omitempty"`
	ComponentConfigConnections []ComponentConfigConnection `` /* 153-byte string literal not displayed */
	ActionWorkflowConfigs      []ActionWorkflowConfig      `` /* 143-byte string literal not displayed */
	OperationRoleConfig        AppOperationRoleConfig      `` /* 139-byte string literal not displayed */

	// individual pointers
	InstallAWSCloudFormationStackVersion []InstallStackVersion `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_aws_cloud_formation_stack_version,omitzero,omitempty"`

	// fields that are filled in via after query or views
	Version int `json:"version,omitzero" gorm:"->;-:migration" temporaljson:"version,omitzero,omitempty"`

	AppBranchID generics.NullString `` /* 130-byte string literal not displayed */
	AppBranch   *AppBranch          `json:"app_branch" temporaljson:"app_branch,omitzero,omitempty"`

	VCSConnectionCommitID generics.NullString  `json:"-"  swaggertype:"string" temporaljson:"vcs_connection_commit_id,omitzero,omitempty"`
	VCSConnectionCommit   *VCSConnectionCommit `json:"vcs_connection_commit,omitzero" temporaljson:"vcs_connection_commit,omitzero,omitempty"`
}

func (*AppConfig) AfterQuery ¶ added in v0.19.902

func (a *AppConfig) AfterQuery(tx *gorm.DB) error

func (*AppConfig) BeforeCreate ¶

func (a *AppConfig) BeforeCreate(tx *gorm.DB) error

func (*AppConfig) Indexes ¶

func (a *AppConfig) Indexes(db *gorm.DB) []migrations.Index

func (AppConfig) UseView ¶

func (a AppConfig) UseView() bool

func (AppConfig) ViewVersion ¶

func (a AppConfig) ViewVersion() string

func (*AppConfig) Views ¶

func (i *AppConfig) Views(db *gorm.DB) []migrations.View

type AppConfigStatus ¶

type AppConfigStatus string
const (
	AppConfigStatusActive   AppConfigStatus = "active"
	AppConfigStatusPending  AppConfigStatus = "pending"
	AppConfigStatusSyncing  AppConfigStatus = "syncing"
	AppConfigStatusError    AppConfigStatus = "error"
	AppConfigStatusOutdated AppConfigStatus = "outdated"
)

type AppConfigVersion ¶

type AppConfigVersion string
const (
	AppConfigVersionDefault AppConfigVersion = ""
	AppConfigVersionV2      AppConfigVersion = "v2"
)

type AppInput ¶

type AppInput struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index:idx_app_input_unique_name,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppInputConfigID string         `` /* 150-byte string literal not displayed */
	AppInputConfig   AppInputConfig `json:"-" temporaljson:"app_input_config,omitzero,omitempty"`

	AppInputGroup   AppInputGroup `json:"group,omitzero" temporaljson:"app_input_group,omitzero,omitempty"`
	AppInputGroupID string        `json:"group_id,omitzero" temporaljson:"app_input_group_id,omitzero,omitempty"`

	Name        string `` /* 127-byte string literal not displayed */
	DisplayName string `json:"display_name,omitzero" temporaljson:"display_name,omitzero,omitempty"`
	Description string `json:"description,omitzero" gorm:"not null; default null" temporaljson:"description,omitzero,omitempty"`
	Default     string `json:"default,omitzero" temporaljson:"default,omitzero,omitempty"`
	Required    bool   `json:"required,omitzero" temporaljson:"required,omitzero,omitempty"`
	Sensitive   bool   `json:"sensitive,omitzero" temporaljson:"sensitive,omitzero,omitempty"`

	Index int `json:"index,omitzero"`
	// Deprecated: this field was never enforced and has no effect.
	Internal bool           `json:"internal,omitzero"`
	Type     AppInputType   `json:"type,omitzero" swaggertype:"string"`
	Source   AppInputSource `json:"source,omitzero" gorm:"not null;default:'vendor'" swaggertype:"string" temporaljson:"source"`

	// CloudFormation configuration (computed fields, not stored in DB)
	CloudFormationStackName      string `json:"cloudformation_stack_name,omitzero" gorm:"-" temporaljson:"cloudformation_stack_name,omitzero,omitempty"`
	CloudFormationStackParamName string `` /* 130-byte string literal not displayed */
}

func (*AppInput) AfterQuery ¶

func (a *AppInput) AfterQuery(tx *gorm.DB) error

func (*AppInput) BeforeCreate ¶

func (a *AppInput) BeforeCreate(tx *gorm.DB) error

func (*AppInput) Indexes ¶

func (a *AppInput) Indexes(db *gorm.DB) []migrations.Index

type AppInputConfig ¶

type AppInputConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID       string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org         Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`
	AppID       string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	AppInputs      []AppInput      `json:"inputs,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_inputs,omitzero,omitempty"`
	AppInputGroups []AppInputGroup `json:"input_groups,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_input_groups,omitzero,omitempty"`

	InstallInputs []InstallInputs `json:"install_inputs,omitzero" gorm:"constraint:OnDelete:CASCADE" temporaljson:"install_inputs,omitzero,omitempty"`
}

func (*AppInputConfig) BeforeCreate ¶

func (a *AppInputConfig) BeforeCreate(tx *gorm.DB) error

func (*AppInputConfig) Indexes ¶

func (a *AppInputConfig) Indexes(db *gorm.DB) []migrations.Index

type AppInputGroup ¶

type AppInputGroup struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppInputConfigID string         `json:"app_input_id,omitzero" gorm:"notnull; default null" temporaljson:"app_input_config_id,omitzero,omitempty"`
	AppInputConfig   AppInputConfig `json:"-" temporaljson:"app_input_config,omitzero,omitempty"`

	Name        string `json:"name,omitzero" gorm:"not null;default null" temporaljson:"name,omitzero,omitempty"`
	DisplayName string `json:"display_name,omitzero" temporaljson:"display_name,omitzero,omitempty"`
	Description string `json:"description,omitzero" gorm:"not null; default null" temporaljson:"description,omitzero,omitempty"`
	Index       int    `json:"index,omitzero"`

	AppInputs []AppInput `json:"app_inputs,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"app_inputs,omitzero,omitempty"`
}

func (*AppInputGroup) BeforeCreate ¶

func (a *AppInputGroup) BeforeCreate(tx *gorm.DB) error

func (*AppInputGroup) Indexes ¶

func (a *AppInputGroup) Indexes(db *gorm.DB) []migrations.Index

type AppInputSource ¶

type AppInputSource string
const (
	AppInputSourceVendor   AppInputSource = "vendor"
	AppInputSourceCustomer AppInputSource = "customer"
)

type AppInputType ¶

type AppInputType string
const (
	AppInputTypeString AppInputType = "string"
	AppInputTypeNumber AppInputType = "number"
	AppInputTypeBool   AppInputType = "bool"
	AppInputTypeList   AppInputType = "list"
	AppInputTypeJSON   AppInputType = "json"
)

type AppOperationRoleConfig ¶ added in v0.19.807

type AppOperationRoleConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID       string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	Rules []*AppOperationRoleRule `json:"rules,omitempty" gorm:"foreignKey:AppOperationRoleConfigID"`
}

AppOperationRoleConfig stores operation role configuration for an app

func (*AppOperationRoleConfig) BeforeCreate ¶ added in v0.19.807

func (a *AppOperationRoleConfig) BeforeCreate(tx *gorm.DB) error

func (*AppOperationRoleConfig) Indexes ¶ added in v0.19.807

func (a *AppOperationRoleConfig) Indexes(db *gorm.DB) []migrations.Index

type AppOperationRoleRule ¶ added in v0.19.807

type AppOperationRoleRule struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"org" gorm:"-" temporaljson:"org,omitzero,omitempty"`

	AppOperationRoleConfigID string                 `json:"app_operation_role_config_id" gorm:"app_operation_role_config_id"`
	AppOperationRoleConfig   AppOperationRoleConfig `json:"-" gorm:"-"`

	PrincipalType principal.Type `json:"principal_type" gorm:"column:principal_type;not null;index" swaggertype:"string"`
	PrincipalName string         `json:"principal_name" gorm:"column:principal_name;index"`
	Operation     OperationType  `json:"operation" gorm:"column:operation;not null;index" swaggertype:"string"`
	Role          string         `json:"role" gorm:"column:role;not null"`
}

AppOperationRoleRule represents a single rule mapping principal + operation -> role

func (*AppOperationRoleRule) BeforeCreate ¶ added in v0.19.807

func (o *AppOperationRoleRule) BeforeCreate(tx *gorm.DB) error

type AppPermissionsConfig ¶

type AppPermissionsConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	Roles []AppAWSIAMRoleConfig `json:"aws_iam_roles,omitzero" gorm:"constraint:OnDelete:CASCADE;polymorphic:Owner" temporaljson:"roles,omitzero,omitempty"`

	// loaded via an after query
	ProvisionRole   AppAWSIAMRoleConfig   `json:"provision_aws_iam_role,omitzero" gorm:"-" temporaljson:"provision_role,omitzero,omitempty"`
	MaintenanceRole AppAWSIAMRoleConfig   `json:"maintenance_aws_iam_role,omitzero" gorm:"-" temporaljson:"maintenance_role,omitzero,omitempty"`
	DeprovisionRole AppAWSIAMRoleConfig   `json:"deprovision_aws_iam_role,omitzero" gorm:"-" temporaljson:"deprovision_role,omitzero,omitempty"`
	BreakGlassRole  AppAWSIAMRoleConfig   `json:"break_glass_aws_iam_role,omitzero" gorm:"-" temporaljson:"break_glass_role,omitzero,omitempty"`
	CustomRoles     []AppAWSIAMRoleConfig `json:"custom_aws_iam_roles,omitzero" gorm:"-" temporaljson:"custom_aws_iam_roles,omitzero,omitempty"`
}

func (*AppPermissionsConfig) AfterQuery ¶

func (a *AppPermissionsConfig) AfterQuery(tx *gorm.DB) error

func (*AppPermissionsConfig) BeforeCreate ¶

func (a *AppPermissionsConfig) BeforeCreate(tx *gorm.DB) error

func (*AppPermissionsConfig) Indexes ¶

func (a *AppPermissionsConfig) Indexes(db *gorm.DB) []migrations.Index

type AppPoliciesConfig ¶

type AppPoliciesConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson,omitzero:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID       string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	AppID       string `json:"app_id,omitzero" gorm:"notnull;default null" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" gorm:"notnull;default null" temporaljson:"app_config_id,omitzero,omitempty"`

	Policies []AppPolicyConfig `json:"policies,omitempty" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"policies,omitzero,omitempty"`
}

func (*AppPoliciesConfig) BeforeCreate ¶

func (a *AppPoliciesConfig) BeforeCreate(tx *gorm.DB) error

func (*AppPoliciesConfig) Indexes ¶

func (a *AppPoliciesConfig) Indexes(db *gorm.DB) []migrations.Index

type AppPolicyConfig ¶

type AppPolicyConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID       string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	AppID       string `json:"app_id,omitzero" gorm:"notnull;default null" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" gorm:"notnull;default null" temporaljson:"app_config_id,omitzero,omitempty"`

	AppPoliciesConfigID string            `json:"app_policies_config,omitzero" gorm:"notnull;default null" temporaljson:"app_policies_config_id,omitzero,omitempty"`
	AppPoliciesConfig   AppPoliciesConfig `json:"-" temporaljson:"app_policies_config,omitzero,omitempty"`

	Type        config.AppPolicyType   `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	Engine      config.AppPolicyEngine `json:"engine,omitzero" temporaljson:"engine,omitzero,omitempty"`
	Name        string                 `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`
	Description string                 `json:"description,omitzero" temporaljson:"description,omitzero,omitempty"`
	Contents    string                 `json:"contents,omitzero" features:"template" temporaljson:"contents,omitzero,omitempty"`
	Components  []string               `json:"components,omitzero" gorm:"serializer:json" temporaljson:"components,omitzero,omitempty"`
}

func (*AppPolicyConfig) BeforeCreate ¶

func (a *AppPolicyConfig) BeforeCreate(tx *gorm.DB) error

func (*AppPolicyConfig) Indexes ¶

func (a *AppPolicyConfig) Indexes(db *gorm.DB) []migrations.Index

type AppRepository ¶

type AppRepository struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" gorm:"notnull" temporaljson:"app_id,omitzero,omitempty"`

	RegistryID     string
	RepositoryName string
	RepositoryArn  string
	RepositoryURI  string
	Region         string
}

func (*AppRepository) BeforeCreate ¶

func (a *AppRepository) BeforeCreate(tx *gorm.DB) error

func (*AppRepository) Indexes ¶

func (i *AppRepository) Indexes(db *gorm.DB) []migrations.Index

type AppRepositoryType ¶

type AppRepositoryType string
const (
	AppRepositoryTypeAWSECR AppRepositoryType = "aws-ecr"
)

type AppRunnerConfig ¶

type AppRunnerConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID       string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org         Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`
	AppID       string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	EnvVars pgtype.Hstore `json:"env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"env_vars,omitzero,omitempty"`
	Type    AppRunnerType `json:"app_runner_type,omitzero" gorm:"not null;default null;" temporaljson:"type,omitzero,omitempty"`

	HelmDriver AppRunnerConfigHelmDriverType `json:"helm_driver" gorm:"default null" swaggertype:"string" temporaljson:"helm_driver,omitzero,omitempty"`

	CloudPlatform CloudPlatform `json:"cloud_platform,omitzero" gorm:"-" temporaljson:"cloud_platform,omitzero,omitempty"`

	// takes a URL to a bash script ⤵  which will be `curl | bash`-ed on the VM. usually via user-data or equivalent.
	InitScriptURL string `json:"init_script,omitzero" gorm:"default null" temporaljson:"init_script,omitzero,omitempty" features:"get,omitzero"`
}

func (*AppRunnerConfig) AfterQuery ¶

func (a *AppRunnerConfig) AfterQuery(tx *gorm.DB) error

func (*AppRunnerConfig) BeforeCreate ¶

func (a *AppRunnerConfig) BeforeCreate(tx *gorm.DB) error

func (*AppRunnerConfig) Indexes ¶

func (a *AppRunnerConfig) Indexes(db *gorm.DB) []migrations.Index

func (*AppRunnerConfig) Views ¶

func (i *AppRunnerConfig) Views(db *gorm.DB) []migrations.View

type AppRunnerConfigHelmDriverType ¶

type AppRunnerConfigHelmDriverType string
const (
	AppRunnerHelmDriverSecret    AppRunnerConfigHelmDriverType = "secret"
	AppRunnerHelmDriverConfigMap AppRunnerConfigHelmDriverType = "configmap"
	AppRunnerHelmDriverEmpty     AppRunnerConfigHelmDriverType = ""
)

type AppRunnerType ¶

type AppRunnerType string
const (
	AppRunnerTypeUnknown AppRunnerType = "unknown"
	// legacy types from before independent runners
	AppRunnerTypeAWSECS   AppRunnerType = "aws-ecs"
	AppRunnerTypeAWSEKS   AppRunnerType = "aws-eks"
	AppRunnerTypeAzureAKS AppRunnerType = "azure-aks"
	AppRunnerTypeAzureACS AppRunnerType = "azure-acs"
	AppRunnerTypeGCPGKE   AppRunnerType = "gcp-gke"

	AppRunnerTypeLocal AppRunnerType = "local"

	// for independent runners
	AppRunnerTypeAWS   AppRunnerType = "aws"
	AppRunnerTypeAzure AppRunnerType = "azure"
	AppRunnerTypeGCP   AppRunnerType = "gcp"
)

func (AppRunnerType) JobType ¶

func (a AppRunnerType) JobType() RunnerJobType

type AppSandboxBuild ¶ added in v0.19.850

type AppSandboxBuild struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by,omitzero" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	AppID              string           `json:"app_id,omitzero" gorm:"notnull" temporaljson:"app_id,omitzero,omitempty"`
	App                App              `json:"-" temporaljson:"app,omitzero,omitempty"`
	AppConfigID        string           `json:"app_config_id,omitzero" gorm:"notnull" temporaljson:"app_config_id,omitzero,omitempty"`
	AppConfig          AppConfig        `json:"-" temporaljson:"app_config,omitzero,omitempty"`
	AppSandboxConfigID string           `json:"app_sandbox_config_id,omitzero" gorm:"notnull" temporaljson:"app_sandbox_config_id,omitzero,omitempty"`
	AppSandboxConfig   AppSandboxConfig `json:"-" temporaljson:"app_sandbox_config,omitzero,omitempty"`

	VCSConnectionCommitID *string              `json:"vcs_connection_commit_id,omitempty" temporaljson:"vcs_connection_commit_id,omitzero,omitempty"`
	VCSConnectionCommit   *VCSConnectionCommit `json:"vcs_connection_commit,omitzero" temporaljson:"vcs_connection_commit,omitzero,omitempty"`

	RunnerJob RunnerJob `json:"runner_job,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_job,omitzero,omitempty"`
	LogStream LogStream `json:"log_stream,omitzero" gorm:"polymorphic:Owner;" temporaljson:"log_stream,omitzero,omitempty"`

	Status            AppSandboxBuildStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string                `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus       `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`
}

AppSandboxBuild represents a build run against an app's sandbox terraform config. It is triggered by the app branches workflow and runs terraform plan against the sandbox config.

func (*AppSandboxBuild) AfterQuery ¶ added in v0.19.850

func (a *AppSandboxBuild) AfterQuery(tx *gorm.DB) error

func (*AppSandboxBuild) BeforeCreate ¶ added in v0.19.850

func (a *AppSandboxBuild) BeforeCreate(tx *gorm.DB) error

func (*AppSandboxBuild) Indexes ¶ added in v0.19.850

func (a *AppSandboxBuild) Indexes(db *gorm.DB) []migrations.Index

type AppSandboxBuildStatus ¶ added in v0.19.850

type AppSandboxBuildStatus string
const (
	AppSandboxBuildStatusQueued   AppSandboxBuildStatus = "queued"
	AppSandboxBuildStatusPlanning AppSandboxBuildStatus = "planning"
	AppSandboxBuildStatusBuilding AppSandboxBuildStatus = "building"
	AppSandboxBuildStatusActive   AppSandboxBuildStatus = "active"
	AppSandboxBuildStatusError    AppSandboxBuildStatus = "error"
)

type AppSandboxConfig ¶

type AppSandboxConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID       string `json:"app_id,omitzero" gorm:"not null;default null" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 167-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 179-byte string literal not displayed */
	VCSConnectionType        VCSConnectionType         `json:"-" gorm:"-" temporaljson:"vcs_connection_type,omitzero,omitempty"`

	Variables      pgtype.Hstore  `` /* 136-byte string literal not displayed */
	EnvVars        pgtype.Hstore  `` /* 139-byte string literal not displayed */
	VariablesFiles pq.StringArray `` /* 147-byte string literal not displayed */

	References pq.StringArray `json:"references" temporaljson:"references" swaggertype:"array,string" gorm:"type:text[]"`
	Refs       []refs.Ref     `gorm:"-"`

	TerraformVersion string `json:"terraform_version,omitzero" gorm:"notnull" temporaljson:"terraform_version,omitzero,omitempty"`
	DriftSchedule    string `json:"drift_schedule,omitzero" gorm:"default null" temporaljson:"drift_schedule,omitzero,omitempty"`

	// Operation roles map: operation type -> role name
	OperationRoles pgtype.Hstore `` /* 128-byte string literal not displayed */

	InstallSandboxRuns []InstallSandboxRun `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_sandbox_runs,omitzero,omitempty"`

	// cloud specific fields
	AWSRegionType generics.NullString `json:"aws_region_type,omitzero" swaggertype:"string" temporaljson:"aws_region_type,omitzero,omitempty"`

	// fields set via after query
	CloudPlatform CloudPlatform `json:"cloud_platform,omitzero" gorm:"-" swaggertype:"string" temporaljson:"cloud_platform,omitzero,omitempty"`
}

func (*AppSandboxConfig) AfterQuery ¶

func (c *AppSandboxConfig) AfterQuery(tx *gorm.DB) error

NOTE: currently, only public repo vcs configs are supported when rendering policies and artifacts

func (*AppSandboxConfig) BeforeCreate ¶

func (a *AppSandboxConfig) BeforeCreate(tx *gorm.DB) error

func (*AppSandboxConfig) Indexes ¶

func (c *AppSandboxConfig) Indexes(db *gorm.DB) []migrations.Index

func (*AppSandboxConfig) Views ¶

func (i *AppSandboxConfig) Views(db *gorm.DB) []migrations.View

type AppSecret ¶

type AppSecret struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index:idx_app_secret_name,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" gorm:"not null;default null;index:idx_app_secret_name,unique" temporaljson:"app_id,omitzero,omitempty"`
	App   App    `json:"-" faker:"-" temporaljson:"app,omitzero,omitempty"`

	Name  string `json:"name,omitzero" gorm:"not null;default null;index:idx_app_secret_name,unique" temporaljson:"name,omitzero,omitempty"`
	Value string `json:"-" gorm:"not null;default null" temporaljson:"value,omitzero,omitempty"`

	// after query fields
	Length int `json:"length,omitzero" gorm:"-" temporaljson:"length,omitzero,omitempty"`
}

func (*AppSecret) AfterQuery ¶

func (a *AppSecret) AfterQuery(tx *gorm.DB) error

func (*AppSecret) BeforeCreate ¶

func (a *AppSecret) BeforeCreate(tx *gorm.DB) error

func (*AppSecret) Indexes ¶

func (a *AppSecret) Indexes(db *gorm.DB) []migrations.Index

type AppSecretConfig ¶

type AppSecretConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	App   App    `faker:"-" json:"-" temporaljson:"app,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	AppSecretsConfig   AppSecretsConfig `json:"-" faker:"-" temporaljson:"app_secrets_config,omitzero,omitempty"`
	AppSecretsConfigID string           `json:"app_secrets_config_id,omitzero" temporaljson:"app_secrets_config_id,omitzero,omitempty"`

	Name        string `json:"name,omitzero" features:"template" temporaljson:"name,omitzero,omitempty"`
	DisplayName string `json:"display_name,omitzero" features:"template" temporaljson:"display_name,omitzero,omitempty"`
	Description string `json:"description,omitzero" features:"template" temporaljson:"description,omitzero,omitempty"`

	Required     bool               `json:"required,omitzero" temporaljson:"required,omitzero,omitempty"`
	AutoGenerate bool               `json:"auto_generate,omitzero" temporaljson:"auto_generate,omitzero,omitempty"`
	Format       AppSecretConfigFmt `json:"format" temporaljson:"format" swaggertype:"string"`
	Default      string             `json:"default" temporaljson:"default"`

	// for syncing into kubernetes
	KubernetesSync            bool   `json:"kubernetes_sync,omitzero" temporaljson:"kubernetes_sync,omitzero,omitempty"`
	KubernetesSecretNamespace string `json:"kubernetes_secret_namespace,omitzero" features:"template" temporaljson:"kubernetes_secret_namespace,omitzero,omitempty"`
	KubernetesSecretName      string `json:"kubernetes_secret_name,omitzero" features:"template" temporaljson:"kubernetes_secret_name,omitzero,omitempty"`
	KubernetesSecretKey       string `json:"-" features:"-" temporaljson:"kubernetes_secret_key,omitzero,omitempty"`

	CloudFormationStackName string `json:"cloudformation_stack_name,omitzero" gorm:"-" temporaljson:"cloud_formation_stack_name,omitzero,omitempty"`
	CloudFormationParamName string `json:"cloudformation_param_name,omitzero" gorm:"-" temporaljson:"cloud_formation_param_name,omitzero,omitempty"`
}

func (*AppSecretConfig) AfterQuery ¶

func (a *AppSecretConfig) AfterQuery(tx *gorm.DB) error

func (*AppSecretConfig) BeforeCreate ¶

func (a *AppSecretConfig) BeforeCreate(tx *gorm.DB) error

func (*AppSecretConfig) Indexes ¶

func (a *AppSecretConfig) Indexes(db *gorm.DB) []migrations.Index

func (*AppSecretConfig) UpdateCloudformationStackInfo ¶

func (a *AppSecretConfig) UpdateCloudformationStackInfo()

type AppSecretConfigFmt ¶

type AppSecretConfigFmt string
const (
	AppSecretConfigFmtBase64  AppSecretConfigFmt = "base64"
	AppSecretConfigFmtDefault AppSecretConfigFmt = ""
)

type AppSecretsConfig ¶

type AppSecretsConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	App   App    `faker:"-" json:"-" temporaljson:"app,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	Secrets []AppSecretConfig `json:"secrets,omitzero" temporaljson:"secrets,omitzero,omitempty"`
}

func (*AppSecretsConfig) BeforeCreate ¶

func (a *AppSecretsConfig) BeforeCreate(tx *gorm.DB) error

func (*AppSecretsConfig) Indexes ¶

func (a *AppSecretsConfig) Indexes(db *gorm.DB) []migrations.Index

type AppStackConfig ¶

type AppStackConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	AppID       string `json:"app_id,omitzero" temporaljson:"app_id,omitzero,omitempty"`
	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	Type                    StackType `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	Name                    string    `json:"name,omitzero" features:"template" temporaljson:"name,omitzero,omitempty"`
	Description             string    `json:"description,omitzero" features:"template" temporaljson:"description,omitzero,omitempty"`
	RunnerNestedTemplateURL string    `json:"runner_nested_template_url,omitzero" temporaljson:"runner_nested_template_url,omitzero,omitempty" features:"template"`
	VPCNestedTemplateURL    string    `json:"vpc_nested_template_url,omitzero" temporaljson:"vpc_nested_template_url,omitzero,omitempty" features:"template"`

	CustomNestedStacks []config.CustomNestedStack `` /* 138-byte string literal not displayed */
}

func (*AppStackConfig) BeforeCreate ¶

func (a *AppStackConfig) BeforeCreate(tx *gorm.DB) error

func (*AppStackConfig) HasAzureCustomization ¶ added in v0.19.894

func (sc *AppStackConfig) HasAzureCustomization() bool

HasAzureCustomization returns true when the vendor has configured a stack.toml with type "azure-bicep", opting in to the programmatic ARM template builder. Without a stack config we fall back to the embedded monolithic Bicep template for backwards compatibility.

func (*AppStackConfig) Indexes ¶

func (a *AppStackConfig) Indexes(db *gorm.DB) []migrations.Index

type AppStatus ¶

type AppStatus string
const (
	AppStatusProvisioning   AppStatus = "provisioning"
	AppStatusDeprovisioning AppStatus = "deprovisioning"
	AppStatusActive         AppStatus = "active"
	AppStatusError          AppStatus = "error"
	AppStatusDeleteQueued   AppStatus = "delete_queued"
)

type AzureACRImageConfig ¶ added in v0.19.894

type AzureACRImageConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	// connection to parent model
	ComponentConfigID   string `json:"component_config_id,omitzero" gorm:"notnull" temporaljson:"component_config_id,omitzero,omitempty"`
	ComponentConfigType string `json:"component_config_type,omitzero" gorm:"notnull" temporaljson:"component_config_type,omitzero,omitempty"`

	// actual configuration
	RegistryURL string `json:"registry_url,omitzero" gorm:"notnull" temporaljson:"registry_url,omitzero,omitempty"`
	TenantID    string `json:"tenant_id,omitzero" temporaljson:"tenant_id,omitzero,omitempty"`
	ClientID    string `json:"client_id,omitzero" temporaljson:"client_id,omitzero,omitempty"`
}

func (*AzureACRImageConfig) BeforeCreate ¶ added in v0.19.894

func (c *AzureACRImageConfig) BeforeCreate(tx *gorm.DB) error

func (*AzureACRImageConfig) CredentialsConfig ¶ added in v0.19.894

func (c *AzureACRImageConfig) CredentialsConfig() *azurecredentials.Config

func (*AzureACRImageConfig) Indexes ¶ added in v0.19.894

func (c *AzureACRImageConfig) Indexes(db *gorm.DB) []migrations.Index

type AzureAccount ¶

type AzureAccount struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `json:"-" gorm:"notnull" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `json:"-" temporaljson:"install,omitzero,omitempty"`

	Location                 string `json:"location,omitzero" gorm:"notnull" temporaljson:"location,omitzero,omitempty"`
	SubscriptionID           string `json:"subscription_id,omitzero" gorm:"not null;default null" temporaljson:"subscription_id,omitzero,omitempty"`
	SubscriptionTenantID     string `json:"subscription_tenant_id,omitzero" gorm:"not null;default null" temporaljson:"subscription_tenant_id,omitzero,omitempty"`
	ServicePrincipalAppID    string `` /* 128-byte string literal not displayed */
	ServicePrincipalPassword string `` /* 132-byte string literal not displayed */
}

func (*AzureAccount) BeforeCreate ¶

func (a *AzureAccount) BeforeCreate(tx *gorm.DB) error

func (*AzureAccount) Indexes ¶

func (a *AzureAccount) Indexes(db *gorm.DB) []migrations.Index

type AzureStackOutputs ¶

type AzureStackOutputs struct {
	ResourceGroupID       string `json:"resource_group_id,omitzero" mapstructure:"resource_group_id" temporaljson:"resource_group_id,omitzero,omitempty"`
	ResourceGroupName     string `json:"resource_group_name,omitzero" mapstructure:"resource_group_name" temporaljson:"resource_group_name,omitzero,omitempty"`
	ResourceGroupLocation string `` /* 136-byte string literal not displayed */

	SubscriptionID       string `` /* 147-byte string literal not displayed */
	SubscriptionTenantID string `` /* 182-byte string literal not displayed */

	NetworkID   string `json:"network_id,omitzero" mapstructure:"network_id" temporaljson:"network_id,omitzero,omitempty"`
	NetworkName string `json:"network_name,omitzero" mapstructure:"network_name" temporaljson:"network_name,omitzero,omitempty"`

	PublicSubnetIDs   []string `json:"public_subnet_ids,omitzero" mapstructure:"public_subnet_ids" temporaljson:"public_subnet_ids,omitzero,omitempty"`
	PublicSubnetNames []string `json:"public_subnet_names,omitzero" mapstructure:"public_subnet_names" temporaljson:"public_subnet_names,omitzero,omitempty"`

	PrivateSubnetIDs   []string `json:"private_subnet_ids,omitzero" mapstructure:"private_subnet_ids" temporaljson:"private_subnet_ids,omitzero,omitempty"`
	PrivateSubnetNames []string `` /* 127-byte string literal not displayed */

	KeyVaultID   string `json:"key_vault_id,omitzero" mapstructure:"key_vault_id" temporaljson:"key_vault_id,omitzero,omitempty"`
	KeyVaultName string `json:"key_vault_name,omitzero" mapstructure:"key_vault_name" temporaljson:"key_vault_name,omitzero,omitempty"`
}

func (*AzureStackOutputs) BreakGlassRoleID ¶ added in v0.19.850

func (a *AzureStackOutputs) BreakGlassRoleID(_ string) (string, error)

func (*AzureStackOutputs) BreakGlassRoles ¶ added in v0.19.850

func (a *AzureStackOutputs) BreakGlassRoles() (map[string]string, error)

func (*AzureStackOutputs) CustomRoleID ¶ added in v0.19.850

func (a *AzureStackOutputs) CustomRoleID(_ string) (string, error)

func (*AzureStackOutputs) CustomRoles ¶ added in v0.19.850

func (a *AzureStackOutputs) CustomRoles() (map[string]string, error)

func (*AzureStackOutputs) DeprovisionRoleID ¶ added in v0.19.850

func (a *AzureStackOutputs) DeprovisionRoleID() (string, error)

func (*AzureStackOutputs) InstallInputValues ¶ added in v0.19.850

func (a *AzureStackOutputs) InstallInputValues() (map[string]string, error)

func (*AzureStackOutputs) MaintenanceRoleID ¶ added in v0.19.850

func (a *AzureStackOutputs) MaintenanceRoleID() (string, error)

func (*AzureStackOutputs) ProvisionRoleID ¶ added in v0.19.850

func (a *AzureStackOutputs) ProvisionRoleID() (string, error)

type CHTableSize ¶

type CHTableSize struct {
	TableName  string  `json:"table_name,omitzero"`
	SizePretty string  `json:"size_pretty,omitzero"`
	SizeBytes  float64 `json:"size_bytes,omitzero" gorm:"->;-:migration" temporaljson:"size_bytes,omitzero,omitempty"`
}

func (CHTableSize) GetTableOptions ¶

func (m CHTableSize) GetTableOptions() (string, bool)

func (*CHTableSize) UseView ¶

func (*CHTableSize) UseView() bool

func (*CHTableSize) ViewVersion ¶

func (*CHTableSize) ViewVersion() string

func (*CHTableSize) Views ¶

func (i *CHTableSize) Views(db *gorm.DB) []migrations.View

type CloudPlatform ¶

type CloudPlatform string
const (
	CloudPlatformAWS     CloudPlatform = "aws"
	CloudPlatformAzure   CloudPlatform = "azure"
	CloudPlatformGCP     CloudPlatform = "gcp"
	CloudPlatformUnknown CloudPlatform = "unknown"
)

func NewCloudPlatform ¶

func NewCloudPlatform(platform string) (CloudPlatform, error)

func (CloudPlatform) Regions ¶

func (c CloudPlatform) Regions() []CloudPlatformRegion

func (CloudPlatform) String ¶

func (c CloudPlatform) String() string

type CloudPlatformRegion ¶

type CloudPlatformRegion struct {
	Name        string `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`
	Value       string `json:"value,omitzero" temporaljson:"value,omitzero,omitempty"`
	DisplayName string `json:"display_name,omitzero" temporaljson:"display_name,omitzero,omitempty"`
	Icon        string `json:"icon,omitzero" temporaljson:"icon,omitzero,omitempty"`
}

type Component ¶

type Component struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26;" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index:idx_app_component_name,unique" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Name    string `json:"name,omitzero" gorm:"notnull;index:idx_app_component_name,unique" temporaljson:"name,omitzero,omitempty"`
	VarName string `json:"var_name,omitzero" temporaljson:"var_name,omitzero,omitempty"`
	labels.Labeled

	AppID string `json:"app_id,omitzero" gorm:"notnull;index:idx_app_component_name,unique" temporaljson:"app_id,omitzero,omitempty"`
	App   App    `faker:"-" json:"-" temporaljson:"app,omitzero,omitempty"`

	Status            ComponentStatus `json:"status,omitzero" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string          `json:"status_description,omitzero" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	ConfigVersions               int                           `gorm:"-" json:"config_versions,omitzero" temporaljson:"config_versions,omitzero,omitempty"`
	ComponentConfigs             []ComponentConfigConnection   `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"component_configs,omitzero,omitempty"`
	InstallComponents            []InstallComponent            `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"install_components,omitzero,omitempty"`
	ActionWorkflowTriggerConfigs []ActionWorkflowTriggerConfig `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"action_workflow_trigger_configs,omitzero,omitempty"`

	Dependencies  []*Component `gorm:"many2many:component_dependencies;constraint:OnDelete:CASCADE;" json:"-" temporaljson:"dependencies,omitzero,omitempty"`
	DependencyIDs []string     `gorm:"-" json:"dependencies,omitzero" temporaljson:"dependency_i_ds,omitzero,omitempty"`

	Links map[string]any `json:"links,omitzero,omitempty" temporaljson:"-" gorm:"-"`

	Type            ComponentType              `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	LatestConfig    *ComponentConfigConnection `gorm:"-" json:"-" temporaljson:"latest_config,omitzero,omitempty"`
	LatestBuild     *ComponentBuild            `gorm:"-" json:"latest_build,omitzero" temporaljson:"latest_build,omitzero,omitempty"`
	ResolvedVarName string                     `json:"resolved_var_name,omitzero" gorm:"-" temporaljson:"resolved_var_name,omitzero,omitempty"`
}

func (*Component) AfterQuery ¶

func (c *Component) AfterQuery(tx *gorm.DB) error

func (*Component) BeforeCreate ¶

func (c *Component) BeforeCreate(tx *gorm.DB) error

func (*Component) Indexes ¶

func (c *Component) Indexes(db *gorm.DB) []migrations.Index

func (*Component) JoinTables ¶

func (c *Component) JoinTables() []migrations.JoinTable

type ComponentBuild ¶

type ComponentBuild struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by,omitzero" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// runner details
	RunnerJob RunnerJob `json:"runner_job,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_job,omitzero,omitempty"`

	LogStream LogStream `json:"log_stream,omitzero" gorm:"polymorphic:Owner;" temporaljson:"log_stream,omitzero,omitempty"`

	PolicyReports []PolicyReport `` /* 138-byte string literal not displayed */

	// DEPRECATED: will retain the field to connect against the last component config connection that set this build
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"component_config_connection,omitzero" temporaljson:"component_config_connection,omitzero,omitempty"`

	VCSConnectionCommitID *string              `json:"-" temporaljson:"vcs_connection_commit_id,omitzero,omitempty"`
	VCSConnectionCommit   *VCSConnectionCommit `json:"vcs_connection_commit,omitzero" temporaljson:"vcs_connection_commit,omitzero,omitempty"`

	ComponentReleases []ComponentRelease `json:"releases,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"component_releases,omitzero,omitempty"`
	InstallDeploys    []InstallDeploy    `json:"install_deploys,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_deploys,omitzero,omitempty"`

	Status            ComponentBuildStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string               `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus      `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	GitRef *string `json:"git_ref,omitzero" temporaljson:"git_ref,omitzero,omitempty"`

	// Read-only fields set on the object to de-nest data
	ComponentID            string `gorm:"-" json:"component_id,omitzero" temporaljson:"component_id,omitzero,omitempty"`
	ComponentName          string `gorm:"-" json:"component_name,omitzero" temporaljson:"component_name,omitzero,omitempty"`
	ComponentConfigVersion int    `gorm:"-" json:"component_config_version,omitzero" temporaljson:"component_config_version,omitzero,omitempty"`

	// checksum of our intermediate component config
	Checksum string `json:"checksum,omitzero" gorm:"default null" temporaljson:"checksum,omitzero,omitempty"`

	// QueueSignal is the signal enqueued when this build was created via the queue path
	QueueSignal *QueueSignal `json:"queue_signal,omitempty" gorm:"polymorphic:Owner;" temporaljson:"queue_signal,omitzero,omitempty"`
}

func (*ComponentBuild) AfterQuery ¶

func (c *ComponentBuild) AfterQuery(tx *gorm.DB) error

func (*ComponentBuild) BeforeCreate ¶

func (c *ComponentBuild) BeforeCreate(tx *gorm.DB) error

func (*ComponentBuild) Indexes ¶

func (c *ComponentBuild) Indexes(db *gorm.DB) []migrations.Index

type ComponentBuildStatus ¶

type ComponentBuildStatus string
const (
	ComponentBuildStatusPlanning     ComponentBuildStatus = "planning"
	ComponentBuildStatusError        ComponentBuildStatus = "error"
	ComponentBuildStatusBuilding     ComponentBuildStatus = "building"
	ComponentBuildStatusActive       ComponentBuildStatus = "active"
	ComponentBuildStatusDeleting     ComponentBuildStatus = "deleting"
	ComponentBuildStatusPolicyFailed ComponentBuildStatus = "policy_failed"
)

type ComponentConfigConnection ¶

type ComponentConfigConnection struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	AppConfigID string    `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`
	AppConfig   AppConfig `json:"-" temporaljson:"app_config,omitzero,omitempty"`

	ComponentID   string    `json:"component_id,omitzero" gorm:"notnull" temporaljson:"component_id,omitzero,omitempty"`
	ComponentName string    `json:"component_name,omitzero" gorm:"-" temporaljson:"component_name,omitzero,omitempty"`
	Component     Component `json:"-" temporaljson:"component,omitzero,omitempty"`

	ComponentBuilds []ComponentBuild `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"component_builds,omitzero,omitempty"`

	TerraformModuleComponentConfig    *TerraformModuleComponentConfig    `` /* 146-byte string literal not displayed */
	HelmComponentConfig               *HelmComponentConfig               `json:"helm,omitempty,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"helm_component_config,omitzero,omitempty"`
	ExternalImageComponentConfig      *ExternalImageComponentConfig      `` /* 142-byte string literal not displayed */
	DockerBuildComponentConfig        *DockerBuildComponentConfig        `` /* 138-byte string literal not displayed */
	JobComponentConfig                *JobComponentConfig                `json:"job,omitzero,omitempty" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"job_component_config,omitzero,omitempty"`
	KubernetesManifestComponentConfig *KubernetesManifestComponentConfig `` /* 152-byte string literal not displayed */
	PulumiComponentConfig             *PulumiComponentConfig             `` /* 126-byte string literal not displayed */
	ComponentDependencyIDs            pq.StringArray                     `json:"component_dependency_ids" temporaljson:"component_dependency_ids" swaggertype:"array,string" gorm:"type:text[]"`
	References                        pq.StringArray                     `json:"references" temporaljson:"references" swaggertype:"array,string" gorm:"type:text[]"`
	Checksum                          string                             `json:"checksum,omitzero" gorm:"default null" temporaljson:"checksum,omitzero,omitempty"`
	DriftSchedule                     string                             `json:"drift_schedule,omitzero" gorm:"default null" temporaljson:"drift_schedule,omitzero,omitempty"`
	BuildTimeout                      string                             `json:"build_timeout,omitempty" gorm:"default:null" temporaljson:"build_timeout,omitzero,omitempty"`   // Duration string for build operations (e.g., "30m", "1h"). Max 1h.
	DeployTimeout                     string                             `json:"deploy_timeout,omitempty" gorm:"default:null" temporaljson:"deploy_timeout,omitzero,omitempty"` // Duration string for deploy operations (e.g., "30m", "1h"). Max 1h.
	MaxAutoRetries                    *int                               `json:"max_auto_retries,omitempty" gorm:"default:null" temporaljson:"max_auto_retries,omitzero,omitempty"`

	// Operation roles map: operation type -> role name
	OperationRoles pgtype.Hstore `` /* 128-byte string literal not displayed */

	// loaded via after query
	VCSConnectionType        VCSConnectionType         `json:"-" gorm:"-" temporaljson:"vcs_connection_type,omitzero,omitempty"`
	PublicGitVCSConfig       *PublicGitVCSConfig       `gorm:"-" json:"-" temporaljson:"public_git_vcs_config,omitzero,omitempty"`
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `gorm:"-" json:"-" temporaljson:"connected_github_vcs_config,omitzero,omitempty"`

	Type ComponentType `gorm:"-" json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`

	Version          int        `json:"version,omitzero" gorm:"->;-:migration" temporaljson:"version,omitzero,omitempty"`
	AppConfigVersion int        `json:"app_config_version,omitzero" gorm:"->;-:migration" temporaljson:"app_config_version,omitzero,omitempty"`
	Refs             []refs.Ref `gorm:"-"`
}

func (*ComponentConfigConnection) AfterQuery ¶

func (c *ComponentConfigConnection) AfterQuery(tx *gorm.DB) error

func (*ComponentConfigConnection) BeforeCreate ¶

func (c *ComponentConfigConnection) BeforeCreate(tx *gorm.DB) error

func (*ComponentConfigConnection) GetBuildTimeout ¶

func (c *ComponentConfigConnection) GetBuildTimeout() *time.Duration

func (*ComponentConfigConnection) GetDeployTimeout ¶

func (c *ComponentConfigConnection) GetDeployTimeout() *time.Duration

func (*ComponentConfigConnection) GetMaxAutoRetries ¶ added in v0.19.894

func (c *ComponentConfigConnection) GetMaxAutoRetries() int

func (*ComponentConfigConnection) Indexes ¶

func (a *ComponentConfigConnection) Indexes(db *gorm.DB) []migrations.Index

func (*ComponentConfigConnection) UseView ¶

func (c *ComponentConfigConnection) UseView() bool

func (*ComponentConfigConnection) ViewVersion ¶

func (c *ComponentConfigConnection) ViewVersion() string

func (*ComponentConfigConnection) Views ¶

type ComponentConfigDependency ¶

type ComponentConfigDependency struct {
	CreatedByID string                `json:"created_by_id" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	ComponentConfigConnectionID string                    `` /* 138-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" faker:"-"`

	ComponentID  string `gorm:"primary_key" temporaljson:"component_id,omitzero,omitempty"`
	DependencyID string `gorm:"primary_key" temporaljson:"dependency_id,omitzero,omitempty"`
}

ComponentConfigDependency is a many2many table used by gorm under the hood

func (*ComponentConfigDependency) BeforeSave ¶

func (c *ComponentConfigDependency) BeforeSave(tx *gorm.DB) error

func (*ComponentConfigDependency) Indexes ¶

func (c *ComponentConfigDependency) Indexes(db *gorm.DB) []migrations.Index

type ComponentDependency ¶

type ComponentDependency struct {
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	ComponentID  string `json:"component_id,omitzero" gorm:"primary_key" temporaljson:"component_id,omitzero,omitempty"`
	DependencyID string `json:"dependency_id,omitzero" gorm:"primary_key" temporaljson:"dependency_id,omitzero,omitempty"`
}

ComponentDependency is a many2many table used by gorm under the hood

func (*ComponentDependency) BeforeSave ¶

func (c *ComponentDependency) BeforeSave(tx *gorm.DB) error

func (*ComponentDependency) Indexes ¶

func (c *ComponentDependency) Indexes(db *gorm.DB) []migrations.Index

type ComponentRelease ¶

type ComponentRelease struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	ComponentBuildID string         `json:"build_id,omitzero" temporaljson:"component_build_id,omitzero,omitempty"`
	ComponentBuild   ComponentBuild `json:"build,omitzero" swaggerignore:"true" temporaljson:"component_build,omitzero,omitempty"`

	TotalComponentReleaseSteps int                    `json:"total_release_steps,omitzero" gorm:"-" temporaljson:"total_component_release_steps,omitzero,omitempty"`
	ComponentReleaseSteps      []ComponentReleaseStep `` /* 133-byte string literal not displayed */

	Status            ReleaseStatus `json:"status,omitzero" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string        `json:"status_description,omitzero" temporaljson:"status_description,omitzero,omitempty"`
}

func (*ComponentRelease) BeforeCreate ¶

func (a *ComponentRelease) BeforeCreate(tx *gorm.DB) error

func (*ComponentRelease) Indexes ¶

func (a *ComponentRelease) Indexes(db *gorm.DB) []migrations.Index

type ComponentReleaseStep ¶

type ComponentReleaseStep struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// parent release ID
	ComponentReleaseID string           `json:"component_release_id,omitzero" temporaljson:"component_release_id,omitzero,omitempty"`
	ComponentRelease   ComponentRelease `json:"-" temporaljson:"component_release,omitzero,omitempty"`

	Status            string `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string `json:"status_description,omitzero" temporaljson:"status_description,omitzero,omitempty"`

	// When a step is created, a set of installs are targeted. However, by the time the release step goes out, the
	// install might have been setup in any order of ways.
	RequestedInstallIDs pq.StringArray  `` /* 140-byte string literal not displayed */
	InstallDeploys      []InstallDeploy `` /* 127-byte string literal not displayed */

	// fields to control the delay of the individual step, as this is set based on the parent strategy
	Delay *string `json:"delay,omitzero" temporaljson:"delay,omitzero,omitempty"`
}

func (*ComponentReleaseStep) BeforeCreate ¶

func (a *ComponentReleaseStep) BeforeCreate(tx *gorm.DB) error

func (*ComponentReleaseStep) Indexes ¶

func (a *ComponentReleaseStep) Indexes(db *gorm.DB) []migrations.Index

type ComponentReleaseStrategy ¶

type ComponentReleaseStrategy string
const (
	// Parallel means that all steps start at the same time
	ComponentReleaseStrategyParallel ComponentReleaseStrategy = "parallel"

	// Sync with delay splits the installs into steps (based on count/step), and then just waits the period of time
	ComponentReleaseStrategySyncWithDelay ComponentReleaseStrategy = "sync_with_delay"
)

type ComponentStatus ¶

type ComponentStatus string
const (
	ComponentStatusError          ComponentStatus = "error"
	ComponentStatusActive         ComponentStatus = "active"
	ComponentStatusDeprovisioning ComponentStatus = "deprovisioning"
	ComponentStatusDeleteQueued   ComponentStatus = "delete_queued"
)

type ComponentType ¶

type ComponentType string
const (
	ComponentTypeTerraformModule    ComponentType = "terraform_module"
	ComponentTypeHelmChart          ComponentType = "helm_chart"
	ComponentTypeDockerBuild        ComponentType = "docker_build"
	ComponentTypeExternalImage      ComponentType = "external_image"
	ComponentTypeJob                ComponentType = "job"
	ComponentTypeKubernetesManifest ComponentType = "kubernetes_manifest"
	ComponentTypePulumi             ComponentType = "pulumi"
	ComponentTypeUnknown            ComponentType = "unknown"
)

func (ComponentType) BuildJobType ¶

func (c ComponentType) BuildJobType() RunnerJobType

func (ComponentType) DeployJobType ¶

func (c ComponentType) DeployJobType() RunnerJobType

func (ComponentType) DeployPlanJobType ¶

func (c ComponentType) DeployPlanJobType() RunnerJobType

func (ComponentType) IsImage ¶

func (c ComponentType) IsImage() bool

func (ComponentType) SyncJobType ¶

func (c ComponentType) SyncJobType() RunnerJobType

type CompositeStatus ¶

type CompositeStatus struct {
	CreatedByID string `json:"created_by_id,omitzero,omitempty" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedAtTS int64  `json:"created_at_ts,omitzero,omitempty" temporaljson:"created_at_ts,omitzero,omitempty"`

	Status                 Status         `json:"status,omitzero,omitempty" temporaljson:"status,omitzero,omitempty"`
	StatusHumanDescription string         `json:"status_human_description,omitzero,omitempty" temporaljson:"status_human_description,omitzero,omitempty"`
	Metadata               map[string]any `json:"metadata,omitzero,omitempty" temporaljson:"metadata,omitzero,omitempty"`

	History []CompositeStatus `json:"history,omitzero,omitempty" temporaljson:"history,omitzero,omitempty"`
}

func NewCompositeStatus ¶

func NewCompositeStatus(ctx context.Context, status Status) CompositeStatus

func NewCompositeTemporalStatus ¶

func NewCompositeTemporalStatus(ctx workflow.Context, status Status, vals ...map[string]any) CompositeStatus

func (CompositeStatus) GormDataType ¶

func (CompositeStatus) GormDataType() string

func (*CompositeStatus) Scan ¶

func (c *CompositeStatus) Scan(v interface{}) (err error)

Scan implements the database/sql.Scanner interface.

func (*CompositeStatus) Value ¶

func (c *CompositeStatus) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type ConnectedGithubVCSConfig ¶

type ConnectedGithubVCSConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// parent component
	ComponentConfigID   string `json:"component_config_id,omitzero" gorm:"notnull" temporaljson:"component_config_id,omitzero,omitempty"`
	ComponentConfigType string `json:"component_config_type,omitzero" gorm:"notnull" temporaljson:"component_config_type,omitzero,omitempty"`

	Repo       string `json:"repo,omitzero" gorm:"notnull" temporaljson:"repo,omitzero,omitempty"`
	RepoName   string `json:"repo_name,omitzero" gorm:"notnull" temporaljson:"repo_name,omitzero,omitempty"`
	RepoOwner  string `json:"repo_owner,omitzero" gorm:"notnull" temporaljson:"repo_owner,omitzero,omitempty"`
	Directory  string `json:"directory,omitzero" gorm:"notnull" temporaljson:"directory,omitzero,omitempty"`
	Branch     string `json:"branch,omitzero" gorm:"notnull" temporaljson:"branch,omitzero,omitempty"`
	PathFilter string `json:"path_filter,omitzero" temporaljson:"path_filter,omitzero,omitempty"`

	VCSConnectionID string        `json:"vcs_connection_id,omitzero" gorm:"notnull" temporaljson:"vcs_connection_id,omitzero,omitempty"`
	VCSConnection   VCSConnection `json:"vcs_connection,omitzero,omitempty" temporaljson:"vcs_connection,omitzero,omitempty"`
}

func (*ConnectedGithubVCSConfig) BeforeCreate ¶

func (c *ConnectedGithubVCSConfig) BeforeCreate(tx *gorm.DB) error

func (*ConnectedGithubVCSConfig) Indexes ¶

func (c *ConnectedGithubVCSConfig) Indexes(db *gorm.DB) []migrations.Index

type DeviceCode ¶

type DeviceCode struct {
	ID        string                `gorm:"primarykey" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedAt time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_device_code_account,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	// Account relationship
	AccountID string   `gorm:"not null;index:idx_device_code_account,unique" json:"account_id,omitzero" temporaljson:"account_id,omitzero,omitempty"`
	Account   *Account `gorm:"constraint:OnDelete:CASCADE" faker:"-" json:"-" temporaljson:"account,omitzero,omitempty"`
	Code      string   `gorm:"unique;not null;index:idx_device_code_account,unique"`

	ExpiresAt time.Time `gorm:"not null"`      // 2 min from approval
	Consumed  bool      `gorm:"default:false"` // Token issued?
}

AccountIdentity links an account to an identity provider using the IdP's subject identifier. This enables secure authentication where users are identified by their stable `sub` claim rather than by email (which can change or be reassigned).

func (*DeviceCode) BeforeCreate ¶

func (a *DeviceCode) BeforeCreate(tx *gorm.DB) error

func (*DeviceCode) Indexes ¶

func (a *DeviceCode) Indexes(db *gorm.DB) []migrations.Index

type DockerBuildComponentConfig ¶

type DockerBuildComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// value
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	Dockerfile string         `json:"dockerfile,omitzero" gorm:"default:Dockerfile;notnull" temporaljson:"dockerfile,omitzero,omitempty"`
	Target     string         `json:"target,omitzero" temporaljson:"target,omitzero,omitempty"`
	BuildArgs  pq.StringArray `json:"build_args,omitzero" gorm:"type:text[]" swaggertype:"array,string" temporaljson:"build_args,omitzero,omitempty"`
	EnvVars    pgtype.Hstore  `json:"env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"env_vars,omitzero,omitempty"`

	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 158-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 170-byte string literal not displayed */
}

func (*DockerBuildComponentConfig) BeforeCreate ¶

func (c *DockerBuildComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*DockerBuildComponentConfig) Indexes ¶

type DriftedObject ¶

type DriftedObject struct {
	// These fields will be populated from the drifts_view
	TargetType         string  `json:"target_type,omitzero" gorm:"->;-:migration" temporaljson:"target_type,omitzero,omitempty"`
	TargetID           string  `json:"target_id,omitzero" gorm:"->;-:migration" temporaljson:"target_id,omitzero,omitempty"`
	InstallWorkflowID  string  `json:"install_workflow_id,omitzero" gorm:"->;-:migration" temporaljson:"install_workflow_id,omitzero,omitempty"`
	AppSandboxConfigID *string `json:"app_sandbox_config_id,omitzero" gorm:"->;-:migration" temporaljson:"app_sandbox_config_id,omitzero,omitempty"`
	ComponentBuildID   *string `json:"component_build_id,omitzero" gorm:"->;-:migration" temporaljson:"component_build_id,omitzero,omitempty"`
	InstallID          string  `json:"install_id,omitzero" gorm:"->;-:migration" temporaljson:"install_id,omitzero,omitempty"`
	OrgID              string  `json:"org_id,omitzero" gorm:"->;-:migration" temporaljson:"org_id,omitzero,omitempty"`
	InstallComponentID *string `json:"install_component_id,omitzero" gorm:"->;-:migration" temporaljson:"install_component_id,omitzero,omitempty"`
	InstallSandboxID   *string `json:"install_sandbox_id,omitzero" gorm:"->;-:migration" temporaljson:"install_sandbox_id,omitzero,omitempty"`
	ComponentName      string  `json:"component_name,omitzero" gorm:"->;-:migration" temporaljson:"component_name,omitzero,omitempty"`
}

func (*DriftedObject) AfterQuery ¶

func (d *DriftedObject) AfterQuery(tx *gorm.DB) error

func (*DriftedObject) BeforeCreate ¶

func (d *DriftedObject) BeforeCreate(tx *gorm.DB) error

func (*DriftedObject) EventLoops ¶

func (d *DriftedObject) EventLoops() []bulk.EventLoop

func (*DriftedObject) Indexes ¶

func (d *DriftedObject) Indexes(db *gorm.DB) []migrations.Index

func (*DriftedObject) UseView ¶

func (d *DriftedObject) UseView() bool

func (*DriftedObject) ViewVersion ¶

func (d *DriftedObject) ViewVersion() string

func (*DriftedObject) Views ¶

func (d *DriftedObject) Views(db *gorm.DB) []migrations.View

type EmptyResponse ¶ added in v0.19.894

type EmptyResponse struct{}

EmptyResponse is a structured replacement for bare "ok" string or bool responses. It represents a successful operation with no meaningful return data.

type EndpointAudit ¶

type EndpointAudit struct {
	ID        string                `gorm:"primarykey" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedAt time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	Method     string            `json:"method,omitzero" gorm:"not null;default null" temporaljson:"method,omitzero,omitempty"`
	Name       string            `json:"name,omitzero" gorm:"not null;default null" temporaljson:"name,omitzero,omitempty"`
	Route      string            `json:"route,omitzero" gorm:"not null;default null" temporaljson:"route,omitzero,omitempty"`
	LastUsedAt generics.NullTime `json:"last_used_at,omitzero" gorm:"type:timestamp;default:null" temporaljson:"last_used_at,omitzero,omitempty"`

	Deprecated bool `json:"deprecated,omitzero" gorm:"not null;default:false" temporaljson:"deprecated,omitzero,omitempty"`
}

func (*EndpointAudit) BeforeCreate ¶

func (a *EndpointAudit) BeforeCreate(tx *gorm.DB) error

func (*EndpointAudit) Indexes ¶

func (c *EndpointAudit) Indexes(db *gorm.DB) []migrations.Index

type Event ¶

type Event struct {
	ID          string `json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"precision:6" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"precision" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"type:Nullable(Int8)" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID       string `json:"org_id,omitzero" gorm:"type:LowCardinality(String)" temporaljson:"org_id,omitzero,omitempty"`
	AppID       string `json:"app_id,omitzero" gorm:"type:LowCardinality(String)" temporaljson:"app_id,omitzero,omitempty"`
	InstallID   string `json:"install_id,omitzero" gorm:"type:LowCardinality(String)" temporaljson:"install_id,omitzero,omitempty"`
	ComponentID string `json:"component_id,omitzero" gorm:"type:LowCardinality(String)" temporaljson:"component_id,omitzero,omitempty"`
	RunnerID    string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
}

func (*Event) BeforeCreate ¶

func (r *Event) BeforeCreate(tx *gorm.DB) error

func (*Event) Indexes ¶

func (r *Event) Indexes(db *gorm.DB) []migrations.Index

type ExternalImageComponentConfig ¶

type ExternalImageComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// value
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	ImageURL            string               `json:"image_url,omitzero" gorm:"notnull" temporaljson:"image_url,omitzero,omitempty"`
	Tag                 string               `json:"tag,omitzero" gorm:"notnull" temporaljson:"tag,omitzero,omitempty"`
	AWSECRImageConfig   *AWSECRImageConfig   `` /* 164-byte string literal not displayed */
	GCPGARImageConfig   *GCPGARImageConfig   `` /* 165-byte string literal not displayed */
	AzureACRImageConfig *AzureACRImageConfig `` /* 169-byte string literal not displayed */
}

func (*ExternalImageComponentConfig) BeforeCreate ¶

func (e *ExternalImageComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*ExternalImageComponentConfig) Indexes ¶

type GCPAccount ¶ added in v0.19.850

type GCPAccount struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `json:"-" gorm:"notnull" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `json:"-" temporaljson:"install,omitzero,omitempty"`

	ProjectID string `json:"project_id,omitzero" gorm:"notnull" temporaljson:"project_id,omitzero,omitempty"`
	Region    string `json:"region,omitzero" gorm:"notnull" temporaljson:"region,omitzero,omitempty"`
}

func (*GCPAccount) BeforeCreate ¶ added in v0.19.850

func (a *GCPAccount) BeforeCreate(tx *gorm.DB) error

func (*GCPAccount) Indexes ¶ added in v0.19.850

func (a *GCPAccount) Indexes(db *gorm.DB) []migrations.Index

type GCPGARImageConfig ¶ added in v0.19.870

type GCPGARImageConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	ComponentConfigID   string `json:"component_config_id,omitzero" gorm:"notnull" temporaljson:"component_config_id,omitzero,omitempty"`
	ComponentConfigType string `json:"component_config_type,omitzero" gorm:"notnull" temporaljson:"component_config_type,omitzero,omitempty"`

	GCPProjectID             string `json:"gcp_project_id,omitzero" gorm:"notnull" temporaljson:"gcp_project_id,omitzero,omitempty"`
	GCPRegion                string `json:"gcp_region,omitzero" gorm:"notnull" temporaljson:"gcp_region,omitzero,omitempty"`
	ServiceAccountEmail      string `json:"service_account_email,omitzero" temporaljson:"service_account_email,omitzero,omitempty"`
	WorkloadIdentityProvider string `json:"workload_identity_provider,omitzero" temporaljson:"workload_identity_provider,omitzero,omitempty"`
}

func (*GCPGARImageConfig) BeforeCreate ¶ added in v0.19.870

func (c *GCPGARImageConfig) BeforeCreate(tx *gorm.DB) error

func (*GCPGARImageConfig) Indexes ¶ added in v0.19.870

func (c *GCPGARImageConfig) Indexes(db *gorm.DB) []migrations.Index

type GCPStackOutputs ¶ added in v0.19.850

type GCPStackOutputs struct {
	ProjectID                 string            `json:"project_id,omitzero" mapstructure:"project_id" temporaljson:"project_id,omitzero,omitempty"`
	Region                    string            `json:"region,omitzero" mapstructure:"region" temporaljson:"region,omitzero,omitempty"`
	NetworkName               string            `json:"network_name,omitzero" mapstructure:"network_name" temporaljson:"network_name,omitzero,omitempty"`
	NetworkID                 string            `json:"network_id,omitzero" mapstructure:"network_id" temporaljson:"network_id,omitzero,omitempty"`
	PublicSubnetName          string            `json:"public_subnet_name,omitzero" mapstructure:"public_subnet_name" temporaljson:"public_subnet_name,omitzero,omitempty"`
	PrivateSubnetName         string            `json:"private_subnet_name,omitzero" mapstructure:"private_subnet_name" temporaljson:"private_subnet_name,omitzero,omitempty"`
	RunnerSubnetName          string            `json:"runner_subnet_name,omitzero" mapstructure:"runner_subnet_name" temporaljson:"runner_subnet_name,omitzero,omitempty"`
	RunnerServiceAccountEmail string            `` /* 151-byte string literal not displayed */
	ProvisionSAEmail          string            `json:"provision_sa_email,omitzero" mapstructure:"provision_sa_email" temporaljson:"provision_sa_email,omitzero,omitempty"`
	MaintenanceSAEmail        string            `` /* 127-byte string literal not displayed */
	DeprovisionSAEmail        string            `` /* 127-byte string literal not displayed */
	BreakGlassSAEmails        map[string]string `` /* 130-byte string literal not displayed */
	CustomSAEmails            map[string]string `json:"custom_sa_emails,omitzero" mapstructure:"custom_sa_emails" temporaljson:"custom_sa_emails,omitzero,omitempty"`
	InstallInputs             map[string]string `json:"install_inputs,omitzero" mapstructure:"install_inputs" temporaljson:"install_inputs,omitzero,omitempty"`
}

func (*GCPStackOutputs) BreakGlassRoleID ¶ added in v0.19.850

func (a *GCPStackOutputs) BreakGlassRoleID(name string) (string, error)

func (*GCPStackOutputs) BreakGlassRoles ¶ added in v0.19.850

func (a *GCPStackOutputs) BreakGlassRoles() (map[string]string, error)

func (*GCPStackOutputs) CustomRoleID ¶ added in v0.19.850

func (a *GCPStackOutputs) CustomRoleID(name string) (string, error)

func (*GCPStackOutputs) CustomRoles ¶ added in v0.19.850

func (a *GCPStackOutputs) CustomRoles() (map[string]string, error)

func (*GCPStackOutputs) DeprovisionRoleID ¶ added in v0.19.850

func (a *GCPStackOutputs) DeprovisionRoleID() (string, error)

func (*GCPStackOutputs) InstallInputValues ¶ added in v0.19.850

func (a *GCPStackOutputs) InstallInputValues() (map[string]string, error)

func (*GCPStackOutputs) MaintenanceRoleID ¶ added in v0.19.850

func (a *GCPStackOutputs) MaintenanceRoleID() (string, error)

func (*GCPStackOutputs) ProvisionRoleID ¶ added in v0.19.850

func (a *GCPStackOutputs) ProvisionRoleID() (string, error)

type GenerateStepsResult ¶ added in v0.19.894

type GenerateStepsResult struct {
	Steps  []*WorkflowStep      `json:"steps"`
	Groups []*WorkflowStepGroup `json:"groups"`
}

GenerateStepsResult holds the output of a workflow step generator.

type HelmChart ¶

type HelmChart struct {
	ID          string                `gorm:"primary_key:true;check:id_checker,char_length(id)=26" json:"id"`
	CreatedByID string                `json:"created_by_id" gorm:"not null;default:null" `
	CreatedBy   Account               `json:"-"`
	CreatedAt   time.Time             `json:"created_at" gorm:"notnull" `
	UpdatedAt   time.Time             `json:"updated_at" gorm:"notnull" `
	DeletedAt   soft_delete.DeletedAt `json:"-" `

	OrgID string `json:"org_id" `
	Org   Org    `json:"-" `

	OwnerID   string `json:"owner_id" gorm:"type:text;check:owner_id_checker,char_length(id)=26;uniqueIndex:idx_owner" `
	OwnerType string `json:"owner_type" gorm:"type:text;uniqueIndex:idx_owner"`

	HelmReleases []HelmRelease `faker:"-"  gorm:"constraint:OnDelete:CASCADE;"`
}

func (*HelmChart) BeforeCreate ¶

func (h *HelmChart) BeforeCreate(tx *gorm.DB) (err error)

func (*HelmChart) Indexes ¶

func (h *HelmChart) Indexes(db *gorm.DB) []migrations.Index

type HelmComponentConfig ¶

type HelmComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// parent reference
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	HelmConfig *HelmConfig `json:"helm_config_json,omitzero" gorm:"type:jsonb" temporaljson:"helm_config_json,omitzero,omitempty"`

	// Helm specific configurations
	ChartName     string              `json:"chart_name,omitzero" gorm:"notnull" features:"template" temporaljson:"chart_name,omitzero,omitempty"`
	Values        pgtype.Hstore       `` /* 130-byte string literal not displayed */
	ValuesFiles   pq.StringArray      `` /* 141-byte string literal not displayed */
	Namespace     generics.NullString `json:"namespace,omitzero" swaggertype:"string" features:"template" temporaljson:"namespace,omitzero,omitempty"`
	StorageDriver generics.NullString `json:"storage_driver,omitzero" swaggertype:"string" features:"template" temporaljson:"storage_driver,omitzero,omitempty"`
	// Newer config fields that we don't need a column for
	TakeOwnership bool `json:"take_ownership,omitzero" gorm:"-" temporaljson:"take_ownership,omitzero,omitempty"`

	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 167-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 179-byte string literal not displayed */
}

func (*HelmComponentConfig) AfterQuery ¶

func (c *HelmComponentConfig) AfterQuery(tx *gorm.DB) error

func (*HelmComponentConfig) BeforeCreate ¶

func (c *HelmComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*HelmComponentConfig) Indexes ¶

func (c *HelmComponentConfig) Indexes(db *gorm.DB) []migrations.Index

type HelmConfig ¶

type HelmConfig struct {
	ChartName      string             `json:"chart_name"`
	Values         map[string]*string `json:"values"`
	ValuesFiles    []string           `json:"values_files"`
	Namespace      string             `json:"namespace"`
	StorageDriver  string             `json:"storage_driver"`
	HelmRepoConfig *HelmRepoConfig    `json:"helm_repo_config,omitempty"`

	// Newer fields that we don't need to store as columns in the database
	TakeOwnership bool `json:"take_ownership,omitempty"`
}

func (HelmConfig) GormDataType ¶

func (HelmConfig) GormDataType() string

func (*HelmConfig) Scan ¶

func (c *HelmConfig) Scan(v interface{}) (err error)

Scan implements the database/sql.Scanner interface.

func (*HelmConfig) Value ¶

func (c *HelmConfig) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type HelmRelease ¶

type HelmRelease struct {
	HelmChartID string    `gorm:"primary_key:true"`
	HelmChart   HelmChart `gorm:"-" temporaljson:"helm_chart,omitzero,omitempty"`

	CreatedByID string  `json:"created_by_id" gorm:"not null;default:null" `
	CreatedBy   Account `json:"-"`

	CreatedAt time.Time             `json:"created_at" gorm:"notnull"`
	UpdatedAt time.Time             `json:"updated_at" gorm:"notnull" `
	DeletedAt soft_delete.DeletedAt `json:"-" `

	OrgID string `json:"org_id" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	Key string `gorm:"primaryKey:true"`

	// See https://github.com/helm/helm/blob/c9fe3d118caec699eb2565df9838673af379ce12/pkg/storage/driver/secrets.go#L231
	Type string `gorm:"not null"`

	// The rspb.Release body, as a base64-encoded string
	Body string `gorm:"not null"`

	// Release "labels" that can be used as filters in the storage.Query(labels map[string]string)
	// we implemented. Note that allowing Helm users to filter against new dimensions will require a
	// new migration to be added, and the Create and/or update functions to be updated accordingly.
	Name      string `gorm:"not null"`
	Namespace string `gorm:"not null"`
	Version   int    `gorm:"not null"`
	Status    string `gorm:"not null"`
	Owner     string `gorm:"not null"`

	Labels JSONMap `json:"labels,omitempty"`
}

func (*HelmRelease) BeforeCreate ¶

func (t *HelmRelease) BeforeCreate(tx *gorm.DB) (err error)

func (*HelmRelease) Indexes ¶

func (t *HelmRelease) Indexes(db *gorm.DB) []migrations.Index

type HelmRepoConfig ¶

type HelmRepoConfig struct {
	RepoURL string `json:"repo_url"`
	Chart   string `json:"chart"`
	Version string `json:"version,omitempty"`
}

type IdentityProvider ¶

type IdentityProvider struct {
	ID        string                `gorm:"primarykey" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedAt time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_provider_type,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	// OrgID can be nil for global providers available to all orgs in the deployment.
	// If set, the provider is only available to users in that specific org.
	OrgID *string `json:"org_id,omitempty" gorm:"index:idx_provider_type,unique" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org    `faker:"-" json:"-" gorm:"constraint:OnDelete:SET NULL" temporaljson:"org,omitzero,omitempty"`

	ProviderType ProviderType `json:"provider_type,omitzero" gorm:"not null,index:idx_provider_type,unique" temporaljson:"provider_type,omitzero,omitempty"`
	Enabled      bool         `json:"enabled" gorm:"default:false" temporaljson:"enabled,omitempty"`

	// Config holds provider-specific configuration as JSON.
	// The structure depends on ProviderType:
	// - oidc: providers.OpenIDConfig
	// - google: providers.GoogleConfig
	// - github: providers.GitHubConfig
	Config []byte `json:"config,omitzero" gorm:"type:jsonb" temporaljson:"config,omitzero,omitempty"`
}

func (*IdentityProvider) BeforeCreate ¶

func (a *IdentityProvider) BeforeCreate(tx *gorm.DB) error

func (*IdentityProvider) GetGitHubConfig ¶

func (ip *IdentityProvider) GetGitHubConfig() (*providers.GitHubConfig, error)

GetGitHubConfig unmarshals the Config as GitHubConfig.

func (*IdentityProvider) GetGoogleConfig ¶

func (ip *IdentityProvider) GetGoogleConfig() (*providers.GoogleConfig, error)

GetGoogleConfig unmarshals the Config as GoogleConfig.

func (*IdentityProvider) GetOpenIDConfig ¶

func (ip *IdentityProvider) GetOpenIDConfig() (*providers.OpenIDConfig, error)

GetOpenIDConfig unmarshals the Config as OpenIDConfig.

func (*IdentityProvider) Indexes ¶

func (a *IdentityProvider) Indexes(db *gorm.DB) []migrations.Index

func (*IdentityProvider) SetGitHubConfig ¶

func (ip *IdentityProvider) SetGitHubConfig(cfg *providers.GitHubConfig) error

SetGitHubConfig marshals and sets the Config from GitHubConfig.

func (*IdentityProvider) SetGoogleConfig ¶

func (ip *IdentityProvider) SetGoogleConfig(cfg *providers.GoogleConfig) error

SetGoogleConfig marshals and sets the Config from GoogleConfig.

func (*IdentityProvider) SetOpenIDConfig ¶

func (ip *IdentityProvider) SetOpenIDConfig(cfg *providers.OpenIDConfig) error

SetOpenIDConfig marshals and sets the Config from OpenIDConfig.

func (*IdentityProvider) ValidateConfig ¶

func (ip *IdentityProvider) ValidateConfig() error

ValidateConfig validates the Config field based on ProviderType.

type Install ¶

type Install struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index:idx_app_install_name,unique" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`
	Metadata    pgtype.Hstore         `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`
	labels.Labeled

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Name  string `json:"name,omitzero" gorm:"notnull;index:idx_app_install_name,unique" temporaljson:"name,omitzero,omitempty"`
	App   App    `swaggerignore:"true" json:"app,omitzero" temporaljson:"app,omitzero,omitempty"`
	AppID string `json:"app_id,omitzero" gorm:"notnull;index:idx_app_install_name,unique" temporaljson:"app_id,omitzero,omitempty"`

	SandboxMode sql.NullBool `json:"sandbox_mode,omitempty" gorm:"column:sandbox_mode" temporaljson:"sandbox_mode,omitempty"`

	AppConfigID string    `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`
	AppConfig   AppConfig `json:"-" temporaljson:"app_config,omitzero,omitempty"`

	AppSandboxConfigID string           `json:"-" swaggerignore:"true" temporaljson:"app_sandbox_config_id,omitzero,omitempty"`
	AppSandboxConfig   AppSandboxConfig `json:"app_sandbox_config,omitzero" temporaljson:"app_sandbox_config,omitzero,omitempty"`

	AppRunnerConfigID string          `json:"-" swaggerignore:"true" temporaljson:"app_runner_config_id,omitzero,omitempty"`
	AppRunnerConfig   AppRunnerConfig `json:"app_runner_config,omitzero" temporaljson:"app_runner_config,omitzero,omitempty"`

	InstallComponents       []InstallComponent        `` /* 133-byte string literal not displayed */
	InstallActionWorkflows  []InstallActionWorkflow   `` /* 145-byte string literal not displayed */
	InstallSandboxRuns      []InstallSandboxRun       `` /* 137-byte string literal not displayed */
	InstallInputs           []InstallInputs           `json:"install_inputs,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_inputs,omitzero,omitempty"`
	InstallEvents           []InstallEvent            `json:"install_events,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_events,omitzero,omitempty"`
	InstallIntermediateData []InstallIntermediateData `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_intermediate_data,omitzero,omitempty"`
	InstallSandbox          InstallSandbox            `json:"sandbox" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_sandbox,omitzero,omitempty"`
	InstallConfig           *InstallConfig            `json:"install_config,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_config,omitzero,omitempty"`
	InstallStates           []InstallState            `json:"install_states,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_states,omitzero,omitempty"`

	// InstallRoles is a list of roles associated with that install at given app config ID
	InstallRoles []InstallRoles `json:"install_roles,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_roles,omitzero,omitempty"`

	InstallStack *InstallStack `json:"install_stack,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_stack,omitzero,omitempty"`
	AWSAccount   *AWSAccount   `json:"aws_account,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"aws_account,omitzero,omitempty"`
	AzureAccount *AzureAccount `json:"azure_account,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"azure_account,omitzero,omitempty"`
	GCPAccount   *GCPAccount   `json:"gcp_account,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"gcp_account,omitzero,omitempty"`

	RunnerGroup RunnerGroup `json:"-" gorm:"polymorphic:Owner;constraint:OnDelete:CASCADE;" temporaljson:"runner_group,omitzero,omitempty"`

	InstallNumber            int                  `json:"install_number,omitzero" gorm:"->;-:migration" temporaljson:"install_number,omitzero,omitempty"`
	SandboxStatus            InstallSandboxStatus `json:"sandbox_status,omitzero" gorm:"->;-:migration" swaggertype:"string" temporaljson:"sandbox_status,omitzero,omitempty"`
	SandboxStatusDescription string               `` /* 133-byte string literal not displayed */
	ComponentStatuses        pgtype.Hstore        `` /* 149-byte string literal not displayed */

	Workflows []Workflow `json:"workflows,omitzero" gorm:"polymorphic:Owner;constraint:OnDelete:CASCADE;" temporaljson:"workflows,omitzero,omitempty"`

	Queues []Queue `json:"queues,omitzero" gorm:"polymorphic:Owner;" temporaljson:"queues,omitzero,omitempty"`

	CurrentInstallInputs                *InstallInputs         `json:"-" gorm:"-" temporaljson:"current_install_inputs,omitzero,omitempty"`
	CompositeComponentStatus            InstallComponentStatus `` /* 133-byte string literal not displayed */
	CompositeComponentStatusDescription string                 `` /* 157-byte string literal not displayed */
	RunnerStatus                        RunnerStatus           `json:"runner_status,omitzero" gorm:"-" swaggertype:"string" temporaljson:"runner_status,omitzero,omitempty"`
	RunnerStatusDescription             string                 `` /* 131-byte string literal not displayed */
	RunnerID                            string                 `json:"runner_id,omitzero" gorm:"-" temporaljson:"runner_id,omitzero,omitempty"`
	CloudPlatform                       CloudPlatform          `json:"cloud_platform,omitzero" gorm:"-" swaggertype:"string" temporaljson:"cloud_platform,omitzero,omitempty"`
	RunnerType                          AppRunnerType          `json:"runner_type,omitzero" gorm:"-" swaggertype:"string" temporaljson:"runner_type,omitzero,omitempty"`
	DriftedObjects                      []DriftedObject        `json:"drifted_objects,omitzero" gorm:"-" temporaljson:"drifted_objects,omitzero,omitempty"`
	Links                               map[string]any         `json:"links,omitzero,omitempty" temporaljson:"-" gorm:"-"`

	// WorkflowID is populated by handlers that create a workflow. Not persisted.
	WorkflowID *string `json:"workflow_id,omitempty" gorm:"-"`

	// TODO(jm): deprecate these fields once the terraform provider has been updated
	Status            string `json:"status,omitzero" gorm:"-" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string `json:"status_description,omitzero" gorm:"-" temporaljson:"status_description,omitzero,omitempty"`
}

func (*Install) AfterQuery ¶

func (i *Install) AfterQuery(tx *gorm.DB) error

We want to report the status of the sandbox, the runner, and the components, and then roll that up into a high-level status for the install overall.

func (*Install) BeforeCreate ¶

func (i *Install) BeforeCreate(tx *gorm.DB) error

func (*Install) EventLoops ¶

func (i *Install) EventLoops() []bulk.EventLoop

func (*Install) Indexes ¶

func (i *Install) Indexes(db *gorm.DB) []migrations.Index

func (*Install) UseView ¶

func (i *Install) UseView() bool

func (*Install) ViewVersion ¶

func (i *Install) ViewVersion() string

func (*Install) Views ¶

func (i *Install) Views(db *gorm.DB) []migrations.View

type InstallActionWorkflow ¶

type InstallActionWorkflow struct {
	ID          string                `json:"id,omitzero" gorm:"primary_key;check:id_checker,char_length(id)=26" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `` /* 147-byte string literal not displayed */

	// used for RLS
	OrgID string `` /* 142-byte string literal not displayed */
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Install   Install `json:"-" swaggerignore:"true" temporaljson:"install,omitzero,omitempty"`
	InstallID string  `` /* 175-byte string literal not displayed */

	ActionWorkflow   ActionWorkflow `json:"action_workflow,omitzero" temporaljson:"action_workflow,omitzero,omitempty"`
	ActionWorkflowID string         `` /* 138-byte string literal not displayed */

	Runs []InstallActionWorkflowRun `faker:"-" gorm:"constraint:OnDelete:CASCADE;" json:"runs,omitzero" temporaljson:"runs,omitzero,omitempty"`

	// after query fields filled in after querying
	Status InstallActionWorkflowRunStatus `json:"status,omitzero" gorm:"-" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
}

func (*InstallActionWorkflow) AfterQuery ¶

func (c *InstallActionWorkflow) AfterQuery(tx *gorm.DB) error

func (*InstallActionWorkflow) BeforeCreate ¶

func (a *InstallActionWorkflow) BeforeCreate(tx *gorm.DB) error

func (*InstallActionWorkflow) Indexes ¶

func (a *InstallActionWorkflow) Indexes(db *gorm.DB) []migrations.Index

type InstallActionWorkflowManualTrigger ¶

type InstallActionWorkflowManualTrigger struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallActionWorkflowRun InstallActionWorkflowRun `` /* 137-byte string literal not displayed */
}

func (*InstallActionWorkflowManualTrigger) AfterQuery ¶

func (i *InstallActionWorkflowManualTrigger) AfterQuery(tx *gorm.DB) error

func (*InstallActionWorkflowManualTrigger) BeforeCreate ¶

func (i *InstallActionWorkflowManualTrigger) BeforeCreate(tx *gorm.DB) error

func (*InstallActionWorkflowManualTrigger) Indexes ¶

type InstallActionWorkflowRun ¶

type InstallActionWorkflowRun struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by,omitzero" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `` /* 143-byte string literal not displayed */
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	RunnerJob *RunnerJob `json:"runner_job,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_job,omitzero,omitempty"`

	LogStream LogStream `json:"log_stream,omitzero" gorm:"polymorphic:Owner;" temporaljson:"log_stream,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `` /* 147-byte string literal not displayed */
	Install   Install `swaggerignore:"true" json:"-" temporaljson:"install,omitzero,omitempty"`

	InstallActionWorkflowID generics.NullString   `` /* 178-byte string literal not displayed */
	InstallActionWorkflow   InstallActionWorkflow `json:"install_action_workflow,omitzero" temporaljson:"install_action_workflow,omitzero,omitempty"`

	// Role to be used when running this action
	Role string `json:"role,omitempty" gorm:"column:role"`

	EnableKubeConfig sql.NullBool `json:"enable_kube_config" gorm:"default:true" temporaljson:"enable_kube_config"`

	Status            InstallActionWorkflowRunStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string                         `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus                `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	TriggerType ActionWorkflowTriggerType `json:"trigger_type,omitzero" gorm:"notnull;default:''" temporaljson:"trigger_type,omitzero,omitempty"`

	TriggeredByID   string `` /* 147-byte string literal not displayed */
	TriggeredByType string `json:"triggered_by_type,omitzero" gorm:"type:text;" temporaljson:"triggered_by_type,omitzero,omitempty"`

	ActionWorkflowConfigID generics.NullString  `json:"action_workflow_config_id,omitzero" swaggertype:"string" temporaljson:"action_workflow_config_id,omitzero,omitempty"`
	ActionWorkflowConfig   ActionWorkflowConfig `json:"config,omitzero" temporaljson:"action_workflow_config,omitzero,omitempty"`

	Steps []InstallActionWorkflowRunStep `json:"steps,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"steps,omitzero,omitempty"`

	RunEnvVars pgtype.Hstore `json:"run_env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"run_env_vars,omitzero,omitempty"`

	InstallWorkflowID *string   `json:"install_workflow_id" gorm:"default null" temporaljson:"install_sandbox_id,omitzero,omitempty"`
	InstallWorkflow   *Workflow `swaggerignore:"true" json:"-" temporaljson:"install_workflow,omitzero,omitempty"`

	// after query
	ExecutionTime time.Duration          `json:"execution_time,omitzero" gorm:"-" swaggertype:"primitive,integer" temporaljson:"execution_time,omitzero,omitempty"`
	Outputs       map[string]interface{} `json:"outputs,omitzero" gorm:"-" temporaljson:"outputs,omitzero,omitempty"`
	WorkflowID    *string                `json:"workflow_id,omitzero" gorm:"-" temporaljson:"workflow_step_id,omitzero,omitempty"`
	Workflow      *Workflow              `json:"workflow,omitzero" gorm:"-" temporaljson:"workflow_step,omitzero,omitempty"`
}

func (*InstallActionWorkflowRun) AfterQuery ¶

func (i *InstallActionWorkflowRun) AfterQuery(tx *gorm.DB) error

func (*InstallActionWorkflowRun) BeforeCreate ¶

func (i *InstallActionWorkflowRun) BeforeCreate(tx *gorm.DB) error

func (*InstallActionWorkflowRun) Indexes ¶

func (i *InstallActionWorkflowRun) Indexes(db *gorm.DB) []migrations.Index

func (*InstallActionWorkflowRun) Views ¶

type InstallActionWorkflowRunStatus ¶

type InstallActionWorkflowRunStatus string
const (
	InstallActionRunStatusFinished   InstallActionWorkflowRunStatus = "finished"
	InstallActionRunStatusQueued     InstallActionWorkflowRunStatus = "queued"
	InstallActionRunStatusInProgress InstallActionWorkflowRunStatus = "in-progress"
	InstallActionRunStatusError      InstallActionWorkflowRunStatus = "error"
	InstallActionRunStatusTimedOut   InstallActionWorkflowRunStatus = "timed-out"
	InstallActionRunStatusCancelled  InstallActionWorkflowRunStatus = "cancelled"
	InstallActionRunStatusUnknown    InstallActionWorkflowRunStatus = "unknown"
)

type InstallActionWorkflowRunStep ¶

type InstallActionWorkflowRunStep struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Status   InstallActionWorkflowRunStepStatus `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`
	StatusV2 CompositeStatus                    `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	InstallActionWorkflowRunID string                   `json:"install_action_workflow_run_id,omitzero" temporaljson:"install_action_workflow_run_id,omitzero,omitempty"`
	InstallActionWorkflowRun   InstallActionWorkflowRun `json:"-" temporaljson:"install_action_workflow_run,omitzero,omitempty"`

	StepID generics.NullString      `json:"step_id,omitzero" swaggertype:"string" temporaljson:"step_id,omitzero,omitempty"`
	Step   ActionWorkflowStepConfig `json:"-" temporaljson:"step,omitzero,omitempty"`

	AdHocConfig *AdHocStepConfig `json:"adhoc_config,omitzero" gorm:"type:jsonb" temporaljson:"adhoc_config,omitzero,omitempty"`

	ExecutionDuration time.Duration `` /* 148-byte string literal not displayed */
}

func (*InstallActionWorkflowRunStep) BeforeCreate ¶

func (i *InstallActionWorkflowRunStep) BeforeCreate(tx *gorm.DB) error

func (*InstallActionWorkflowRunStep) Indexes ¶

type InstallActionWorkflowRunStepStatus ¶

type InstallActionWorkflowRunStepStatus string
const (
	InstallActionWorkflowRunStepStatusFinished   InstallActionWorkflowRunStepStatus = "finished"
	InstallActionWorkflowRunStepStatusPending    InstallActionWorkflowRunStepStatus = "pending"
	InstallActionWorkflowRunStepStatusInProgress InstallActionWorkflowRunStepStatus = "in-progress"
	InstallActionWorkflowRunStepStatusTimedOut   InstallActionWorkflowRunStepStatus = "timed-out"
	InstallActionWorkflowRunStepStatusError      InstallActionWorkflowRunStepStatus = "error"
)

type InstallApprovalOption ¶

type InstallApprovalOption string
const (
	InstallApprovalOptionApproveAll InstallApprovalOption = "approve-all"
	InstallApprovalOptionPrompt     InstallApprovalOption = "prompt"
)

type InstallAuditLog ¶

type InstallAuditLog struct {
	InstallID string    `json:"install_id,omitzero" gorm:"->;-:migration"`
	Type      string    `json:"type,omitzero" gorm:"->;-:migration"`
	TimeStamp time.Time `json:"time_stamp,omitzero" gorm:"->;-:migration"`
	LogLine   string    `json:"log_line,omitzero" gorm:"->;-:migration"`
}

func (*InstallAuditLog) CurrentViewVersion ¶ added in v0.19.777

func (*InstallAuditLog) CurrentViewVersion() int

func (InstallAuditLog) GetTableOptions ¶

func (m InstallAuditLog) GetTableOptions() (string, bool)

func (InstallAuditLog) MigrateDB ¶

func (r InstallAuditLog) MigrateDB(db *gorm.DB) *gorm.DB

func (*InstallAuditLog) UseView ¶

func (*InstallAuditLog) UseView() bool

func (*InstallAuditLog) ViewVersion ¶

func (i *InstallAuditLog) ViewVersion() string

func (*InstallAuditLog) Views ¶

func (i *InstallAuditLog) Views(db *gorm.DB) []migrations.View

type InstallComponent ¶

type InstallComponent struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `json:"install_id,omitzero" gorm:"index:install_component_group,unique;notnull" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `faker:"-" json:"-" temporaljson:"install,omitzero,omitempty"`

	ComponentID string    `` /* 127-byte string literal not displayed */
	Component   Component `faker:"-" json:"component,omitzero" temporaljson:"component,omitzero,omitempty"`

	InstallDeploys     []InstallDeploy    `` /* 127-byte string literal not displayed */
	TerraformWorkspace TerraformWorkspace `` /* 143-byte string literal not displayed */
	DriftedObject      DriftedObject      `faker:"-" gorm:"-;" json:"drifted_object,omitzero" temporaljson:"drifted_object,omitzero,omitempty"`

	Links     map[string]any `json:"links,omitzero,omitempty" temporaljson:"-" gorm:"-"`
	HelmChart HelmChart      `json:"helm_chart" gorm:"polymorphic:Owner;constraint:OnDelete:CASCADE;" temporaljson:"helm_chart,omitzero,omitempty"`

	Status            InstallComponentStatus `json:"status,omitzero" gorm:"default:''" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string                 `json:"status_description,omitzero" gorm:"default:''" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus        `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`
}

func (*InstallComponent) AfterQuery ¶

func (c *InstallComponent) AfterQuery(tx *gorm.DB) error

func (*InstallComponent) BeforeCreate ¶

func (c *InstallComponent) BeforeCreate(tx *gorm.DB) error

func (*InstallComponent) Indexes ¶

func (c *InstallComponent) Indexes(db *gorm.DB) []migrations.Index

type InstallComponentStatus ¶

type InstallComponentStatus string
const (
	InstallComponentStatusUnset        InstallComponentStatus = ""
	InstallComponentStatusDeleted      InstallComponentStatus = "deleted"
	InstallComponentStatusDeleteFailed InstallComponentStatus = "delete_failed"
	InstallComponentStatusQueued       InstallComponentStatus = "queued"

	// all legacy statuses that could be set from install deploy
	InstallComponentStatusActive    InstallComponentStatus = "active"
	InstallComponentStatusInactive  InstallComponentStatus = "inactive"
	InstallComponentStatusError     InstallComponentStatus = "error"
	InstallComponentStatusNoop      InstallComponentStatus = "noop"
	InstallComponentStatusPlanning  InstallComponentStatus = "planning"
	InstallComponentStatusSyncing   InstallComponentStatus = "syncing"
	InstallComponentStatusExecuting InstallComponentStatus = "executing"
	InstallComponentStatusUnknown   InstallComponentStatus = "unknown"
	InstallComponentStatusPending   InstallComponentStatus = "pending"
)

func DeployStatusToComponentStatus ¶

func DeployStatusToComponentStatus(status InstallDeployStatus) InstallComponentStatus

type InstallComponentSummary ¶

type InstallComponentSummary struct {
	ID                      string                     `json:"id"`
	ComponentID             string                     `json:"component_id"`
	ComponentName           string                     `json:"component_name"`
	DeployStatus            InstallDeployStatus        `json:"deploy_status"`
	DeployStatusDescription string                     `json:"deploy_status_description"`
	BuildStatus             ComponentBuildStatus       `json:"build_status"`
	BuildStatusDescription  string                     `json:"build_status_description"`
	ComponentConfig         *ComponentConfigConnection `json:"component_config"`
	Dependencies            []Component                `json:"dependencies"`
	DriftedStatus           bool                       `json:"drifted_status"`
}

type InstallConfig ¶

type InstallConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`
	OrgID       string                `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org         Org                   `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `json:"install_id,omitzero" gorm:"notnull;default null" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `json:"-" temporaljson:"install,omitzero,omitempty"`

	ApprovalOption InstallApprovalOption `json:"approval_option,omitzero" gorm:"not null;default 'auto'" temporaljson:"approval_option,omitzero,omitempty"`

	// Per-install stack template overrides (nil = use app config default)
	VPCNestedTemplateURL    *string                    `` /* 127-byte string literal not displayed */
	RunnerNestedTemplateURL *string                    `` /* 136-byte string literal not displayed */
	CustomNestedStacks      []config.CustomNestedStack `` /* 130-byte string literal not displayed */
	labels.Labeled
}

func (*InstallConfig) BeforeCreate ¶

func (a *InstallConfig) BeforeCreate(tx *gorm.DB) error

func (*InstallConfig) Indexes ¶

func (c *InstallConfig) Indexes(db *gorm.DB) []migrations.Index

type InstallDeploy ¶

type InstallDeploy struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by,omitzero" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// runner details
	RunnerJobs  []RunnerJob `json:"runner_jobs,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_jobs,omitzero,omitempty"`
	OCIArtifact OCIArtifact `json:"oci_artifact,omitzero,omitempty" gorm:"polymorphic:Owner;" temporaljson:"oci_artifact,omitempty"`
	LogStream   LogStream   `json:"log_stream,omitzero" gorm:"polymorphic:Owner;" temporaljson:"log_stream,omitzero,omitempty"`

	ActionWorkflowRuns []InstallActionWorkflowRun `json:"action_workflow_runs,omitzero" gorm:"polymorphic:TriggeredBy;" temporaljson:"action_workflow_runs,omitzero,omitempty"`

	PolicyReports []PolicyReport `` /* 137-byte string literal not displayed */

	QueueSignals []QueueSignal `` /* 135-byte string literal not displayed */

	ComponentBuildID string         `json:"build_id,omitzero" gorm:"notnull" temporaljson:"component_build_id,omitzero,omitempty"`
	ComponentBuild   ComponentBuild `faker:"-" json:"component_build,omitzero" temporaljson:"component_build,omitzero,omitempty"`

	InstallComponentID string           `json:"install_component_id,omitzero" gorm:"notnull" temporaljson:"install_component_id,omitzero,omitempty"`
	InstallComponent   InstallComponent `faker:"-" json:"-" temporaljson:"install_component,omitzero,omitempty"`

	ComponentReleaseStepID *string               `json:"release_id,omitzero" temporaljson:"component_release_step_id,omitzero,omitempty"`
	ComponentReleaseStep   *ComponentReleaseStep `json:"-" temporaljson:"component_release_step,omitzero,omitempty"`

	// Role to be used when running this component
	Role string `json:"role,omitempty" gorm:"column:role"`

	Status            InstallDeployStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string              `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	Type              InstallDeployType   `json:"install_deploy_type,omitzero" temporaljson:"type,omitzero,omitempty"`
	StatusV2          CompositeStatus     `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	// DEPRECATED: use WorkflowID
	InstallWorkflowID *string   `json:"install_workflow_id,omitzero" gorm:"default null" temporaljson:"install_sandbox_id,omitzero,omitempty"`
	InstallWorkflow   *Workflow `swaggerignore:"true" json:"-" temporaljson:"install_workflow,omitzero,omitempty"`

	// Fields that are de-nested at read time using AfterQuery
	InstallID              string    `json:"install_id" gorm:"-" temporaljson:"install_id,omitzero,omitempty"`
	ComponentID            string    `json:"component_id,omitzero" gorm:"-" temporaljson:"component_id,omitzero,omitempty"`
	ComponentName          string    `json:"component_name,omitzero" gorm:"-" temporaljson:"component_name,omitzero,omitempty"`
	ComponentConfigVersion int       `gorm:"-" json:"component_config_version,omitzero" temporaljson:"component_config_version,omitzero,omitempty"`
	WorkflowID             *string   `json:"workflow_id,omitzero" gorm:"-" temporaljson:"workflow_step_id,omitzero,omitempty"`
	Workflow               *Workflow `json:"workflow,omitzero" gorm:"-" temporaljson:"workflow_step,omitzero,omitempty"`
	PlanOnly               bool      `json:"plan_only" gorm:"-" temporaljson:"plan_only,omitzero,omitempty"`

	Outputs map[string]any `json:"outputs,omitzero" gorm:"-" temporaljson:"outputs,omitzero,omitempty"`
}

func (*InstallDeploy) AfterQuery ¶

func (c *InstallDeploy) AfterQuery(tx *gorm.DB) error

func (*InstallDeploy) BeforeCreate ¶

func (c *InstallDeploy) BeforeCreate(tx *gorm.DB) error

func (*InstallDeploy) Indexes ¶

func (c *InstallDeploy) Indexes(db *gorm.DB) []migrations.Index

func (*InstallDeploy) IsTornDown ¶

func (c *InstallDeploy) IsTornDown() bool

func (*InstallDeploy) Views ¶

func (i *InstallDeploy) Views(db *gorm.DB) []migrations.View

type InstallDeployStatus ¶

type InstallDeployStatus string
const (
	InstallDeployStatusActive          InstallDeployStatus = "active"
	InstallDeployStatusInactive        InstallDeployStatus = "inactive"
	InstallDeployStatusError           InstallDeployStatus = "error"
	InstallDeployStatusNoop            InstallDeployStatus = "noop"
	InstallDeployStatusPlanning        InstallDeployStatus = "planning"
	InstallDeployStatusSyncing         InstallDeployStatus = "syncing"
	InstallDeployStatusExecuting       InstallDeployStatus = "executing"
	InstallDeployStatusCancelled       InstallDeployStatus = "cancelled"
	InstallDeployStatusUnknown         InstallDeployStatus = "unknown"
	InstallDeployStatusPending         InstallDeployStatus = "pending"
	InstallDeployStatusQueued          InstallDeployStatus = "queued"
	InstallDeployStatusPendingApproval InstallDeployStatus = "pending-approval"
	InstallDeployStatusDriftDetected   InstallDeployStatus = "drift-detected"
	InstallDeployStatusAutoSkipped     InstallDeployStatus = "auto-skipped"
	InstallDeployStatusNoDrift         InstallDeployStatus = "no-drift"
	InstallDeployApprovalDenied        InstallDeployStatus = "approval-denied"
)

type InstallDeployType ¶

type InstallDeployType string
const (
	InstallDeployTypeSync     InstallDeployType = "sync-image"
	InstallDeployTypeApply    InstallDeployType = "apply"
	InstallDeployTypeTeardown InstallDeployType = "teardown"
)

type InstallEvent ¶

type InstallEvent struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	InstallID string  `json:"install_id,omitzero" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `swaggerignore:"-" json:"-" temporaljson:"install,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" swaggerignore:"-" temporaljson:"org,omitzero,omitempty"`

	Operation       string          `json:"operation,omitzero" temporaljson:"operation,omitzero,omitempty"`
	OperationStatus OperationStatus `json:"operation_status,omitzero" temporaljson:"operation_status,omitzero,omitempty"`

	Payload []byte `json:"payload,omitzero" gorm:"type:jsonb" swaggertype:"object,string" temporaljson:"payload,omitzero,omitempty"`

	OperationName string `gorm:"-" json:"operation_name,omitzero" temporaljson:"operation_name,omitzero,omitempty"`
}

func (*InstallEvent) AfterQuery ¶

func (i *InstallEvent) AfterQuery(tx *gorm.DB) error

func (*InstallEvent) BeforeCreate ¶

func (a *InstallEvent) BeforeCreate(tx *gorm.DB) error

func (*InstallEvent) Indexes ¶

func (i *InstallEvent) Indexes(db *gorm.DB) []migrations.Index

type InstallInputs ¶

type InstallInputs struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`
	OrgID       string                `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org         Org                   `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID      string        `json:"install_id,omitzero" gorm:"notnull;default null" temporaljson:"install_id,omitzero,omitempty"`
	Install        Install       `json:"-" temporaljson:"install,omitzero,omitempty"`
	Values         pgtype.Hstore `json:"values,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"values,omitzero,omitempty"`
	ValuesRedacted pgtype.Hstore `` /* 143-byte string literal not displayed */

	AppInputConfigID string         `json:"app_input_config_id,omitzero" temporaljson:"app_input_config_id,omitzero,omitempty"`
	AppInputConfig   AppInputConfig `json:"-" temporaljson:"app_input_config,omitzero,omitempty"`

	// WorkflowID is populated by handlers that create a workflow. Not persisted.
	WorkflowID *string `json:"workflow_id,omitempty" gorm:"-"`
}

func (*InstallInputs) BeforeCreate ¶

func (a *InstallInputs) BeforeCreate(tx *gorm.DB) error

func (*InstallInputs) Indexes ¶

func (i *InstallInputs) Indexes(db *gorm.DB) []migrations.Index

func (*InstallInputs) UseView ¶

func (i *InstallInputs) UseView() bool

func (*InstallInputs) ViewVersion ¶

func (i *InstallInputs) ViewVersion() string

func (*InstallInputs) Views ¶

func (i *InstallInputs) Views(db *gorm.DB) []migrations.View

type InstallIntermediateData ¶

type InstallIntermediateData struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `json:"install_id,omitzero" gorm:"not null;default null" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `swaggerignore:"true" json:"-" temporaljson:"install,omitzero,omitempty"`

	RunnerJob   RunnerJob `json:"-" temporaljson:"runner_job,omitzero,omitempty"`
	RunnerJobID string    `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`

	IntermediateDataJSON string `json:"-" gorm:"default null;not null" temporaljson:"intermediate_data_json,omitzero,omitempty"`

	IntermediateData map[string]interface{} `json:"intermediate_data,omitzero" gorm:"-" temporaljson:"intermediate_data,omitzero,omitempty"`
}

func (*InstallIntermediateData) AfterQuery ¶

func (i *InstallIntermediateData) AfterQuery(tx *gorm.DB) error

func (*InstallIntermediateData) BeforeCreate ¶

func (i *InstallIntermediateData) BeforeCreate(tx *gorm.DB) error

func (*InstallIntermediateData) Indexes ¶

func (i *InstallIntermediateData) Indexes(db *gorm.DB) []migrations.Index

type InstallRoleSelectionRecord ¶ added in v0.19.894

type InstallRoleSelectionRecord struct {
	RoleName   string `json:"role_name,omitempty"`
	RoleSource string `json:"role_source,omitempty"`
	Available  bool   `json:"available,omitempty"`
	RoleID     string `json:"role_id,omitempty"`
	Selected   bool   `json:"selected,omitempty"`
}

type InstallRoleSelectionTrace ¶ added in v0.19.894

type InstallRoleSelectionTrace []InstallRoleSelectionRecord

func (*InstallRoleSelectionTrace) Scan ¶ added in v0.19.894

func (r *InstallRoleSelectionTrace) Scan(value interface{}) error

func (InstallRoleSelectionTrace) Value ¶ added in v0.19.894

type InstallRoleUsage ¶ added in v0.19.894

type InstallRoleUsage struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`
	OrgID       string                `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org         Org                   `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallRoleID string       `json:"install_role_id,omitzero" gorm:"notnull;default null" temporaljson:"install_role_id,omitzero,omitempty"`
	InstallRole   InstallRoles `json:"-" temporaljson:"install_role,omitzero,omitempty"`

	RunnerJobID string    `json:"runner_job_id,omitzero" gorm:"notnull;default null" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerJob   RunnerJob `json:"runner_job,omitzero" temporaljson:"runner_job,omitzero,omitempty"`

	RoleName   string `json:"role_name,omitzero" temporaljson:"role_name,omitzero,omitempty"`
	RoleSource string `json:"role_source,omitzero" temporaljson:"role_source,omitzero,omitempty"`

	RoleSelectionTrace InstallRoleSelectionTrace `json:"role_selection_trace,omitzero" gorm:"type:jsonb" temporaljson:"role_selection_trace,omitzero,omitempty"`

	Workflow       *Workflow `json:"workflow,omitzero" gorm:"-"`
	WorkflowStepID string    `json:"workflow_step_id,omitzero" gorm:"-"`
}

func (*InstallRoleUsage) BeforeCreate ¶ added in v0.19.894

func (a *InstallRoleUsage) BeforeCreate(tx *gorm.DB) error

func (*InstallRoleUsage) Indexes ¶ added in v0.19.894

func (i *InstallRoleUsage) Indexes(db *gorm.DB) []migrations.Index

type InstallRoles ¶ added in v0.19.894

type InstallRoles struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`
	OrgID       string                `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org         Org                   `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string  `json:"install_id,omitzero" gorm:"notnull;default null" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `json:"-" temporaljson:"install,omitzero,omitempty"`

	AppRoleConfigID string              `json:"app_role_config_id,omitzero" gorm:"notnull;default null" temporaljson:"app_role_config_id,omitzero,omitempty"`
	AppRoleConfig   AppAWSIAMRoleConfig `json:"app_role_config,omitzero" temporaljson:"app_role_config,omitzero,omitempty"`

	Enabled bool `json:"enabled,omitzero" gorm:"default:false" temporaljson:"enabled,omitzero,omitempty"`

	Provisioned bool `json:"provisioned,omitzero" gorm:"default:false" temporaljson:"provisioned,omitzero,omitempty"`

	// cloud specific role identifier
	RoleID string `json:"role_id,omitzero" temporaljson:"role_id,omitzero,omitempty"`

	LastUsedAt *time.Time `json:"last_used_at,omitzero" gorm:"-" temporaljson:"last_used_at,omitzero,omitempty"`
}

func (*InstallRoles) BeforeCreate ¶ added in v0.19.894

func (a *InstallRoles) BeforeCreate(tx *gorm.DB) error

func (*InstallRoles) Indexes ¶ added in v0.19.894

func (i *InstallRoles) Indexes(db *gorm.DB) []migrations.Index

type InstallSandbox ¶

type InstallSandbox struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string `json:"install_id,omitzero" gorm:"notnull" temporaljson:"install_id,omitzero,omitempty"`

	Status            InstallSandboxStatus `json:"status,omitzero" gorm:"not null;default null" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string               `json:"status_description,omitzero" gorm:"not null;default null" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus      `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	TerraformWorkspace TerraformWorkspace `` /* 143-byte string literal not displayed */

	InstallSandboxRuns []InstallSandboxRun `` /* 137-byte string literal not displayed */
}

func (*InstallSandbox) AfterQuery ¶

func (c *InstallSandbox) AfterQuery(tx *gorm.DB) error

func (*InstallSandbox) BeforeCreate ¶

func (c *InstallSandbox) BeforeCreate(tx *gorm.DB) error

func (*InstallSandbox) Indexes ¶

func (c *InstallSandbox) Indexes(db *gorm.DB) []migrations.Index

type InstallSandboxRun ¶

type InstallSandboxRun struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by,omitzero" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// runner details
	RunnerJobs         []RunnerJob                `json:"runner_jobs,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_job,omitzero,omitempty"`
	LogStream          LogStream                  `json:"log_stream,omitzero" gorm:"polymorphic:Owner;" temporaljson:"log_stream,omitzero,omitempty"`
	ActionWorkflowRuns []InstallActionWorkflowRun `json:"action_workflow_runs,omitzero" gorm:"polymorphic:TriggeredBy;" temporaljson:"action_workflow_runs,omitzero,omitempty"`

	PolicyReports []PolicyReport `` /* 142-byte string literal not displayed */

	// used for RLS
	OrgID     string  `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org       Org     `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`
	InstallID string  `json:"install_id,omitzero" gorm:"not null;default null" temporaljson:"install_id,omitzero,omitempty"`
	Install   Install `swaggerignore:"true" json:"-" temporaljson:"install,omitzero,omitempty"`

	// TODO: once we run a backfill we can make this non pointer
	InstallSandboxID *string         `json:"install_sandbox_id,omitzero" gorm:"default null" temporaljson:"install_sandbox_id,omitzero,omitempty"`
	InstallSandbox   *InstallSandbox `swaggerignore:"true" json:"-" temporaljson:"install_sandbox,omitzero,omitempty"`

	InstallWorkflowID *string   `json:"install_workflow_id,omitzero" gorm:"default null" temporaljson:"install_sandbox_id,omitzero,omitempty"`
	InstallWorkflow   *Workflow `swaggerignore:"true" json:"-" temporaljson:"install_workflow,omitzero,omitempty"`

	// Role to be used when planning and applying sandbox runs
	Role string `json:"role,omitempty" gorm:"column:role"`

	RunType           SandboxRunType   `json:"run_type,omitzero" temporaljson:"run_type,omitzero,omitempty"`
	Status            SandboxRunStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string           `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus  `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	AppSandboxConfigID string           `json:"-" temporaljson:"app_sandbox_config_id,omitzero,omitempty"`
	AppSandboxConfig   AppSandboxConfig `json:"app_sandbox_config,omitzero" temporaljson:"app_sandbox_config,omitzero,omitempty"`

	Outputs map[string]any `json:"outputs,omitzero" gorm:"-" temporaljson:"outputs,omitzero,omitempty"`

	// Fields that are de-nested at read time using AfterQuery
	WorkflowID *string   `json:"workflow_id,omitzero" gorm:"-" temporaljson:"workflow_step_id,omitzero,omitempty"`
	Workflow   *Workflow `json:"workflow,omitzero" gorm:"-" temporaljson:"workflow_step,omitzero,omitempty"`
}

func (*InstallSandboxRun) AfterQuery ¶

func (i *InstallSandboxRun) AfterQuery(tx *gorm.DB) error

func (*InstallSandboxRun) BeforeCreate ¶

func (i *InstallSandboxRun) BeforeCreate(tx *gorm.DB) error

func (*InstallSandboxRun) Indexes ¶

func (i *InstallSandboxRun) Indexes(db *gorm.DB) []migrations.Index

func (*InstallSandboxRun) Views ¶

func (i *InstallSandboxRun) Views(db *gorm.DB) []migrations.View

type InstallSandboxStatus ¶

type InstallSandboxStatus string
const (
	InstallSandboxStatusDeleted      InstallSandboxStatus = "deleted"
	InstallSandboxStatusDeleteFailed InstallSandboxStatus = "delete_failed"

	// Synced from sandbow runs
	InstallSandboxStatusActive         InstallSandboxStatus = "active"
	InstallSandboxStatusError          InstallSandboxStatus = "error"
	InstallSandboxStatusQueued         InstallSandboxStatus = "queued"
	InstallSandboxStatusDeprovisioned  InstallSandboxStatus = "deprovisioned"
	InstallSandboxStatusDeprovisioning InstallSandboxStatus = "deprovisioning"
	InstallSandboxStatusProvisioning   InstallSandboxStatus = "provisioning"
	InstallSandboxStatusReprovisioning InstallSandboxStatus = "reprovisioning"
	InstallSandboxStatusAccessError    InstallSandboxStatus = "access_error"
	InstallSandboxStatusUnknown        InstallSandboxStatus = "unknown"
	InstallSandboxStatusEmpty          InstallSandboxStatus = "empty"
)

func SandboxRunStatusToInstallSandboxStatus ¶

func SandboxRunStatusToInstallSandboxStatus(status SandboxRunStatus) InstallSandboxStatus

type InstallStack ¶

type InstallStack struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID string `json:"install_id,omitzero" gorm:"notnull;default null" temporaljson:"install_id,omitzero,omitempty"`

	InstallStackOutputs  InstallStackOutputs   `json:"install_stack_outputs,omitzero" temporaljson:"install_stack_outputs,omitzero,omitempty"`
	InstallStackVersions []InstallStackVersion `json:"versions,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_stack_versions,omitzero,omitempty"`
}

func (*InstallStack) BeforeCreate ¶

func (a *InstallStack) BeforeCreate(tx *gorm.DB) error

func (*InstallStack) Indexes ¶

func (a *InstallStack) Indexes(db *gorm.DB) []migrations.Index

type InstallStackOutputs ¶

type InstallStackOutputs struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	InstallStackID           string              `json:"install_stack_id,omitzero" gorm:"notnull;default null" temporaljson:"install_stack_id,omitzero,omitempty"`
	InstallStackVersionRunID generics.NullString `json:"install_version_run_id,omitzero" swaggertype:"string" temporaljson:"install_stack_version_run_id,omitzero,omitempty"`

	Data         pgtype.Hstore  `json:"data,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"data,omitzero,omitempty"`
	DataContents map[string]any `json:"data_contents,omitzero" gorm:"-"`

	AWSStackOutputs   *AWSStackOutputs   `json:"aws,omitzero" gorm:"-" temporaljson:"aws_stack_outputs,omitzero,omitempty"`
	AzureStackOutputs *AzureStackOutputs `json:"azure,omitzero" gorm:"-" temporaljson:"azure_stack_outputs,omitzero,omitempty"`
	GCPStackOutputs   *GCPStackOutputs   `json:"gcp,omitzero" gorm:"-" temporaljson:"gcp_stack_outputs,omitzero,omitempty"`
}

func (*InstallStackOutputs) AfterQuery ¶

func (a *InstallStackOutputs) AfterQuery(tx *gorm.DB) error

func (*InstallStackOutputs) BeforeCreate ¶

func (a *InstallStackOutputs) BeforeCreate(tx *gorm.DB) error

func (*InstallStackOutputs) Indexes ¶

func (a *InstallStackOutputs) Indexes(db *gorm.DB) []migrations.Index

type InstallStackVersion ¶

type InstallStackVersion struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;default null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	InstallID      string `json:"install_id,omitzero" gorm:"notnull;default null" temporaljson:"install_id,omitzero,omitempty"`
	InstallStackID string `json:"install_stack_id,omitzero" temporaljson:"install_stack_id,omitzero,omitempty"`

	AppConfigID string `json:"app_config_id,omitzero" temporaljson:"app_config_id,omitzero,omitempty"`

	Status CompositeStatus `json:"composite_status,omitzero" gorm:"type:jsonb" temporaljson:"status,omitzero,omitempty"`

	Runs []InstallStackVersionRun `json:"runs,omitzero" temporaljson:"runs,omitzero,omitempty"`

	Contents     []byte `json:"contents,omitzero" gorm:"type:jsonb" swaggertype:"string" temporaljson:"contents,omitzero,omitempty"`
	Checksum     string `json:"checksum,omitzero" temporaljson:"checksum,omitzero,omitempty"`
	TemplateURL  string `json:"template_url,omitzero" temporaljson:"template_url,omitzero,omitempty"`
	PhoneHomeID  string `json:"phone_home_id,omitzero" temporaljson:"phone_home_id,omitzero,omitempty"`
	PhoneHomeURL string `json:"phone_home_url,omitzero" temporaljson:"phone_home_url,omitzero,omitempty"`

	// aws configuration parameters
	AWSBucketName string `json:"aws_bucket_name,omitzero" temporaljson:"aws_bucket_name,omitzero,omitempty"`
	AWSBucketKey  string `json:"aws_bucket_key,omitzero" temporaljson:"aws_bucket_key,omitzero,omitempty"`
	QuickLinkURL  string `json:"quick_link_url,omitzero" temporaljson:"quick_link_url,omitzero,omitempty"`
}

func (*InstallStackVersion) BeforeCreate ¶

func (a *InstallStackVersion) BeforeCreate(tx *gorm.DB) error

func (*InstallStackVersion) Indexes ¶

func (a *InstallStackVersion) Indexes(db *gorm.DB) []migrations.Index

type InstallStackVersionRun ¶

type InstallStackVersionRun struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallStackVersionID string              `` /* 135-byte string literal not displayed */
	InstallStackVersion   InstallStackVersion `json:"-" temporaljson:"install_stack_version,omitzero,omitempty"`

	Data         pgtype.Hstore  `json:"data,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"data,omitzero,omitempty"`
	DataContents map[string]any `json:"data_contents,omitzero" gorm:"-"`
}

func (*InstallStackVersionRun) AfterQuery ¶

func (a *InstallStackVersionRun) AfterQuery(tx *gorm.DB) error

func (*InstallStackVersionRun) BeforeCreate ¶

func (i *InstallStackVersionRun) BeforeCreate(tx *gorm.DB) error

func (*InstallStackVersionRun) Indexes ¶

func (i *InstallStackVersionRun) Indexes(db *gorm.DB) []migrations.Index

func (*InstallStackVersionRun) Views ¶

func (i *InstallStackVersionRun) Views(db *gorm.DB) []migrations.View

type InstallState ¶

type InstallState struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Install   Install `json:"-" faker:"-" temporaljson:"install,omitzero,omitempty"`
	InstallID string  `json:"install_id,omitzero" gorm:"notnull" temporaljson:"install_id,omitzero,omitempty"`

	State   *state.State `json:"contents,omitzero" gorm:"type:jsonb" swaggertype:"string" temporaljson:"-"`
	Version int          `json:"version,omitzero" gorm:"->;-:migration" temporaljson:"version,omitzero,omitempty"`

	TriggeredByID   string `json:"triggered_by_id,omitzero" gorm:"type:text;check:triggered_by_id_checker,char_length(id)=26"`
	TriggeredByType string `json:"triggered_by_type,omitzero" gorm:"type:text;"`

	Archived bool `json:"archived" gorm:"default:false;not null" temporaljson:"archived,omitzero,omitempty"`

	StaleAt generics.NullTime `json:"stale_at,omitzero" gorm:"type:timestamp;default:null" temporaljson:"stale_at,omitzero,omitempty"`
}

func (*InstallState) BeforeCreate ¶

func (a *InstallState) BeforeCreate(tx *gorm.DB) error

func (*InstallState) Indexes ¶

func (i *InstallState) Indexes(db *gorm.DB) []migrations.Index

func (*InstallState) UseView ¶

func (i *InstallState) UseView() bool

func (*InstallState) ViewVersion ¶

func (i *InstallState) ViewVersion() string

func (*InstallState) Views ¶

func (i *InstallState) Views(db *gorm.DB) []migrations.View

type Installer ¶

type Installer struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `faker:"-" json:"-" temporaljson:"org,omitzero,omitempty"`

	Apps []App `json:"apps,omitzero" gorm:"many2many:installer_apps;constraint:OnDelete:CASCADE;" temporaljson:"apps,omitzero,omitempty"`

	Type     InstallerType     `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	Metadata InstallerMetadata `json:"metadata,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"metadata,omitzero,omitempty"`
}

func (*Installer) AfterQuery ¶

func (a *Installer) AfterQuery(tx *gorm.DB) error

func (*Installer) BeforeCreate ¶

func (a *Installer) BeforeCreate(tx *gorm.DB) error

func (*Installer) Indexes ¶

func (a *Installer) Indexes(db *gorm.DB) []migrations.Index

func (*Installer) JoinTables ¶

func (*Installer) JoinTables() []migrations.JoinTable

type InstallerApp ¶

type InstallerApp struct {
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	AppID string `json:"app_id,omitzero" gorm:"primary_key" temporaljson:"app_id,omitzero,omitempty"`
	App   App    `json:"app,omitzero" temporaljson:"app,omitzero,omitempty"`

	InstallerID string    `json:"installer_id,omitzero" gorm:"primary_key" temporaljson:"installer_id,omitzero,omitempty"`
	Installer   Installer `json:"installer,omitzero" temporaljson:"installer,omitzero,omitempty"`
}

func (*InstallerApp) BeforeSave ¶

func (c *InstallerApp) BeforeSave(tx *gorm.DB) error

type InstallerMetadata ¶

type InstallerMetadata struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index" temporaljson:"deleted_at,omitzero,omitempty"`

	InstallerID string `json:"installer_id,omitzero" gorm:"notnull" temporaljson:"installer_id,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Name        string `json:"name,omitzero" gorm:"notnull" temporaljson:"name,omitzero,omitempty"`
	Description string `json:"description,omitzero" gorm:"notnull" temporaljson:"description,omitzero,omitempty"`

	PostInstallMarkdown generics.NullString `json:"post_install_markdown,omitzero" swaggertype:"string" temporaljson:"post_install_markdown,omitzero,omitempty"`
	FooterMarkdown      generics.NullString `json:"footer_markdown,omitzero" swaggertype:"string" temporaljson:"footer_markdown,omitzero,omitempty"`
	CopyrightMarkdown   generics.NullString `json:"copyright_markdown,omitzero" swaggertype:"string" temporaljson:"copyright_markdown,omitzero,omitempty"`
	DemoURL             generics.NullString `json:"demo_url,omitzero" swaggertype:"string" temporaljson:"demo_url,omitzero,omitempty"`
	OgImageURL          generics.NullString `json:"og_image_url,omitzero" swaggertype:"string" temporaljson:"og_image_url,omitzero,omitempty"`

	DocumentationURL string `json:"documentation_url,omitzero" gorm:"notnull" temporaljson:"documentation_url,omitzero,omitempty"`
	LogoURL          string `json:"logo_url,omitzero" gorm:"notnull" temporaljson:"logo_url,omitzero,omitempty"`
	GithubURL        string `json:"github_url,omitzero" gorm:"notnull" temporaljson:"github_url,omitzero,omitempty"`
	CommunityURL     string `json:"community_url,omitzero" gorm:"notnull" temporaljson:"community_url,omitzero,omitempty"`
	HomepageURL      string `json:"homepage_url,omitzero" gorm:"notnull" temporaljson:"homepage_url,omitzero,omitempty"`
	FaviconURL       string `json:"favicon_url,omitzero" temporaljson:"favicon_url,omitzero,omitempty"`

	FormattedDemoURL string `json:"formatted_demo_url,omitzero" gorm:"-" temporaljson:"formatted_demo_url,omitzero,omitempty"`
}

func (*InstallerMetadata) AfterQuery ¶

func (a *InstallerMetadata) AfterQuery(tx *gorm.DB) error

func (*InstallerMetadata) BeforeCreate ¶

func (a *InstallerMetadata) BeforeCreate(tx *gorm.DB) error

func (*InstallerMetadata) Indexes ¶

func (a *InstallerMetadata) Indexes(db *gorm.DB) []migrations.Index

type InstallerType ¶

type InstallerType string
const (
	InstallerTypeSelfHosted InstallerType = "self_hosted"
)

type IntermediateAppConfig ¶ added in v0.19.866

type IntermediateAppConfig struct {
	config.AppConfig
}

IntermediateAppConfig is a custom JSONB type that stores a config.AppConfig in PostgreSQL.

func (IntermediateAppConfig) GormDataType ¶ added in v0.19.866

func (IntermediateAppConfig) GormDataType() string

func (*IntermediateAppConfig) Scan ¶ added in v0.19.866

func (c *IntermediateAppConfig) Scan(v interface{}) (err error)

func (*IntermediateAppConfig) Value ¶ added in v0.19.866

func (c *IntermediateAppConfig) Value() (driver.Value, error)

type JSONMap ¶

type JSONMap map[string]string

func (*JSONMap) Scan ¶

func (j *JSONMap) Scan(value any) error

func (JSONMap) Value ¶

func (j JSONMap) Value() (driver.Value, error)

type JobComponentConfig ¶

type JobComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// value
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	// Image attributes, copied from a docker_buid or external_image component.
	ImageURL string         `json:"image_url,omitzero" gorm:"notnull" temporaljson:"image_url,omitzero,omitempty"`
	Tag      string         `json:"tag,omitzero" gorm:"notnull" temporaljson:"tag,omitzero,omitempty"`
	Cmd      pq.StringArray `json:"cmd,omitzero" gorm:"type:text[]" temporaljson:"cmd,omitzero,omitempty"`
	EnvVars  pgtype.Hstore  `json:"env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"env_vars,omitzero,omitempty"`
	Args     pq.StringArray `json:"args,omitzero" gorm:"type:text[]" swaggertype:"array,string" temporaljson:"args,omitzero,omitempty"`
}

func (*JobComponentConfig) BeforeCreate ¶

func (e *JobComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*JobComponentConfig) Indexes ¶

func (j *JobComponentConfig) Indexes(db *gorm.DB) []migrations.Index

type KubernetesManifestComponentConfig ¶

type KubernetesManifestComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// value
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	// Primary fields - used for inline manifests (fully supported)
	Manifest  string `json:"manifest,omitzero" gorm:"not null;default:''" temporaljson:"manifest,omitzero,omitempty"`
	Namespace string `json:"namespace,omitzero" gorm:"not null;default:default" temporaljson:"namespace,omitzero,omitempty"`

	// Kustomize configuration (mutually exclusive with Manifest)
	Kustomize *KustomizeConfig `json:"kustomize,omitzero" gorm:"type:jsonb" temporaljson:"kustomize,omitzero,omitempty"`

	// VCS configuration for kustomize sources (similar to HelmComponentConfig)
	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 167-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 179-byte string literal not displayed */
}

func (*KubernetesManifestComponentConfig) BeforeCreate ¶

func (e *KubernetesManifestComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*KubernetesManifestComponentConfig) Indexes ¶

func (*KubernetesManifestComponentConfig) SourceType ¶

func (k *KubernetesManifestComponentConfig) SourceType() string

SourceType returns the source type based on which fields are populated

type KustomizeConfig ¶

type KustomizeConfig struct {
	// Path to kustomization directory (relative to source root)
	Path string `json:"path"`

	// Additional patch files to apply after kustomize build
	Patches []string `json:"patches,omitempty"`

	// Enable Helm chart inflation during kustomize build
	EnableHelm bool `json:"enable_helm,omitempty"`

	// Load restrictor: "none" or "rootOnly" (default: "rootOnly")
	LoadRestrictor string `json:"load_restrictor,omitempty"`
}

KustomizeConfig defines kustomize build options

func (KustomizeConfig) GormDataType ¶

func (KustomizeConfig) GormDataType() string

GormDataType returns the GORM data type for this field

func (*KustomizeConfig) Scan ¶

func (c *KustomizeConfig) Scan(v interface{}) (err error)

Scan implements the database/sql.Scanner interface

func (*KustomizeConfig) Value ¶

func (c *KustomizeConfig) Value() (driver.Value, error)

Value implements the driver.Valuer interface

type LatestRunnerHeartBeat ¶

type LatestRunnerHeartBeat struct {
	RunnerID  string            `json:"runner_id,omitzero"  gorm:"->" temporaljson:"runner_id,omitzero,omitempty"`
	ProcessID string            `json:"process_id,omitzero" gorm:"->" temporaljson:"process_id,omitzero,omitempty"`
	Process   RunnerProcessType `json:"process"             gorm:"->" swaggertype:"string"`
	Version   string            `json:"version,omitzero"    gorm:"->" temporaljson:"version,omitzero,omitempty"`
	StartedAt time.Time         `json:"started_at,omitzero" gorm:"-"  temporaljson:"started_at,omitzero,omitempty"`
	AliveTime time.Duration     `json:"alive_time,omitzero" gorm:"->" swaggertype:"primitive,integer" temporaljson:"alive_time,omitzero,omitempty"`
	CreatedAt time.Time         `json:"created_at,omitzero" gorm:"->;column:created_at_latest" temporaljson:"CreatedAt,omitzero,omitempty"`
}

Struct for a read-only materialized view. the view is created directly in sql. NOTE(fd): i am not registering this model so GORM never thinks about it when migrating.

func (*LatestRunnerHeartBeat) AfterQuery ¶

func (r *LatestRunnerHeartBeat) AfterQuery(tx *gorm.DB) error

func (*LatestRunnerHeartBeat) TableName ¶

func (*LatestRunnerHeartBeat) TableName() string

type LogStream ¶

type LogStream struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	OwnerID   string `` /* 126-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	Open bool `json:"open,omitzero" temporaljson:"open,omitzero,omitempty"`

	Attrs pgtype.Hstore `json:"attrs,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"attrs,omitzero,omitempty"`

	ParentLogStreamID generics.NullString `json:"-" swaggerignore:"true" temporaljson:"parent_log_stream_id,omitzero,omitempty"`
	ParentLogStream   *LogStream          `json:"-" faker:"-" temporaljson:"parent_log_stream,omitzero,omitempty"`

	RunnerJobs []RunnerJob `json:"-" temporaljson:"runner_jobs,omitzero,omitempty"`

	WriteToken   string `json:"write_token,omitzero" gorm:"-" temporaljson:"write_token,omitzero,omitempty"`
	RunnerAPIURL string `json:"runner_api_url,omitzero" gorm:"-" temporaljson:"runner_apiurl,omitzero,omitempty"`
}

func (*LogStream) BeforeCreate ¶

func (r *LogStream) BeforeCreate(tx *gorm.DB) error

func (*LogStream) Indexes ¶

func (a *LogStream) Indexes(db *gorm.DB) []migrations.Index

type NotificationsConfig ¶

type NotificationsConfig struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull;defaultnull" temporaljson:"org_id,omitzero,omitempty"`

	OwnerID   string `json:"owner_id,omitzero" gorm:"notnull;defaultnull;" temporaljson:"owner_id,omitzero,omitempty"`
	OwnerType string `json:"owner_type,omitzero" gorm:"notnull;defaultnull;" temporaljson:"owner_type,omitzero,omitempty"`

	// slack settings
	EnableSlackNotifications bool   `json:"-" temporaljson:"enable_slack_notifications,omitzero,omitempty"`
	SlackWebhookURL          string `json:"slack_webhook_url,omitzero" temporaljson:"slack_webhook_url,omitzero,omitempty"`
	InternalSlackWebhookURL  string `json:"-" temporaljson:"internal_slack_webhook_url,omitzero,omitempty"`

	// email settings
	EnableEmailNotifications bool `json:"-" temporaljson:"enable_email_notifications,omitzero,omitempty"`

	// generated via after query
	SlackWebhookURLs []string `gorm:"-" json:"-" temporaljson:"slack_webhook_ur_ls,omitzero,omitempty"`
}

func (*NotificationsConfig) AfterQuery ¶

func (a *NotificationsConfig) AfterQuery(tx *gorm.DB) error

func (*NotificationsConfig) BeforeCreate ¶

func (a *NotificationsConfig) BeforeCreate(tx *gorm.DB) error

func (*NotificationsConfig) Indexes ¶

func (a *NotificationsConfig) Indexes(db *gorm.DB) []migrations.Index

type OCIArtifact ¶

type OCIArtifact struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	OwnerID   string `` /* 148-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;uniqueIndex:idx_owner" temporaljson:"owner_type,omitzero,omitempty"`

	Tag          string         `json:"tag,omitzero" temporaljson:"tag,omitzero,omitempty"`
	Repository   string         `json:"repository,omitzero" temporaljson:"repository,omitzero,omitempty"`
	MediaType    string         `json:"media_type,omitzero" temporaljson:"media_type,omitzero,omitempty"`
	Digest       string         `json:"digest,omitzero" temporaljson:"digest,omitzero,omitempty"`
	Size         int64          `json:"size,omitzero" gorm:"type:bigint" temporaljson:"size,omitzero,omitempty"`
	URLs         pq.StringArray `gorm:"type:text[]" json:"urls,omitzero" swaggertype:"array,string" temporaljson:"urls,omitzero,omitempty"`
	Annotations  pgtype.Hstore  `json:"annotations,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`
	ArtifactType string         `json:"artifact_type,omitzero" gorm:"type:text" temporaljson:"artifact_type,omitzero,omitempty"`

	// Platform fields
	OS           string         `json:"os,omitzero" gorm:"type:text" temporaljson:"os,omitzero,omitempty"`
	Architecture string         `json:"architecture,omitzero" gorm:"type:text" temporaljson:"architecture,omitzero,omitempty"`
	Variant      string         `json:"variant,omitzero" gorm:"type:text" temporaljson:"variant,omitzero,omitempty"`
	OSVersion    string         `json:"os_version,omitzero" gorm:"type:text" temporaljson:"os_version,omitzero,omitempty"`
	OSFeatures   pq.StringArray `gorm:"type:text[]" json:"os_features,omitzero" swaggertype:"array,string" temporaljson:"os_features,omitzero,omitempty"`
}

func (*OCIArtifact) BeforeCreate ¶

func (r *OCIArtifact) BeforeCreate(tx *gorm.DB) (err error)

func (*OCIArtifact) Indexes ¶

func (r *OCIArtifact) Indexes(db *gorm.DB) []migrations.Index

type Onboarding ¶ added in v0.19.850

type Onboarding struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null"`
	CreatedBy   Account               `json:"-"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull"`
	DeletedAt   soft_delete.DeletedAt `json:"-"`

	AccountID string  `json:"account_id,omitzero" gorm:"not null;index"`
	Account   Account `json:"-"`

	Status      OnboardingStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string"`
	StatusV2    CompositeStatus  `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`
	CurrentStep OnboardingStep   `json:"current_step,omitzero" gorm:"notnull" swaggertype:"string"`

	// Step 1: Organization
	OrgID *string `json:"org_id,omitempty"`
	Org   *Org    `json:"-"`

	// Step 2: Your Stack
	AppType        OnboardingAppType      `json:"app_type,omitempty" swaggertype:"string"`
	ExampleAppSlug *string                `json:"example_app_slug,omitempty"`
	CloudProvider  *string                `json:"cloud_provider,omitempty"`
	AppAttributes  pq.StringArray         `json:"app_attributes,omitempty" gorm:"type:text[];default '{}'" swaggertype:"array,string"`
	AppConfig      *IntermediateAppConfig `json:"app_config,omitempty" swaggertype:"object"`
	AppID          *string                `json:"app_id,omitempty"`
	App            *App                   `json:"-"`
	AppBranchID    *string                `json:"app_branch_id,omitempty"`
	AppBranch      *AppBranch             `json:"-"`

	// Step 3: Install
	InstallMode OnboardingInstallMode `json:"install_mode,omitempty" swaggertype:"string"`
	InstallID   *string               `json:"install_id,omitempty"`
	Install     *Install              `json:"-"`
	WorkflowID  *string               `json:"workflow_id,omitempty"`

	// Async step status (for queue-based signal processing)
	StepStatus OnboardingStepStatus `json:"step_status,omitempty" gorm:"default:''" swaggertype:"string"`
	StepError  *string              `json:"step_error,omitempty"`
}

func (*Onboarding) BeforeCreate ¶ added in v0.19.850

func (o *Onboarding) BeforeCreate(tx *gorm.DB) error

func (*Onboarding) SetCompositeStatus ¶ added in v0.19.866

func (o *Onboarding) SetCompositeStatus(ctx context.Context, status Status)

type OnboardingAppType ¶ added in v0.19.850

type OnboardingAppType string
const (
	OnboardingAppTypeCustom  OnboardingAppType = "custom"
	OnboardingAppTypeExample OnboardingAppType = "example"
)

type OnboardingInstallMode ¶ added in v0.19.850

type OnboardingInstallMode string
const (
	OnboardingInstallModeCloud   OnboardingInstallMode = "cloud"
	OnboardingInstallModeSandbox OnboardingInstallMode = "sandbox"
)

type OnboardingStatus ¶ added in v0.19.850

type OnboardingStatus string
const (
	OnboardingStatusActive    OnboardingStatus = "active"
	OnboardingStatusCompleted OnboardingStatus = "completed"
	OnboardingStatusAbandoned OnboardingStatus = "abandoned"
)

type OnboardingStep ¶ added in v0.19.850

type OnboardingStep string
const (
	OnboardingStepOrganization OnboardingStep = "organization"
	OnboardingStepYourStack    OnboardingStep = "your_stack"
	OnboardingStepInstall      OnboardingStep = "install"
	OnboardingStepDeploy       OnboardingStep = "deploy"
	OnboardingStepGetStarted   OnboardingStep = "get_started"
)

type OnboardingStepStatus ¶ added in v0.19.850

type OnboardingStepStatus string
const (
	OnboardingStepStatusActive     OnboardingStepStatus = "active"
	OnboardingStepStatusInProgress OnboardingStepStatus = "in-progress"
	OnboardingStepStatusError      OnboardingStepStatus = "error"
)

type OperationStatus ¶

type OperationStatus string
const (
	OperationStatusStarted  OperationStatus = "started"
	OperationStatusFinished OperationStatus = "finished"
	OperationStatusNoop     OperationStatus = "noop"
	OperationStatusFailed   OperationStatus = "failed"
)

type OperationType ¶ added in v0.19.807

type OperationType string
const (
	OperationProvision   OperationType = "provision"
	OperationDeprovision OperationType = "deprovision"
	OperationDeploy      OperationType = "deploy"
	OperationTeardown    OperationType = "teardown"
	OperationReprovision OperationType = "reprovision"
	OperationTrigger     OperationType = "trigger"
)

type Org ¶

type Org struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `gorm:"index:idx_org_name,unique" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	Name              string          `gorm:"index:idx_org_name,unique;notnull" json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`
	Status            OrgStatus       `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string          `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	SandboxMode bool `json:"sandbox_mode,omitzero" gorm:"notnull" temporaljson:"sandbox_mode,omitzero,omitempty"`

	OrgType   OrgType `json:"-" temporaljson:"org_type,omitzero,omitempty"`
	DebugMode bool    `json:"-" temporaljson:"debug_mode,omitzero,omitempty"`

	NotificationsConfig   NotificationsConfig `` /* 155-byte string literal not displayed */
	NotificationsConfigID string              `json:"-" temporaljson:"notifications_config_id,omitzero,omitempty"`

	RunnerGroup RunnerGroup `` /* 129-byte string literal not displayed */

	LogoURL string `json:"logo_url,omitzero" temporaljson:"logo_url,omitzero,omitempty"`

	Priority int `json:"-" temporaljson:"priority,omitzero,omitempty"`

	Apps           []App               `` /* 136-byte string literal not displayed */
	VCSConnections []VCSConnection     `` /* 127-byte string literal not displayed */
	Invites        []OrgInvite         `faker:"-" swaggerignore:"true" json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"invites,omitzero,omitempty"`
	Features       types.StringBoolMap `json:"features,omitzero" gorm:"type:jsonb;default null" temporaljson:"features,omitzero,omitempty"`
	Tags           pq.StringArray      `json:"tags,omitzero" gorm:"type:text[];default '{}'" swaggertype:"array,string" temporaljson:"tags,omitzero,omitempty"`
	labels.Labeled

	Runners                   []Runner                   `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"runners,omitzero,omitempty"`
	PublicGitVCSConfigs       []PublicGitVCSConfig       `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"public_git_vcs_configs,omitzero,omitempty"`
	ConnectedGithubVCSConfigs []ConnectedGithubVCSConfig `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"connected_github_vcs_configs,omitzero,omitempty"`
	VCSConnectionCommits      []VCSConnectionCommit      `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"vcs_connection_commits,omitzero,omitempty"`
	AWSECRImageConfigs        []AWSECRImageConfig        `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"awsecr_image_configs,omitzero,omitempty"`
	GCPGARImageConfigs        []GCPGARImageConfig        `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"gcp_gar_image_configs,omitzero,omitempty"`
	AzureACRImageConfigs      []AzureACRImageConfig      `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"azure_acr_image_configs,omitzero,omitempty"`
	Installs                  []Install                  `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"installs,omitzero,omitempty"`
	Components                []Component                `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"components,omitzero,omitempty"`

	Installers        []Installer         `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"installers,omitzero,omitempty"`
	InstallerMetadata []InstallerMetadata `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"installer_metadata,omitzero,omitempty"`

	Roles        []Role        `` /* 138-byte string literal not displayed */
	Policies     []Policy      `` /* 144-byte string literal not displayed */
	AccountRoles []AccountRole `` /* 154-byte string literal not displayed */

	Links map[string]any `json:"links,omitempty" temporaljson:"-" gorm:"-"`

	// Transient fields for counts (not persisted to database)
	AppCount     int `json:"app_count,omitempty" gorm:"-"`
	InstallCount int `json:"install_count,omitempty" gorm:"-"`
}

func (*Org) AfterQuery ¶

func (o *Org) AfterQuery(tx *gorm.DB) error

func (*Org) BeforeCreate ¶

func (o *Org) BeforeCreate(tx *gorm.DB) error

func (*Org) EventLoops ¶

func (o *Org) EventLoops() []bulk.EventLoop

type OrgFeature ¶

type OrgFeature string

org feature flags

const (
	OrgFeatureAPIPagination           OrgFeature = "api-pagination"
	OrgFeatureOrgDashboard            OrgFeature = "org-dashboard"
	OrgFeatureOrgRunner               OrgFeature = "org-runner"
	OrgFeatureOrgSettings             OrgFeature = "org-settings"
	OrgFeatureOrgSupport              OrgFeature = "org-support"
	OrgFeatureInstallBreakGlass       OrgFeature = "install-break-glass"
	OrgFeatureInstallDeleteComponents OrgFeature = "install-delete-components"
	OrgFeatureInstallDelete           OrgFeature = "install-delete"
	OrgFeatureTerraformWorkspace      OrgFeature = "terraform-workspace"
	OrgFeatureDevCommand              OrgFeature = "dev-command"
	OrgFeatureAppBranches             OrgFeature = "app-branches"
	OrgFeatureStratusLayout           OrgFeature = "stratus-layout"
	OrgFeatureStratusWorkflow         OrgFeature = "stratus-workflow"
	OrgFeatureTerraformInstaller      OrgFeature = "terraform-installer"
	OrgFeatureDashboardSSE            OrgFeature = "dashboard-sse"
	OrgFeatureUserManagedFeatures     OrgFeature = "user-managed-features"
	OrgFeatureQueues                  OrgFeature = "queues"
	OrgFeatureSupportRole             OrgFeature = "support-role"
	OrgFeatureParallelRunnerJobs      OrgFeature = "parallel-runner-jobs"
	OrgFeatureStepsWorkflows          OrgFeature = "steps-workflows"
	OrgFeatureInstallRename           OrgFeature = "install-rename"
	OrgFeatureDeployOutputs           OrgFeature = "deploy-outputs"
	// OrgFeatureTerraformProviderMirror enables build-time vendoring of
	// terraform providers via `terraform providers mirror` and ships the
	// resulting filesystem mirror inside the OCI artifact. The install
	// runner auto-detects the mirror at unpack time, so toggling this
	// flag only affects the build runner.
	OrgFeatureTerraformProviderMirror OrgFeature = "terraform-provider-mirror"
)

func GetFeatures ¶

func GetFeatures() []OrgFeature

active feature flags for an orgs

func GetUserManageableFeatures ¶

func GetUserManageableFeatures() []OrgFeature

GetUserManageableFeatures returns features that users are allowed to toggle (excludes the user-managed-features flag itself, which is admin-only)

type OrgFeatureInfo ¶

type OrgFeatureInfo struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

OrgFeatureInfo contains metadata about a feature flag

func GetFeaturesWithDescriptions ¶

func GetFeaturesWithDescriptions() []OrgFeatureInfo

GetFeaturesWithDescriptions returns all features with their descriptions

type OrgInvite ¶

type OrgInvite struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index:idx_invite_org_email,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	// parent relationship
	OrgID string `json:"org_id,omitzero" gorm:"notnull;index:idx_invite_org_email,unique" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `gorm:"constraint:OnDelete:CASCADE;" json:"-" temporaljson:"org,omitzero,omitempty"`

	Email    string          `gorm:"notnull;default null;index:idx_invite_org_email,unique" json:"email,omitzero" temporaljson:"email,omitzero,omitempty"`
	Status   OrgInviteStatus `json:"status,omitzero" gorm:"notnull;default null" temporaljson:"status,omitzero,omitempty"`
	StatusV2 CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`
	RoleType RoleType        `json:"role_type,omitzero" temporaljson:"role_type,omitzero,omitempty"`
}

func (*OrgInvite) BeforeCreate ¶

func (o *OrgInvite) BeforeCreate(tx *gorm.DB) error

func (*OrgInvite) Indexes ¶

func (o *OrgInvite) Indexes(db *gorm.DB) []migrations.Index

type OrgInviteStatus ¶

type OrgInviteStatus string
const (
	OrgInviteStatusPending  OrgInviteStatus = "pending"
	OrgInviteStatusAccepted OrgInviteStatus = "accepted"
)

type OrgStatus ¶

type OrgStatus string
const (
	OrgStatusError          OrgStatus = "error"
	OrgStatusActive         OrgStatus = "active"
	OrgStatusProvisioning   OrgStatus = "provisioning"
	OrgStatusDeleting       OrgStatus = "deleting"
	OrgStatusDeprovisioning OrgStatus = "deprovisioning"
	OrgStatusDeprovisioned  OrgStatus = "deprovisioned"
)

type OrgType ¶

type OrgType string
const (
	OrgTypeSandbox     OrgType = "sandbox"
	OrgTypeIntegration OrgType = "integration"
	OrgTypeDefault     OrgType = "default"

	// Legacy
	OrgTypeLegacy OrgType = "real"

	OrgTypeUnknown OrgType = ""
)

type OtelLogRecord ¶

type OtelLogRecord struct {
	ID          string `json:"id,omitzero" gorm:"primary_key" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	LogStreamID            string `json:"log_stream_id,omitzero" temporaljson:"log_stream_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	Timestamp          time.Time         `json:"timestamp,omitzero" gorm:"type:DateTime64(9);codec:Delta(8),ZSTD(1)" temporaljson:"timestamp,omitzero,omitempty"`
	TimestampDate      time.Time         `json:"timestamp_date,omitzero" gorm:"type:Date;default:toDate(timestamp)" temporaljson:"timestamp_date,omitzero,omitempty"`
	TimestampTime      time.Time         `` /* 130-byte string literal not displayed */
	TraceID            string            `` /* 147-byte string literal not displayed */
	SpanID             string            `json:"span_id,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"span_id,omitzero,omitempty"`
	TraceFlags         int               `json:"trace_flags,omitzero" gorm:"type:UInt8" temporaljson:"trace_flags,omitzero,omitempty"`
	SeverityText       string            `` /* 126-byte string literal not displayed */
	SeverityNumber     int               `json:"severity_number,omitzero" gorm:"type:UInt8" temporaljson:"severity_number,omitzero,omitempty"`
	ServiceName        string            `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`
	Body               string            `` /* 140-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 138-byte string literal not displayed */
	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */
	ScopeSchemaURL     string            `` /* 132-byte string literal not displayed */
	ScopeName          string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion       string            `` /* 126-byte string literal not displayed */
	ScopeAttributes    map[string]string `` /* 352-byte string literal not displayed */
	LogAttributes      map[string]string `` /* 345-byte string literal not displayed */
}

Logs are designed to be written via an OTLP exporter.

https://opentelemetry.io/docs/specs/otel/logs/bridge-api/

The clickhouse exporter, is a good reference point for this https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/clickhouseexporter/exporter_logs.go

func (*OtelLogRecord) BeforeCreate ¶

func (r *OtelLogRecord) BeforeCreate(tx *gorm.DB) error

func (OtelLogRecord) GetTableClusterOptions ¶

func (r OtelLogRecord) GetTableClusterOptions() string

func (OtelLogRecord) GetTableOptions ¶

func (r OtelLogRecord) GetTableOptions() string

type OtelMetricExponentialHistogram ¶

type OtelMetricExponentialHistogram struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 138-byte string literal not displayed */

	ScopeName             string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `` /* 126-byte string literal not displayed */
	ScopeAttributes       map[string]string `` /* 352-byte string literal not displayed */
	ScopeDroppedAttrCount uint32            `` /* 132-byte string literal not displayed */
	ScopeSchemaURL        string            `` /* 132-byte string literal not displayed */

	ServiceName string `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 328-byte string literal not displayed */

	StartTimeUnix time.Time `` /* 129-byte string literal not displayed */
	TimeUnix      time.Time `json:"time_unix,omitzero" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`

	Count                uint64   `json:"count,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"count,omitzero,omitempty"`
	Sum                  float64  `json:"sum,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"sum,omitzero,omitempty"`
	Scale                float64  `json:"scale,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"scale,omitzero,omitempty"`
	ZeroCount            uint64   `json:"zero_count,omitzero" gorm:"type:UInt64;codec:ZSTD(1)" temporaljson:"zero_count,omitzero,omitempty"`
	PositiveOffset       int32    `json:"positive_offset,omitzero" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"positive_offset,omitzero,omitempty"`
	PositiveBucketCounts []uint64 `` /* 136-byte string literal not displayed */
	NegativeOffset       int32    `json:"negative_offset,omitzero" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"negative_offset,omitzero,omitempty"`
	NegativeBucketCounts []uint64 `` /* 136-byte string literal not displayed */

	Flags uint32  `json:"flags,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`
	Min   float64 `json:"min,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"min,omitzero,omitempty"`
	Max   float64 `json:"max,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"max,omitzero,omitempty"`

	AggregationTemporality int32 `` /* 130-byte string literal not displayed */

	Exemplars []OtelMetricExponentialHistogramExemplar `` /* 217-byte string literal not displayed */
}

https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/clickhouseexporter/exporter_traces.go#L164

func (*OtelMetricExponentialHistogram) BeforeCreate ¶

func (m *OtelMetricExponentialHistogram) BeforeCreate(tx *gorm.DB) error

func (OtelMetricExponentialHistogram) GetTableOptions ¶

func (m OtelMetricExponentialHistogram) GetTableOptions() (string, bool)

func (OtelMetricExponentialHistogram) TableName ¶

func (m OtelMetricExponentialHistogram) TableName() string

type OtelMetricExponentialHistogramExemplar ¶

type OtelMetricExponentialHistogramExemplar struct {
	FilteredAttributes map[string]string `json:"filtered_attributes,omitzero" temporaljson:"filtered_attributes,omitzero,omitempty"`
	TimesUnix          string            `json:"times_unix,omitzero" temporaljson:"times_unix,omitzero,omitempty"`
	Value              string            `json:"value,omitzero" temporaljson:"value,omitzero,omitempty"`
	SpanID             string            `json:"span_id,omitzero" temporaljson:"span_id,omitzero,omitempty"`
	TraceID            string            `json:"trace_id,omitzero" temporaljson:"trace_id,omitzero,omitempty"`
}

type OtelMetricExponentialHistogramIngestion ¶

type OtelMetricExponentialHistogramIngestion struct {
	ID          string `gorm:"primary_key" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceAttributes map[string]string `` /* 345-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 129-byte string literal not displayed */

	ScopeName             string            `json:"scope_name" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `json:"scope_version" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_version,omitzero,omitempty"`
	ScopeAttributes       map[string]string `` /* 343-byte string literal not displayed */
	ScopeDroppedAttrCount uint32            `json:"scope_dropped_attr_count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `json:"scope_schema_url" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_schema_url,omitzero,omitempty"`

	ServiceName string `json:"service_name" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 319-byte string literal not displayed */

	StartTimeUnix time.Time `json:"start_time_unix" gorm:"type:DateTime64(9); codec:Delta, ZSTD(1)" temporaljson:"start_time_unix,omitzero,omitempty"`
	TimeUnix      time.Time `json:"time_unix" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`

	Count                uint64              `json:"count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"count,omitzero,omitempty"`
	Sum                  float64             `json:"sum" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"sum,omitzero,omitempty"`
	Scale                int32               `json:"scale" gorm:"type:Int32;codec:ZSTD(1)" temporaljson:"scale,omitzero,omitempty"`
	ZeroCount            uint64              `json:"zero_count" gorm:"type:UInt64;codec:ZSTD(1)" temporaljson:"zero_count,omitzero,omitempty"`
	PositiveOffset       int32               `json:"positive_offset" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"positive_offset,omitzero,omitempty"`
	PositiveBucketCounts clickhouse.ArraySet `` /* 127-byte string literal not displayed */
	NegativeOffset       int32               `json:"negative_offset" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"negative_offset,omitzero,omitempty"`
	NegativeBucketCounts clickhouse.ArraySet `` /* 127-byte string literal not displayed */

	Flags uint32  `json:"flags" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`
	Min   float64 `json:"min" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"min,omitzero,omitempty"`
	Max   float64 `json:"maxx" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"max,omitzero,omitempty"`

	AggregationTemporality int32 `json:"aggregation_temporality" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"aggregation_temporality,omitzero,omitempty"`

	ExemplarsFilteredAttributes clickhouse.ArraySet `` /* 164-byte string literal not displayed */
	ExemplarsTimeUnix           clickhouse.ArraySet `json:"-" gorm:"type:Array(DateTime64(9));column:exemplars.time_unix" temporaljson:"exemplars_time_unix,omitzero,omitempty"`
	ExemplarsValue              clickhouse.ArraySet `json:"-" gorm:"type:Array(Float64);column:exemplars.value" temporaljson:"exemplars_value,omitzero,omitempty"`
	ExemplarsSpanID             clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.span_id" temporaljson:"exemplars_span_id,omitzero,omitempty"`
	ExemplarsTraceID            clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.trace_id" temporaljson:"exemplars_trace_id,omitzero,omitempty"`
}

DO NOT MIGRATE

func (*OtelMetricExponentialHistogramIngestion) BeforeCreate ¶

func (OtelMetricExponentialHistogramIngestion) TableName ¶

type OtelMetricGauge ¶

type OtelMetricGauge struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL attributes
	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 138-byte string literal not displayed */

	ScopeName             string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `` /* 126-byte string literal not displayed */
	ScopeAttributes       map[string]string `` /* 352-byte string literal not displayed */
	ScopeDroppedAttrCount int               `` /* 132-byte string literal not displayed */
	ScopeSchemaURL        string            `` /* 132-byte string literal not displayed */

	ServiceName string `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 328-byte string literal not displayed */

	StartTimeUnix time.Time `` /* 129-byte string literal not displayed */
	TimeUnix      time.Time `json:"time_unix,omitzero" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`
	Value         float64   `json:"value,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"value,omitzero,omitempty"`
	Flags         uint32    `json:"flags,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`

	Exemplars []OtelMetricGaugeExemplar `` /* 217-byte string literal not displayed */
}

func (*OtelMetricGauge) BeforeCreate ¶

func (m *OtelMetricGauge) BeforeCreate(tx *gorm.DB) error

func (OtelMetricGauge) GetTableClusterOptions ¶

func (r OtelMetricGauge) GetTableClusterOptions() string

func (OtelMetricGauge) GetTableOptions ¶

func (m OtelMetricGauge) GetTableOptions() string

func (OtelMetricGauge) TableName ¶

func (m OtelMetricGauge) TableName() string

type OtelMetricGaugeExemplar ¶

type OtelMetricGaugeExemplar struct {
	FilteredAttributes map[string]string `json:"filtered_attributes,omitzero" temporaljson:"filtered_attributes,omitzero,omitempty"`
	TimesUnix          string            `json:"times_unix,omitzero" temporaljson:"times_unix,omitzero,omitempty"`
	Value              string            `json:"value,omitzero" temporaljson:"value,omitzero,omitempty"`
	SpanID             string            `json:"span_id,omitzero" temporaljson:"span_id,omitzero,omitempty"`
	TraceID            string            `json:"trace_id,omitzero" temporaljson:"trace_id,omitzero,omitempty"`
}

type OtelMetricGaugeIngestion ¶

type OtelMetricGaugeIngestion struct {
	ID          string `gorm:"primary_key" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceSchemaURL  string            `` /* 129-byte string literal not displayed */
	ResourceAttributes map[string]string `` /* 345-byte string literal not displayed */

	ScopeName             string            `json:"scope_name" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `json:"scope_version" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_version,omitzero,omitempty"`
	ScopeAttributes       map[string]string `` /* 343-byte string literal not displayed */
	ScopeDroppedAttrCount int               `json:"scope_dropped_attr_count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `json:"scope_schema_url" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_schema_url,omitzero,omitempty"`

	ServiceName string `json:"service_name" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 319-byte string literal not displayed */

	StartTimeUnix time.Time `json:"start_time_unix" gorm:"type:DateTime64(9); codec:Delta, ZSTD(1)" temporaljson:"start_time_unix,omitzero,omitempty"`
	TimeUnix      time.Time `json:"time_unix" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`
	Value         float64   `json:"value" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"value,omitzero,omitempty"`
	Flags         uint32    `json:"flags" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`

	// Exemplars []OtelMetricGaugeExemplar `json:"-" temporaljson:"-" gorm:"type:Nested(filtered_attributes Map(LowCardinality(String), String), time_unix DateTime64(9), value Float64, span_id String, trace_id String); codec:ZSTD(1);"`
	ExemplarsFilteredAttributes clickhouse.ArraySet `` /* 164-byte string literal not displayed */
	ExemplarsTimeUnix           clickhouse.ArraySet `json:"-" gorm:"type:Array(DateTime64(9));column:exemplars.time_unix" temporaljson:"exemplars_time_unix,omitzero,omitempty"`
	ExemplarsValue              clickhouse.ArraySet `json:"-" gorm:"type:Array(Float64);column:exemplars.value" temporaljson:"exemplars_value,omitzero,omitempty"`
	ExemplarsSpanID             clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.span_id" temporaljson:"exemplars_span_id,omitzero,omitempty"`
	ExemplarsTraceID            clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.trace_id" temporaljson:"exemplars_trace_id,omitzero,omitempty"`
}

DO NOT MIGRATE

func (*OtelMetricGaugeIngestion) BeforeCreate ¶

func (m *OtelMetricGaugeIngestion) BeforeCreate(tx *gorm.DB) error

func (OtelMetricGaugeIngestion) TableName ¶

func (m OtelMetricGaugeIngestion) TableName() string

type OtelMetricHistogram ¶

type OtelMetricHistogram struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 138-byte string literal not displayed */

	ScopeName             string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `` /* 126-byte string literal not displayed */
	ScopeAttributes       map[string]string `` /* 352-byte string literal not displayed */
	ScopeDroppedAttrCount uint32            `` /* 132-byte string literal not displayed */
	ScopeSchemaURL        string            `` /* 132-byte string literal not displayed */

	ServiceName string `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 328-byte string literal not displayed */

	StartTimeUnix time.Time `` /* 129-byte string literal not displayed */
	TimeUnix      time.Time `json:"time_unix,omitzero" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`

	Count          uint64    `json:"count,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"count,omitzero,omitempty"`
	Sum            float64   `json:"sum,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"sum,omitzero,omitempty"`
	BucketsCount   []uint64  `json:"buckets_count,omitzero" gorm:"type:Array(UInt64);codec:ZSTD(1)" temporaljson:"buckets_count,omitzero,omitempty"`
	ExplicitBounds []float64 `json:"explicit_bounds,omitzero" gorm:"type:Array(Float64);codec:ZSTD(1)" temporaljson:"explicit_bounds,omitzero,omitempty"`

	Flags uint32  `json:"flags,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`
	Min   float64 `json:"min,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"min,omitzero,omitempty"`
	Max   float64 `json:"max,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"max,omitzero,omitempty"`

	AggregationTemporality int32 `` /* 130-byte string literal not displayed */

	Exemplars []OtelMetricHistogramExemplar `` /* 217-byte string literal not displayed */
}

https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/clickhouseexporter/exporter_traces.go#L164

func (*OtelMetricHistogram) BeforeCreate ¶

func (m *OtelMetricHistogram) BeforeCreate(tx *gorm.DB) error

func (OtelMetricHistogram) GetTableClusterOptions ¶

func (OtelMetricHistogram) GetTableClusterOptions() string

func (OtelMetricHistogram) GetTableOptions ¶

func (OtelMetricHistogram) GetTableOptions() string

func (OtelMetricHistogram) TableName ¶

func (m OtelMetricHistogram) TableName() string

type OtelMetricHistogramExemplar ¶

type OtelMetricHistogramExemplar struct {
	FilteredAttributes map[string]string `json:"filtered_attributes,omitzero" temporaljson:"filtered_attributes,omitzero,omitempty"`
	TimesUnix          string            `json:"times_unix,omitzero" temporaljson:"times_unix,omitzero,omitempty"`
	Value              string            `json:"value,omitzero" temporaljson:"value,omitzero,omitempty"`
	SpanID             string            `json:"span_id,omitzero" temporaljson:"span_id,omitzero,omitempty"`
	TraceID            string            `json:"trace_id,omitzero" temporaljson:"trace_id,omitzero,omitempty"`
}

type OtelMetricHistogramIngestion ¶

type OtelMetricHistogramIngestion struct {
	ID          string `gorm:"primary_key" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceAttributes map[string]string `` /* 345-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 129-byte string literal not displayed */

	ScopeName             string            `json:"scope_name" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `json:"scope_version" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_version,omitzero,omitempty"`
	ScopeAttributes       map[string]string `` /* 343-byte string literal not displayed */
	ScopeDroppedAttrCount uint32            `json:"scope_dropped_attr_count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `json:"scope_schema_url" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_schema_url,omitzero,omitempty"`

	ServiceName string `json:"service_name" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 319-byte string literal not displayed */

	StartTimeUnix time.Time `json:"start_time_unix" gorm:"type:DateTime64(9); codec:Delta, ZSTD(1)" temporaljson:"start_time_unix,omitzero,omitempty"`
	TimeUnix      time.Time `json:"time_unix" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`

	Count          uint64              `json:"count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"count,omitzero,omitempty"`
	Sum            float64             `json:"sum" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"sum,omitzero,omitempty"`
	BucketsCount   clickhouse.ArraySet `json:"buckets_count" gorm:"type:Array(UInt64);codec:ZSTD(1)" temporaljson:"buckets_count,omitzero,omitempty"`
	ExplicitBounds clickhouse.ArraySet `json:"explicit_bounds" gorm:"type:Array(Float64);codec:ZSTD(1)" temporaljson:"explicit_bounds,omitzero,omitempty"`

	Flags uint32  `json:"flags" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`
	Min   float64 `json:"min" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"min,omitzero,omitempty"`
	Max   float64 `json:"maxx" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"max,omitzero,omitempty"`

	AggregationTemporality int32 `json:"aggregation_temporality" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"aggregation_temporality,omitzero,omitempty"`

	ExemplarsFilteredAttributes clickhouse.ArraySet `` /* 164-byte string literal not displayed */
	ExemplarsTimeUnix           clickhouse.ArraySet `json:"-" gorm:"type:Array(DateTime64(9));column:exemplars.time_unix" temporaljson:"exemplars_time_unix,omitzero,omitempty"`
	ExemplarsValue              clickhouse.ArraySet `json:"-" gorm:"type:Array(Float64);column:exemplars.value" temporaljson:"exemplars_value,omitzero,omitempty"`
	ExemplarsSpanID             clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.span_id" temporaljson:"exemplars_span_id,omitzero,omitempty"`
	ExemplarsTraceID            clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.trace_id" temporaljson:"exemplars_trace_id,omitzero,omitempty"`
}

DO NOT MIGRATE

func (*OtelMetricHistogramIngestion) BeforeCreate ¶

func (m *OtelMetricHistogramIngestion) BeforeCreate(tx *gorm.DB) error

func (OtelMetricHistogramIngestion) TableName ¶

func (m OtelMetricHistogramIngestion) TableName() string

type OtelMetricSum ¶

type OtelMetricSum struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceSchemaURL  string            `` /* 138-byte string literal not displayed */
	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */

	ScopeName             string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `` /* 126-byte string literal not displayed */
	ScopeAttributes       map[string]string `` /* 352-byte string literal not displayed */
	ScopeDroppedAttrCount uint32            `` /* 132-byte string literal not displayed */
	ScopeSchemaURL        string            `` /* 132-byte string literal not displayed */

	ServiceName string `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 328-byte string literal not displayed */

	StartTimeUnix time.Time `` /* 129-byte string literal not displayed */
	TimeUnix      time.Time `json:"time_unix,omitzero" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`
	Value         float64   `json:"value,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"value,omitzero,omitempty"`
	Flags         uint32    `json:"flags,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`

	IsMonotonic bool `json:"is_monotonic,omitzero" gorm:"codec:Delta, ZSTD(1)" temporaljson:"is_monotonic,omitzero,omitempty"`

	AggregationTemporality int32 `` /* 130-byte string literal not displayed */

	Exemplars []OtelMetricSumExemplar `` /* 217-byte string literal not displayed */
}

func (*OtelMetricSum) BeforeCreate ¶

func (m *OtelMetricSum) BeforeCreate(tx *gorm.DB) error

func (OtelMetricSum) GetTableClusterOptions ¶

func (r OtelMetricSum) GetTableClusterOptions() string

func (OtelMetricSum) GetTableOptions ¶

func (m OtelMetricSum) GetTableOptions() string

func (OtelMetricSum) TableName ¶

func (m OtelMetricSum) TableName() string

type OtelMetricSumExemplar ¶

type OtelMetricSumExemplar struct {
	FilteredAttributes map[string]string `json:"filtered_attributes,omitzero" temporaljson:"filtered_attributes,omitzero,omitempty"`
	TimesUnix          string            `json:"times_unix,omitzero" temporaljson:"times_unix,omitzero,omitempty"`
	Value              string            `json:"value,omitzero" temporaljson:"value,omitzero,omitempty"`
	SpanID             string            `json:"span_id,omitzero" temporaljson:"span_id,omitzero,omitempty"`
	TraceID            string            `json:"trace_id,omitzero" temporaljson:"trace_id,omitzero,omitempty"`
}

type OtelMetricSumIngestion ¶

type OtelMetricSumIngestion struct {
	ID          string `gorm:"primary_key" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL attributes
	ResourceAttributes map[string]string `` /* 345-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 129-byte string literal not displayed */

	ScopeName             string            `json:"scope_name" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `json:"scope_version" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_version,omitzero,omitempty"`
	ScopeAttributes       map[string]string `` /* 343-byte string literal not displayed */
	ScopeDroppedAttrCount int               `json:"scope_dropped_attr_count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `json:"scope_schema_url" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_schema_url,omitzero,omitempty"`

	ServiceName string `json:"service_name" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 319-byte string literal not displayed */

	StartTimeUnix time.Time `json:"start_time_unix" gorm:"type:DateTime64(9); codec:Delta, ZSTD(1)" temporaljson:"start_time_unix,omitzero,omitempty"`
	TimeUnix      time.Time `json:"time_unix" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`
	Value         float64   `json:"value" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"value,omitzero,omitempty"`
	Flags         uint32    `json:"flags" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`

	IsMonotonic bool `json:"is_monotonic" gorm:"codec:Delta, ZSTD(1)" temporaljson:"is_monotonic,omitzero,omitempty"`

	AggregationTemporality int32 `json:"aggregation_temporality" gorm:"type:Int32; codec:ZSTD(1)" temporaljson:"aggregation_temporality,omitzero,omitempty"`

	// Exemplars []OtelMetricSumExemplar `json:"-" temporaljson:"-" gorm:"type:Nested(filtered_attributes Map(LowCardinality(String), String), time_unix DateTime64(9), value Float64, span_id String, trace_id String); codec:ZSTD(1);"`
	ExemplarsFilteredAttributes clickhouse.ArraySet `` /* 164-byte string literal not displayed */
	ExemplarsTimeUnix           clickhouse.ArraySet `json:"-" gorm:"type:Array(DateTime64(9));column:exemplars.time_unix" temporaljson:"exemplars_time_unix,omitzero,omitempty"`
	ExemplarsValue              clickhouse.ArraySet `json:"-" gorm:"type:Array(Float64);column:exemplars.value" temporaljson:"exemplars_value,omitzero,omitempty"`
	ExemplarsSpanID             clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.span_id" temporaljson:"exemplars_span_id,omitzero,omitempty"`
	ExemplarsTraceID            clickhouse.ArraySet `json:"-" gorm:"type:Array(String);column:exemplars.trace_id" temporaljson:"exemplars_trace_id,omitzero,omitempty"`
}

DO NOT MIGRATE: this is for ingestion only

func (*OtelMetricSumIngestion) BeforeCreate ¶

func (m *OtelMetricSumIngestion) BeforeCreate(tx *gorm.DB) error

func (OtelMetricSumIngestion) TableName ¶

func (m OtelMetricSumIngestion) TableName() string

type OtelMetricSummary ¶

type OtelMetricSummary struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log message attributes
	ResourceSchemaURL  string            `` /* 138-byte string literal not displayed */
	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */

	ScopeName             string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `` /* 126-byte string literal not displayed */
	ScopeAttributes       map[string]string `` /* 352-byte string literal not displayed */
	ScopeDroppedAttrCount uint32            `` /* 132-byte string literal not displayed */
	ScopeSchemaURL        string            `` /* 132-byte string literal not displayed */

	ServiceName string `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 328-byte string literal not displayed */

	StartTimeUnix time.Time `` /* 129-byte string literal not displayed */
	TimeUnix      time.Time `json:"time_unix,omitzero" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`

	Count uint64  `json:"count,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"count,omitzero,omitempty"`
	Sum   float64 `json:"sum,omitzero" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"sum,omitzero,omitempty"`
	Flags uint32  `json:"flags,omitzero" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`

	ValueAtQuantiles map[float64]float64 `` /* 152-byte string literal not displayed */
}

func (*OtelMetricSummary) BeforeCreate ¶

func (m *OtelMetricSummary) BeforeCreate(tx *gorm.DB) error

func (OtelMetricSummary) GetTableOptions ¶

func (m OtelMetricSummary) GetTableOptions() (string, bool)

func (OtelMetricSummary) MigrateDB ¶

func (m OtelMetricSummary) MigrateDB(db *gorm.DB) *gorm.DB

func (OtelMetricSummary) TableName ¶

func (m OtelMetricSummary) TableName() string

type OtelMetricSummaryExemplar ¶

type OtelMetricSummaryExemplar struct {
	FilteredAttributes map[string]string `json:"filtered_attributes,omitzero" temporaljson:"filtered_attributes,omitzero,omitempty"`
	TimesUnix          string            `json:"times_unix,omitzero" temporaljson:"times_unix,omitzero,omitempty"`
	Value              string            `json:"value,omitzero" temporaljson:"value,omitzero,omitempty"`
	SpanID             string            `json:"span_id,omitzero" temporaljson:"span_id,omitzero,omitempty"`
	TraceID            string            `json:"trace_id,omitzero" temporaljson:"trace_id,omitzero,omitempty"`
}

type OtelMetricSummaryIngestion ¶

type OtelMetricSummaryIngestion struct {
	ID          string `gorm:"primary_key" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	OrgID                  string `json:"org_id" temporaljson:"org_id,omitzero,omitempty"`
	RunnerID               string `json:"runner_id" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL attributes
	ResourceAttributes map[string]string `` /* 345-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 129-byte string literal not displayed */

	ScopeName             string            `json:"scope_name" gorm:"codec:ZSTD(1)" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `json:"scope_version" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_version,omitzero,omitempty"`
	ScopeAttributes       map[string]string `` /* 343-byte string literal not displayed */
	ScopeDroppedAttrCount int               `json:"scope_dropped_attr_count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `json:"scope_schema_url" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"scope_schema_url,omitzero,omitempty"`

	ServiceName string `json:"service_name" gorm:"type:LowCardinality(String);codec:ZSTD(1)" temporaljson:"service_name,omitzero,omitempty"`

	MetricName        string `json:"metric_name" gorm:"codec:ZSTD(1)" temporaljson:"metric_name,omitzero,omitempty"`
	MetricDescription string `json:"metric_description" gorm:"codec:ZSTD(1)" temporaljson:"metric_description,omitzero,omitempty"`
	MetricUnit        string `json:"metric_unit" gorm:"codec:ZSTD(1)" temporaljson:"metric_unit,omitzero,omitempty"`

	Attributes map[string]string `` /* 319-byte string literal not displayed */

	StartTimeUnix time.Time `json:"start_time_unix" gorm:"type:DateTime64(9); codec:Delta, ZSTD(1)" temporaljson:"start_time_unix,omitzero,omitempty"`
	TimeUnix      time.Time `json:"time_unix" gorm:"type:DateTime64(9);codec:ZSTD(1)" temporaljson:"time_unix,omitzero,omitempty"`

	Count uint64  `json:"count" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"count,omitzero,omitempty"`
	Sum   float64 `json:"sum" gorm:"type:Float64;codec:ZSTD(1)" temporaljson:"sum,omitzero,omitempty"`
	Flags uint32  `json:"flags" gorm:"type:UInt32;codec:ZSTD(1)" temporaljson:"flags,omitzero,omitempty"`

	ValueAtQuantilesQuantile clickhouse.ArraySet `` /* 141-byte string literal not displayed */
	ValueAtQuantilesValue    clickhouse.ArraySet `` /* 132-byte string literal not displayed */
}

DO NOT MIGRATE: this is for ingestion only

func (*OtelMetricSummaryIngestion) BeforeCreate ¶

func (m *OtelMetricSummaryIngestion) BeforeCreate(tx *gorm.DB) error

func (OtelMetricSummaryIngestion) TableName ¶

func (m OtelMetricSummaryIngestion) TableName() string

type OtelTrace ¶

type OtelTrace struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `gorm:"notnull;" json:"created_by_id,omitzero" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `gorm:"notnull" json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `gorm:"notnull" json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	RunnerID               string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id,omitzero" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id,omitzero" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step,omitzero" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log trace attributes
	Timestamp     time.Time `json:"timestamp,omitzero" gorm:"type:DateTime64(9);codec:Delta(8),ZSTD(1);" temporaljson:"timestamp,omitzero,omitempty"`
	TimestampDate time.Time `json:"timestamp_date,omitzero" gorm:"type:Date;default:toDate(timestamp);" temporaljson:"timestamp_date,omitzero,omitempty"`
	TimestampTime time.Time `` /* 131-byte string literal not displayed */

	ResourceAttributes map[string]string `` /* 354-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 139-byte string literal not displayed */

	ScopeName             string            `json:"scope_name,omitzero" gorm:"codec:ZSTD(1);" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `` /* 127-byte string literal not displayed */
	ScopeAttributes       map[string]string `` /* 352-byte string literal not displayed */
	ScopeDroppedAttrCount int               `json:"scope_dropped_attr_count,omitzero" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `` /* 133-byte string literal not displayed */

	TraceID        string            `` /* 147-byte string literal not displayed */
	SpanID         string            `json:"span_id,omitzero" gorm:"codec:ZSTD(1);" temporaljson:"span_id,omitzero,omitempty"`
	ParentSpanID   string            `json:"parent_span_id,omitzero" gorm:"codec:ZSTD(1);" temporaljson:"parent_span_id,omitzero,omitempty"`
	TraceState     string            `json:"trace_state,omitzero" gorm:"codec:ZSTD(1);" temporaljson:"trace_state,omitzero,omitempty"`
	SpanName       string            `json:"span_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"span_name,omitzero,omitempty"`
	SpanKind       string            `json:"span_kind,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"span_kind,omitzero,omitempty"`
	ServiceName    string            `json:"service_name,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"service_name,omitzero,omitempty"`
	SpanAttributes map[string]string `` /* 348-byte string literal not displayed */
	Duration       int64             `json:"duration,omitzero" gorm:"codec:ZSTD(1);" temporaljson:"duration,omitzero,omitempty"`
	StatusCode     string            `json:"status_code,omitzero" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"status_code,omitzero,omitempty"`
	StatusMessage  string            `json:"status_message,omitzero" gorm:"codec:ZSTD(1);" temporaljson:"status_message,omitzero,omitempty"`

	// Nested Fields
	// NOTE(fd): these control the actual migration. careful when modifying. ALTER does not work the same way on nested clickhouse columns.
	Events []OtelTraceEvent `` /* 162-byte string literal not displayed */
	Links  []OtelTraceLink  `` /* 159-byte string literal not displayed */
}

func (*OtelTrace) BeforeCreate ¶

func (r *OtelTrace) BeforeCreate(tx *gorm.DB) error

func (OtelTrace) GetTableClusterOptions ¶

func (r OtelTrace) GetTableClusterOptions() string

func (OtelTrace) GetTableOptions ¶

func (r OtelTrace) GetTableOptions() string

type OtelTraceEvent ¶

type OtelTraceEvent struct {
	Timestamp  time.Time         `json:"timestamp,omitzero" temporaljson:"timestamp,omitzero,omitempty"`
	Name       string            `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`
	Attributes map[string]string `json:"attributes,omitzero" temporaljson:"attributes,omitzero,omitempty"`
}

type OtelTraceIngestion ¶

type OtelTraceIngestion struct {
	ID          string `gorm:"primary_key" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `gorm:"notnull;" json:"created_by_id" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `gorm:"notnull" json:"created_at" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `gorm:"notnull" json:"updated_at" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// internal attributes
	RunnerID               string `json:"runner_id" temporaljson:"runner_id,omitzero,omitempty"`
	RunnerJobID            string `json:"runner_job_id" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerGroupID          string `json:"runner_group_id" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerJobExecutionID   string `json:"runner_job_execution_id" temporaljson:"runner_job_execution_id,omitzero,omitempty"`
	RunnerJobExecutionStep string `json:"runner_job_execution_step" temporaljson:"runner_job_execution_step,omitzero,omitempty"`

	// OTEL log trace attributes
	Timestamp     time.Time `json:"timestamp" gorm:"type:DateTime64(9);codec:Delta(8),ZSTD(1);" temporaljson:"timestamp,omitzero,omitempty"`
	TimestampDate time.Time `json:"timestamp_date" gorm:"type:Date;default:toDate(timestamp);" temporaljson:"timestamp_date,omitzero,omitempty"`
	TimestampTime time.Time `json:"timestamp_time" gorm:"type:DateTime;default:toDateTime(timestamp);" temporaljson:"timestamp_time,omitzero,omitempty"`

	ResourceAttributes map[string]string `` /* 345-byte string literal not displayed */
	ResourceSchemaURL  string            `` /* 130-byte string literal not displayed */

	ScopeName             string            `json:"scope_name" gorm:"codec:ZSTD(1);" temporaljson:"scope_name,omitzero,omitempty"`
	ScopeVersion          string            `json:"scope_version" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"scope_version,omitzero,omitempty"`
	ScopeAttributes       map[string]string `` /* 343-byte string literal not displayed */
	ScopeDroppedAttrCount int               `json:"scope_dropped_attr_count" temporaljson:"scope_dropped_attr_count,omitzero,omitempty"`
	ScopeSchemaURL        string            `json:"scope_schema_url" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"scope_schema_url,omitzero,omitempty"`

	TraceID        string            `` /* 138-byte string literal not displayed */
	SpanID         string            `json:"span_id" gorm:"codec:ZSTD(1);" temporaljson:"span_id,omitzero,omitempty"`
	ParentSpanID   string            `json:"parent_span_id" gorm:"codec:ZSTD(1);" temporaljson:"parent_span_id,omitzero,omitempty"`
	TraceState     string            `json:"trace_state" gorm:"codec:ZSTD(1);" temporaljson:"trace_state,omitzero,omitempty"`
	SpanName       string            `json:"span_name" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"span_name,omitzero,omitempty"`
	SpanKind       string            `json:"span_kind" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"span_kind,omitzero,omitempty"`
	ServiceName    string            `json:"service_name" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"service_name,omitzero,omitempty"`
	SpanAttributes map[string]string `` /* 339-byte string literal not displayed */
	Duration       int64             `json:"duration" gorm:"codec:ZSTD(1);" temporaljson:"duration,omitzero,omitempty"`
	StatusCode     string            `json:"status_code" gorm:"type:LowCardinality(String);codec:ZSTD(1);" temporaljson:"status_code,omitzero,omitempty"`
	StatusMessage  string            `json:"status_message" gorm:"codec:ZSTD(1);" temporaljson:"status_message,omitzero,omitempty"`

	// the items of interest here are these attrs/columns that define a `column` in the `gorm` struct tag so gorm knows what column to send these to
	EventsTimestamp  []time.Time         `json:"-" gorm:"type:DateTime64(9);column:events.timestamp" temporaljson:"events_timestamp,omitzero,omitempty"`
	EventsName       []string            `json:"-" gorm:"type:LowCardinality(String);column:events.name" temporaljson:"events_name,omitzero,omitempty"`
	EventsAttributes []map[string]string `` /* 133-byte string literal not displayed */
	LinksTraceID     []string            `json:"-" gorm:"type:LowCardinality(String);column:links.trace_id" temporaljson:"links_trace_id,omitzero,omitempty"`
	LinksSpanID      []string            `json:"-" gorm:"type:LowCardinality(String);column:links.span_id" temporaljson:"links_span_id,omitzero,omitempty"`
	LinksState       []string            `json:"-" gorm:"type:LowCardinality(String);column:links.span_state" temporaljson:"links_state,omitzero,omitempty"`
	LinksAttributes  []map[string]string `` /* 131-byte string literal not displayed */
}

NOTE(fd): DO NOT MIGRATE THIS it's just here so we can write to the table and read data w/ Nested columns as an Array of Structs

func (*OtelTraceIngestion) BeforeCreate ¶

func (r *OtelTraceIngestion) BeforeCreate(tx *gorm.DB) error

func (OtelTraceIngestion) TableName ¶

func (m OtelTraceIngestion) TableName() string

TableName

type OtelTraceLink struct {
	TraceID    string            `json:"trace_id,omitzero" temporaljson:"trace_id,omitzero,omitempty"`
	SpanID     string            `json:"span_id,omitzero" temporaljson:"span_id,omitzero,omitempty"`
	SpanState  string            `json:"span_state,omitzero" temporaljson:"span_state,omitzero,omitempty"`
	Attributes map[string]string `json:"attributes,omitzero" temporaljson:"attributes,omitzero,omitempty"`
}

type PSQLTableSize ¶

type PSQLTableSize struct {
	TableName  string  `json:"table_name,omitzero"`
	SizePretty string  `json:"size_pretty,omitzero"`
	SizeBytes  float64 `json:"size_bytes,omitzero" gorm:"->;-:migration" temporaljson:"size_bytes,omitzero,omitempty"`
}

func (PSQLTableSize) GetTableOptions ¶

func (m PSQLTableSize) GetTableOptions() (string, bool)

func (PSQLTableSize) MigrateDB ¶

func (r PSQLTableSize) MigrateDB(db *gorm.DB) *gorm.DB

func (*PSQLTableSize) UseView ¶

func (*PSQLTableSize) UseView() bool

func (*PSQLTableSize) ViewVersion ¶

func (*PSQLTableSize) ViewVersion() string

func (*PSQLTableSize) Views ¶

func (i *PSQLTableSize) Views(db *gorm.DB) []migrations.View

type Policy ¶

type Policy struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	RoleID string `json:"role_id,omitzero" gorm:"notnull;default null" temporaljson:"role_id,omitzero,omitempty"`
	Role   Role   `swaggerignore:"true" json:"role,omitzero" temporaljson:"role,omitzero,omitempty"`

	OrgID generics.NullString `json:"org_id,omitzero" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org                `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Name PolicyName `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`

	// Permissions are used to track granular permissions for each domain
	Permissions pgtype.Hstore `json:"permissions" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"permissions,omitzero,omitempty"`
}

func (*Policy) AfterQuery ¶

func (a *Policy) AfterQuery(tx *gorm.DB) error

func (*Policy) BeforeCreate ¶

func (a *Policy) BeforeCreate(tx *gorm.DB) error

func (*Policy) Indexes ¶

func (a *Policy) Indexes(db *gorm.DB) []migrations.Index

type PolicyInputRef ¶ added in v0.19.771

type PolicyInputRef struct {
	ID   string `json:"id"`
	Type string `json:"type"`
	Name string `json:"name,omitempty"`
}

PolicyInputRef represents a reference to an input that was evaluated.

type PolicyName ¶

type PolicyName string
const (
	// we create a custom policy for each role
	PolicyNameOrgAdmin   PolicyName = "org_admin"
	PolicyNameOrgSupport PolicyName = "org_support"
	PolicyNameInstaller  PolicyName = "installer"
	PolicyNameRunner     PolicyName = "runner"

	// policy names for service accounts
	PolicyNameHostedInstaller PolicyName = "hosted_installer"
)

type PolicyReport ¶ added in v0.19.771

type PolicyReport struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `gorm:"foreignKey:CreatedByID;references:ID" json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `gorm:"foreignKey:OrgID;references:ID" json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// Denormalized context for filtering
	AppID       string  `json:"app_id,omitzero" gorm:"notnull" temporaljson:"app_id,omitzero,omitempty"`
	InstallID   *string `json:"install_id,omitzero" gorm:"default:null" temporaljson:"install_id,omitzero,omitempty"`
	ComponentID *string `json:"component_id,omitzero" gorm:"default:null" temporaljson:"component_id,omitzero,omitempty"`

	// Denormalized display names for human-readable reports
	OrgName       string  `json:"org_name,omitzero" gorm:"default:null" temporaljson:"org_name,omitzero,omitempty"`
	AppName       string  `json:"app_name,omitzero" gorm:"default:null" temporaljson:"app_name,omitzero,omitempty"`
	InstallName   *string `json:"install_name,omitzero" gorm:"default:null" temporaljson:"install_name,omitzero,omitempty"`
	ComponentName *string `json:"component_name,omitzero" gorm:"default:null" temporaljson:"component_name,omitzero,omitempty"`

	// Optional context references (indexes defined in Indexes())
	WorkflowStepPolicyValidationID *string `json:"workflow_step_policy_validation_id,omitzero" temporaljson:"workflow_step_policy_validation_id,omitzero,omitempty"`
	RunnerJobID                    *string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`

	// Polymorphic relationship to the impacted Nuon resource (indexes defined in Indexes())
	OwnerID   string                `` /* 147-byte string literal not displayed */
	OwnerType PolicyReportOwnerType `` /* 197-byte string literal not displayed */

	// Canonical policy evaluation data
	EvaluatedAt time.Time         `json:"evaluated_at,omitzero" gorm:"notnull" temporaljson:"evaluated_at,omitzero,omitempty"`
	Violations  []PolicyViolation `json:"violations,omitzero" gorm:"type:jsonb;serializer:json;default:'[]'" temporaljson:"violations,omitzero,omitempty"`
	PolicyIDs   []string          `json:"policy_ids,omitzero" gorm:"type:jsonb;serializer:json;default:'[]'" temporaljson:"policy_ids,omitzero,omitempty"`
	Policies    []PolicyResult    `json:"policies,omitzero" gorm:"type:jsonb;serializer:json;default:'[]'" temporaljson:"policies,omitzero,omitempty"`
	Inputs      []PolicyInputRef  `json:"inputs,omitzero" gorm:"type:jsonb;serializer:json;default:'[]'" temporaljson:"inputs,omitzero,omitempty"`

	// Summary counts for list views
	DenyCount int `json:"deny_count" gorm:"notnull;default:0" temporaljson:"deny_count,omitzero,omitempty"`
	WarnCount int `json:"warn_count" gorm:"notnull;default:0" temporaljson:"warn_count,omitzero,omitempty"`
	PassCount int `json:"pass_count" gorm:"notnull;default:0" temporaljson:"pass_count,omitzero,omitempty"`

	Status CompositeStatus `json:"status,omitzero" gorm:"type:jsonb" temporaljson:"status,omitzero,omitempty"`
}

PolicyReport stores canonical policy evaluation results with format-agnostic storage.

func (*PolicyReport) BeforeCreate ¶ added in v0.19.771

func (r *PolicyReport) BeforeCreate(tx *gorm.DB) error

func (*PolicyReport) Indexes ¶ added in v0.19.771

func (r *PolicyReport) Indexes(db *gorm.DB) []migrations.Index

func (*PolicyReport) TableName ¶ added in v0.19.771

func (r *PolicyReport) TableName() string

type PolicyReportEvent ¶ added in v0.19.894

type PolicyReportEvent struct {
	ReportID    string    `gorm:"column:report_id"                               json:"report_id"`
	OrgID       string    `gorm:"column:org_id;type:LowCardinality(String)"      json:"org_id"`
	AppID       string    `gorm:"column:app_id"                                  json:"app_id"`
	InstallID   string    `gorm:"column:install_id;default:''"                   json:"install_id"`
	ComponentID string    `gorm:"column:component_id;default:''"                 json:"component_id"`
	PolicyID    string    `gorm:"column:policy_id"                               json:"policy_id"`
	OwnerType   string    `gorm:"column:owner_type;type:LowCardinality(String)"  json:"owner_type"`
	EvaluatedAt time.Time `gorm:"column:evaluated_at;type:DateTime64(3)"         json:"evaluated_at"`
	Outcome     string    `gorm:"column:outcome;type:LowCardinality(String)"     json:"outcome"`
}

PolicyReportEvent is a ClickHouse analytics event for policy evaluations. One row per policy per report, with outcome derived from PolicyResult.Status.

func (PolicyReportEvent) GetTableClusterOptions ¶ added in v0.19.894

func (PolicyReportEvent) GetTableClusterOptions() string

func (PolicyReportEvent) GetTableOptions ¶ added in v0.19.894

func (PolicyReportEvent) GetTableOptions() string

func (PolicyReportEvent) TableName ¶ added in v0.19.894

func (PolicyReportEvent) TableName() string

type PolicyReportOwnerType ¶ added in v0.19.771

type PolicyReportOwnerType string

PolicyReportOwnerType represents the type of resource that was evaluated by policies.

const (
	PolicyReportOwnerTypeInstallDeploy     PolicyReportOwnerType = "install_deploys"
	PolicyReportOwnerTypeInstallSandboxRun PolicyReportOwnerType = "install_sandbox_runs"
	PolicyReportOwnerTypeComponentBuild    PolicyReportOwnerType = "component_builds"
)

type PolicyResult ¶ added in v0.19.771

type PolicyResult struct {
	PolicyID   string `json:"policy_id"`
	PolicyName string `json:"policy_name,omitempty"`
	Status     string `json:"status"` // "deny", "warn", or "pass"
	DenyCount  int    `json:"deny_count"`
	WarnCount  int    `json:"warn_count"`
	PassCount  int    `json:"pass_count"`
	InputCount int    `json:"input_count"`
}

PolicyResult represents the evaluation result for a single policy.

type PolicyViolation ¶ added in v0.19.771

type PolicyViolation struct {
	PolicyID      string `json:"policy_id" temporaljson:"policy_id,omitempty"`
	PolicyName    string `json:"policy_name,omitempty" temporaljson:"policy_name,omitempty"`
	InputIndex    int    `json:"input_index" temporaljson:"input_index,omitempty"`
	InputIdentity string `json:"input_identity,omitempty" temporaljson:"input_identity,omitempty"` // Human-readable input reference (e.g., "Deployment/default/nginx")
	Message       string `json:"message" temporaljson:"message,omitempty"`
	Severity      string `json:"severity" temporaljson:"severity,omitempty"` // "deny" or "warn"
}

PolicyViolation represents a single policy violation from evaluation.

type ProviderType ¶

type ProviderType string
const (
	ProviderTypeOIDC   ProviderType = "oidc"
	ProviderTypeGoogle ProviderType = "google"
	ProviderTypeGitHub ProviderType = "github"
)

type PublicGitVCSConfig ¶

type PublicGitVCSConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	ComponentConfigID   string `json:"component_config_id,omitzero" gorm:"notnull" temporaljson:"component_config_id,omitzero,omitempty"`
	ComponentConfigType string `json:"component_config_type,omitzero" gorm:"notnull" temporaljson:"component_config_type,omitzero,omitempty"`

	// actual configuration
	Repo       string `json:"repo,omitzero" gorm:"notnull" temporaljson:"repo,omitzero,omitempty"`
	Directory  string `json:"directory,omitzero" gorm:"notnull" temporaljson:"directory,omitzero,omitempty"`
	Branch     string `json:"branch,omitzero" gorm:"notnull" temporaljson:"branch,omitzero,omitempty"`
	PathFilter string `json:"path_filter,omitzero" temporaljson:"path_filter,omitzero,omitempty"`
}

func (*PublicGitVCSConfig) BeforeCreate ¶

func (c *PublicGitVCSConfig) BeforeCreate(tx *gorm.DB) error

func (*PublicGitVCSConfig) Indexes ¶

func (c *PublicGitVCSConfig) Indexes(db *gorm.DB) []migrations.Index

type PulumiComponentConfig ¶ added in v0.19.894

type PulumiComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// parent reference
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	// pulumi configuration values
	Runtime string        `json:"runtime,omitzero" gorm:"notnull" temporaljson:"runtime,omitzero,omitempty"`
	Version string        `json:"version,omitzero" gorm:"default:null" temporaljson:"version,omitzero,omitempty"`
	Config  pgtype.Hstore `json:"config,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"config,omitzero,omitempty"`
	EnvVars pgtype.Hstore `json:"env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"env_vars,omitzero,omitempty"`

	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 167-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 179-byte string literal not displayed */
}

func (*PulumiComponentConfig) BeforeCreate ¶ added in v0.19.894

func (c *PulumiComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*PulumiComponentConfig) Indexes ¶ added in v0.19.894

func (c *PulumiComponentConfig) Indexes(db *gorm.DB) []migrations.Index

type Queue ¶

type Queue struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID *string `json:"org_id,omitempty" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	OwnerID   string `` /* 127-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	Name        string          `json:"name,omitzero" gorm:"default:''" temporaljson:"name,omitzero,omitempty"`
	MaxDepth    int             `json:"max_depth,omitzero"`
	MaxInFlight int             `json:"max_in_flight,omitzero"`
	IdleTimeout int64           `json:"idle_timeout,omitzero" gorm:"default:0" swaggertype:"primitive,integer"`
	Metadata    pgtype.Hstore   `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`
	StatusV2    CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	Workflow signaldb.WorkflowRef `json:"workflow"`

	Signals  []QueueSignal  `json:"queue_signal,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"signals,omitzero,omitempty"`
	Emitters []QueueEmitter `json:"emitters,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"emitters,omitzero,omitempty"`
}

func (*Queue) BeforeCreate ¶

func (r *Queue) BeforeCreate(tx *gorm.DB) error

func (*Queue) Indexes ¶

func (r *Queue) Indexes(db *gorm.DB) []migrations.Index

type QueueEmitter ¶ added in v0.19.850

type QueueEmitter struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	// Many-to-one: each emitter belongs to exactly one queue
	QueueID string `` /* 126-byte string literal not displayed */
	Queue   Queue  `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"queue,omitzero,omitempty"`

	// Emitter identity
	Name        string `json:"name,omitzero" gorm:"type:text;not null" temporaljson:"name,omitzero,omitempty"`
	Description string `json:"description,omitzero" gorm:"type:text" temporaljson:"description,omitzero,omitempty"`

	// Emitter mode: "cron" for recurring, "scheduled" for one-shot
	Mode QueueEmitterMode `json:"mode,omitzero" gorm:"type:text;not null;default:'cron'" temporaljson:"mode,omitzero,omitempty"`

	// Schedule configuration
	// For cron mode: cron expression (e.g., "0 * * * *")
	CronSchedule string `json:"cron_schedule,omitzero" gorm:"type:text" temporaljson:"cron_schedule,omitzero,omitempty"`
	// For scheduled mode: the time to fire the signal
	ScheduledAt *time.Time `json:"scheduled_at,omitzero" temporaljson:"scheduled_at,omitzero,omitempty"`
	// For scheduled mode: whether the signal has been fired
	Fired bool `json:"fired,omitzero" gorm:"default:false" temporaljson:"fired,omitzero,omitempty"`

	// Signal template - the signal to emit on each tick
	SignalType     signal.SignalType   `json:"signal_type,omitzero" gorm:"type:text;not null" temporaljson:"signal_type,omitzero,omitempty"`
	SignalTemplate signaldb.SignalData `json:"signal_template,omitzero" temporaljson:"-"`

	// Runtime state using shared CompositeStatus
	Status        CompositeStatus `json:"status" temporaljson:"status,omitzero,omitempty"`
	LastEmittedAt *time.Time      `json:"last_emitted_at,omitzero" temporaljson:"last_emitted_at,omitzero,omitempty"`
	NextEmitAt    *time.Time      `json:"next_emit_at,omitzero" temporaljson:"next_emit_at,omitzero,omitempty"`
	EmitCount     int64           `json:"emit_count,omitzero" gorm:"default:0" temporaljson:"emit_count,omitzero,omitempty"`

	// Workflow reference for the emitter's cron workflow
	Workflow signaldb.WorkflowRef `json:"workflow" temporaljson:"workflow,omitzero,omitempty"`

	// Signals emitted by this emitter
	Signals []QueueSignal `json:"-" gorm:"foreignKey:EmitterID" temporaljson:"signals,omitzero,omitempty"`
}

func (*QueueEmitter) BeforeCreate ¶ added in v0.19.850

func (r *QueueEmitter) BeforeCreate(tx *gorm.DB) error

func (*QueueEmitter) HasFired ¶ added in v0.19.894

func (r *QueueEmitter) HasFired() bool

HasFired returns true if a fire-once emitter has already emitted its signal.

func (*QueueEmitter) Indexes ¶ added in v0.19.850

func (r *QueueEmitter) Indexes(db *gorm.DB) []migrations.Index

func (*QueueEmitter) IsFireOnce ¶ added in v0.19.894

func (r *QueueEmitter) IsFireOnce() bool

IsFireOnce returns true if the emitter is a one-shot emitter (scheduled or fire_once mode).

type QueueEmitterMode ¶ added in v0.19.850

type QueueEmitterMode string
const (
	// QueueEmitterModeCron emits signals on a recurring cron schedule
	QueueEmitterModeCron QueueEmitterMode = "cron"
	// QueueEmitterModeScheduled emits a signal once at a scheduled time, then stops
	QueueEmitterModeScheduled QueueEmitterMode = "scheduled"
	// QueueEmitterModeFireOnce emits a signal once at the scheduled time, then stops.
	// Semantically equivalent to scheduled mode but indicates the emitter is a one-shot timer.
	QueueEmitterModeFireOnce QueueEmitterMode = "fire_once"
)

type QueueSignal ¶

type QueueSignal struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID *string `json:"org_id,omitempty" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	QueueID string `` /* 126-byte string literal not displayed */
	Queue   Queue  `json:"queue"`

	// Optional: if this signal was emitted by an emitter
	EmitterID *string       `json:"emitter_id,omitzero" gorm:"type:text;index:idx_queue_signal_emitter_id" temporaljson:"emitter_id,omitzero,omitempty"`
	Emitter   *QueueEmitter `json:"-" gorm:"constraint:OnDelete:SET NULL;" temporaljson:"emitter,omitzero,omitempty"`

	OwnerID   string `` /* 126-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	Status CompositeStatus     `json:"status"`
	Type   signal.SignalType   `json:"type"`
	Signal signaldb.SignalData `json:"signal" temporaljson:"-"`

	Workflow signaldb.WorkflowRef `json:"workflow"`

	Enqueued bool `json:"enqueued" gorm:"default:false;not null" temporaljson:"enqueued,omitzero,omitempty"`

	SignalContext queuecctx.SignalContext `json:"signal_context" gorm:"type:jsonb;default:null" temporaljson:"signal_context,omitzero,omitempty"`

	ExecutionCount int `json:"execution_count" gorm:"default:0;not null" temporaljson:"execution_count,omitzero,omitempty"`
}

func (*QueueSignal) BeforeCreate ¶

func (r *QueueSignal) BeforeCreate(tx *gorm.DB) error

func (*QueueSignal) Indexes ¶

func (r *QueueSignal) Indexes(db *gorm.DB) []migrations.Index

type ReleaseStatus ¶

type ReleaseStatus string
const (
	ReleaseStatusPlanning       ReleaseStatus = "planning"
	ReleaseStatusError          ReleaseStatus = "error"
	ReleaseStatusActive         ReleaseStatus = "active"
	ReleaseStatusProvisioning   ReleaseStatus = "provisioning"
	ReleaseStatusDeprovisioning ReleaseStatus = "deprovisioning"

	ReleaseStatusSyncing   ReleaseStatus = "syncing"
	ReleaseStatusExecuting ReleaseStatus = "executing"
)
const (
	StatusProvisioning   ReleaseStatus = "provisioning"
	StatusDeprovisioning ReleaseStatus = "deprovisioning"
	StatusSyncing        ReleaseStatus = "syncing"
	StatusExecuting      ReleaseStatus = "executing"
)

release specific statuses

type Role ¶

type Role struct {
	ID          string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"notnull;defaultnull" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `temporaljson:"created_by,omitzero,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	Accounts []Account `gorm:"many2many:account_roles;constraint:OnDelete:CASCADE;" json:"-" temporaljson:"accounts,omitzero,omitempty"`

	// NOTE: not all roles have to belong to an org, this is mainly for historical reasons.
	OrgID generics.NullString `json:"org_id,omitzero" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   *Org                `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	RoleType RoleType `json:"role_type,omitzero" gorm:"defaultnull;notnull" temporaljson:"role_type,omitzero,omitempty"`

	Policies []Policy `json:"policies,omitzero" temporaljson:"policies,omitzero,omitempty"`
}

func (*Role) AfterQuery ¶

func (a *Role) AfterQuery(tx *gorm.DB) error

func (*Role) BeforeCreate ¶

func (a *Role) BeforeCreate(tx *gorm.DB) error

func (*Role) Indexes ¶

func (a *Role) Indexes(db *gorm.DB) []migrations.Index

type RoleType ¶

type RoleType string
const (
	// user roles
	RoleTypeOrgAdmin   RoleType = "org_admin"
	RoleTypeOrgSupport RoleType = "org_support"

	// service account roles
	RoleTypeInstaller       RoleType = "installer"
	RoleTypeRunner          RoleType = "runner"
	RoleTypeHostedInstaller RoleType = "hosted-installer"
)

type Runner ¶

type Runner struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"index:idx_app_name,unique" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_runner_name,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	Status            RunnerStatus    `json:"status,omitzero" gorm:"not null;default null" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string          `json:"status_description,omitzero" gorm:"not null;default null" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	Warnings pq.StringArray `json:"warnings,omitempty" gorm:"type:text[];default:'{}'" swaggertype:"array,string" temporaljson:"warnings,omitempty"`

	RunnerGroupID string      `json:"runner_group_id,omitzero" gorm:"index:idx_runner_name,unique" temporaljson:"runner_group_id,omitzero,omitempty"`
	RunnerGroup   RunnerGroup `json:"runner_group,omitzero" temporaljson:"runner_group,omitzero,omitempty"`

	Name        string `json:"name,omitzero" gorm:"index:idx_runner_name,unique" temporaljson:"name,omitzero,omitempty"`
	DisplayName string `json:"display_name,omitzero" gorm:"not null;default null" temporaljson:"display_name,omitzero,omitempty"`

	Jobs       []RunnerJob       `json:"jobs,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"jobs,omitzero,omitempty"`
	Operations []RunnerOperation `json:"operations,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"operations,omitzero,omitempty"`

	RunnerJob *RunnerJob `json:"runner_job,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_job,omitzero,omitempty"`

	// Queues holds per-job-group queues created when parallel-runner-jobs feature flag is enabled.
	Queues []Queue `json:"queues,omitzero" gorm:"polymorphic:Owner;polymorphicValue:runners" temporaljson:"queues,omitzero,omitempty"`
}

func (*Runner) BeforeCreate ¶

func (r *Runner) BeforeCreate(tx *gorm.DB) error

func (*Runner) GetQueueForGroup ¶ added in v0.19.872

func (r *Runner) GetQueueForGroup(group RunnerJobGroup) *Queue

GetQueueForGroup returns the queue for the given job group from the runner's preloaded Queues slice. Returns nil if no queue exists for the group (e.g. feature flag was off at runner creation time).

func (*Runner) Indexes ¶

func (r *Runner) Indexes(db *gorm.DB) []migrations.Index

type RunnerGroup ¶

type RunnerGroup struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `gorm:"index:idx_runner_group_owner" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"default null;not null" temporaljson:"org_id,omitzero,omitempty"`

	// parent can org, install or in the future, builtin runner group
	OwnerID   string `json:"owner_id,omitzero" gorm:"index:idx_runner_group_owner;notnull;default null" temporaljson:"owner_id,omitzero,omitempty"`
	OwnerType string `json:"owner_type,omitzero" gorm:"notnull;default null" temporaljson:"owner_type,omitzero,omitempty"`

	Runners  []Runner            `json:"runners,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"runners,omitzero,omitempty"`
	Settings RunnerGroupSettings `json:"settings,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"settings,omitzero,omitempty"`
	Type     RunnerGroupType     `json:"type,omitzero" gorm:"notnull;defaultnull" temporaljson:"type,omitzero,omitempty"`
	Platform AppRunnerType       `json:"platform,omitzero" gorm:"notnull;defaultnull" temporaljson:"platform,omitzero,omitempty"`
}

func (*RunnerGroup) BeforeCreate ¶

func (r *RunnerGroup) BeforeCreate(tx *gorm.DB) error

func (*RunnerGroup) EventLoops ¶

func (r *RunnerGroup) EventLoops() []bulk.EventLoop

func (*RunnerGroup) Indexes ¶

func (r *RunnerGroup) Indexes(db *gorm.DB) []migrations.Index

type RunnerGroupSettings ¶

type RunnerGroupSettings struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_runner_group_settings,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"index:idx_app_name,unique" temporaljson:"org_id,omitzero,omitempty"`

	RunnerGroupID string `` /* 127-byte string literal not displayed */

	// configuration for deploying the runner
	ContainerImageURL  string `json:"container_image_url,omitzero" gorm:"default null;not null" temporaljson:"container_image_url,omitzero,omitempty"`
	ContainerImageTag  string `json:"container_image_tag,omitzero" gorm:"default null;not null" temporaljson:"container_image_tag,omitzero,omitempty"`
	ContainerMaxUptime int    `json:"container_max_uptime,omitzero" gorm:"default: 14400;" temporaljson:"container_max_uptime,omitzero,omitempty"`
	ExpectedVersion    string `json:"-" gorm:"-" temporaljson:"expected_version,omitzero,omitempty"`
	RunnerAPIURL       string `json:"runner_api_url,omitzero" gorm:"default null;not null" temporaljson:"runner_apiurl,omitzero,omitempty"`

	// configuration for managing the runner binary version (for mng mode, not the install runner)
	BinaryVersion string `json:"binary_version,omitzero" gorm:"default null;" temporaljson:"binary_version,omitzero,omitempty"`
	VMMaxUptime   int    `json:"vm_max_uptime,omitzero" gorm:"default: 604800;" temporaljson:"vm_max_uptime,omitzero,omitempty"`

	// configuration for managing the runner server side
	SandboxMode bool `json:"sandbox_mode,omitzero" temporaljson:"sandbox_mode,omitzero,omitempty"`

	// Various settings for the runner to handle internally
	HeartBeatTimeout           time.Duration `` /* 140-byte string literal not displayed */
	OTELCollectorConfiguration string        `` /* 129-byte string literal not displayed */

	EnableSentry  bool           `json:"enable_sentry,omitzero" temporaljson:"enable_sentry,omitzero,omitempty"`
	EnableMetrics bool           `json:"enable_metrics,omitzero" temporaljson:"enable_metrics,omitzero,omitempty"`
	EnableLogging bool           `json:"enable_logging,omitzero" temporaljson:"enable_logging,omitzero,omitempty"`
	LoggingLevel  string         `json:"logging_level,omitzero" temporaljson:"logging_level,omitzero,omitempty"`
	Groups        pq.StringArray `json:"groups,omitzero" gorm:"type:text[];default:'{}'" swaggertype:"array,string" temporaljson:"groups,omitzero,omitempty"` // the job loop groups the runner should poll for

	// Metadata is used as both log and metric tags/attributes in the runner when emitting data
	Metadata pgtype.Hstore `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`

	// JobGroupParallelism maps RunnerJobGroup names to max-in-flight counts for queue-based job routing.
	// e.g., {"build": "2", "deploy": "1"}. Only used when parallel-runner-jobs feature flag is on.
	JobGroupParallelism pgtype.Hstore `` /* 140-byte string literal not displayed */

	// org runner specifics
	OrgAWSIAMRoleARN         string `json:"org_aws_iam_role_arn,omitzero" temporaljson:"org_awsiam_role_arn,omitzero,omitempty"`
	OrgGCPServiceAccount     string `json:"org_gcp_service_account,omitzero" temporaljson:"org_gcp_service_account,omitzero,omitempty"`
	OrgAzureClientID         string `json:"org_azure_client_id,omitzero" temporaljson:"org_azure_client_id,omitzero,omitempty"`
	OrgK8sServiceAccountName string `json:"org_k8s_service_account_name,omitzero" temporaljson:"org_k_8_s_service_account_name,omitzero,omitempty"`

	// aws runner specifics runner-v2
	AWSInstanceType        string `json:"aws_instance_type,omitzero" temporaljson:"aws_instance_type,omitzero,omitempty"`
	AWSMaxInstanceLifetime int    `` // Deprecated: instance refresh is now handled by a backend cron, not ASG MaxInstanceLifetime.
	/* 219-byte string literal not displayed */
	AWSCloudformationStackType string        `json:"aws_cloudformation_stack_type,omitzero" temporaljson:"aws_cloudformation_stack_type,omitzero,omitempty"`
	AWSTags                    pgtype.Hstore `json:"aws_tags,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"aws_tags,omitzero,omitempty"`
	LocalAWSIAMRoleARN         string        `json:"local_aws_iam_role_arn,omitzero" temporaljson:"local_awsiam_role_arn,omitzero,omitempty"`

	// RunnerBinaryURL overrides the URL used to download the runner binary onto the
	// host for mng mode. When empty, defaults to the S3 artifacts URL.
	RunnerBinaryURL string `json:"runner_binary_url,omitzero" gorm:"default null" temporaljson:"runner_binary_url,omitzero,omitempty"`

	// platform variable for use in the runner
	Platform CloudPlatform `json:"platform" temporaljson:"-" gorm:"-" swaggertype:"string"`
}

func (*RunnerGroupSettings) AfterQuery ¶

func (r *RunnerGroupSettings) AfterQuery(tx *gorm.DB) error

func (*RunnerGroupSettings) BeforeCreate ¶

func (r *RunnerGroupSettings) BeforeCreate(tx *gorm.DB) error

func (*RunnerGroupSettings) Indexes ¶

func (i *RunnerGroupSettings) Indexes(db *gorm.DB) []migrations.Index

func (*RunnerGroupSettings) MaxInFlightForGroup ¶ added in v0.19.872

func (r *RunnerGroupSettings) MaxInFlightForGroup(group RunnerJobGroup) int

MaxInFlightForGroup returns the configured max-in-flight for a job group, defaulting to 1.

func (*RunnerGroupSettings) Views ¶

func (i *RunnerGroupSettings) Views(db *gorm.DB) []migrations.View

type RunnerGroupType ¶

type RunnerGroupType string
const (
	RunnerGroupTypeInstall RunnerGroupType = "install"
	RunnerGroupTypeOrg     RunnerGroupType = "org"
)

type RunnerHealthCheck ¶

type RunnerHealthCheck struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"type:DateTime64(9);codec:Delta(8),ZSTD(1)" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"type:DateTime64(9);codec:Delta(8),ZSTD(1)" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	RunnerID     string       `json:"runner_id,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"runner_id,omitzero,omitempty"`
	ProcessID    string       `json:"process_id,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"process_id,omitzero,omitempty"`
	RunnerJob    RunnerJob    `json:"runner_job,omitzero" gorm:"polymorphic:Owner;" temporaljson:"runner_job,omitzero,omitempty"`
	RunnerStatus RunnerStatus `json:"status,omitzero" gorm:"codec:ZSTD(1)" temporaljson:"runner_status,omitzero,omitempty"`

	MinuteBucket time.Time `` /* 141-byte string literal not displayed */

	RunnerStatusCode int `json:"status_code" gorm:"-" temporaljson:"runner_status_code,omitzero,omitempty"`

	Process RunnerProcessType `json:"process" gorm:"not null;default:''" swaggertype:"string"`
}

clickhouse table

func (*RunnerHealthCheck) AfterQuery ¶

func (r *RunnerHealthCheck) AfterQuery(tx *gorm.DB) error

func (*RunnerHealthCheck) BeforeCreate ¶

func (r *RunnerHealthCheck) BeforeCreate(tx *gorm.DB) error

func (RunnerHealthCheck) GetTableClusterOptions ¶

func (r RunnerHealthCheck) GetTableClusterOptions() string

func (RunnerHealthCheck) GetTableOptions ¶

func (r RunnerHealthCheck) GetTableOptions() string

func (*RunnerHealthCheck) UseView ¶

func (*RunnerHealthCheck) UseView() bool

func (*RunnerHealthCheck) ViewVersion ¶

func (*RunnerHealthCheck) ViewVersion() string

func (*RunnerHealthCheck) Views ¶

func (i *RunnerHealthCheck) Views(db *gorm.DB) []migrations.View

type RunnerHeartBeat ¶

type RunnerHeartBeat struct {
	ID          string `gorm:"primary_key" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	RunnerID  string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	ProcessID string `json:"process_id,omitzero" gorm:"not null;default:''" temporaljson:"process_id,omitzero,omitempty"`

	AliveTime time.Duration `json:"alive_time,omitzero" swaggertype:"primitive,integer" temporaljson:"alive_time,omitzero,omitempty"`
	Version   string        `json:"version,omitzero" temporaljson:"version,omitzero,omitempty"`
	StartedAt time.Time     `json:"started_at,omitzero" gorm:"-" temporaljson:"started_at,omitzero,omitempty"`

	Process RunnerProcessType `json:"process" gorm:"not null;default:''" swaggertype:"string"`
}

clickhouse table

func (*RunnerHeartBeat) AfterQuery ¶

func (r *RunnerHeartBeat) AfterQuery(tx *gorm.DB) error

func (*RunnerHeartBeat) BeforeCreate ¶

func (r *RunnerHeartBeat) BeforeCreate(tx *gorm.DB) error

func (RunnerHeartBeat) GetTableClusterOptions ¶

func (r RunnerHeartBeat) GetTableClusterOptions() string

func (RunnerHeartBeat) GetTableOptions ¶

func (r RunnerHeartBeat) GetTableOptions() string

type RunnerJob ¶

type RunnerJob struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `` /* 187-byte string literal not displayed */
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_runner_name,unique;" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"index:idx_app_name,unique" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	RunnerID        string  `` /* 144-byte string literal not displayed */
	RunnerProcessID *string `json:"runner_process_id,omitempty" gorm:"index" temporaljson:"runner_process_id,omitzero,omitempty"`
	OwnerID         string  `` /* 168-byte string literal not displayed */
	OwnerType       string  `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`
	LogStreamID     *string `json:"log_stream_id,omitzero" temporaljson:"log_stream_id,omitzero,omitempty"`

	// queue timeout is how long a job can be queued, before being made available
	QueueTimeout time.Duration `` /* 138-byte string literal not displayed */
	// available timeout is how long a job can be marked as "available" before being requeued
	AvailableTimeout time.Duration `` /* 146-byte string literal not displayed */
	// execution timeout is how long a job can be marked as "exeucuting" before being requeued
	ExecutionTimeout time.Duration `` /* 146-byte string literal not displayed */

	// overall timeout is how long a job can be attempted, before being cancelled
	OverallTimeout time.Duration `` /* 142-byte string literal not displayed */

	MaxExecutions int `json:"max_executions,omitzero" gorm:"not null;default null" temporaljson:"max_executions,omitzero,omitempty"`

	Status            RunnerJobStatus `` /* 131-byte string literal not displayed */
	StatusDescription string          `json:"status_description,omitzero" gorm:"not null;default null" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	Type      RunnerJobType          `json:"type,omitzero" gorm:"default null;not null" temporaljson:"type,omitzero,omitempty"`
	Group     RunnerJobGroup         `` /* 129-byte string literal not displayed */
	Operation RunnerJobOperationType `json:"operation,omitzero" gorm:"default:null;not null" temporaljson:"operation,omitzero,omitempty"`

	Executions []RunnerJobExecution `json:"executions,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"executions,omitzero,omitempty"`
	Plan       RunnerJobPlan        `json:"json" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"plan,omitzero,omitempty"`

	InstallRoleUsage *InstallRoleUsage `json:"install_role_usage,omitzero" gorm:"foreignKey:RunnerJobID;references:ID"`

	StartedAt  time.Time `json:"started_at,omitzero" gorm:"default:null" temporaljson:"started_at,omitzero,omitempty"`
	FinishedAt time.Time `json:"finished_at,omitzero" gorm:"default:null" temporaljson:"finished_at,omitzero,omitempty"`

	Metadata pgtype.Hstore `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`

	ExecutionCount            int    `json:"execution_count,omitzero" gorm:"->;-:migration" temporaljson:"execution_count,omitzero,omitempty"`
	FinalRunnerJobExecutionID string `` /* 131-byte string literal not displayed */
	Outputs                   []byte `` /* 134-byte string literal not displayed */

	ExecutionTime time.Duration          `json:"execution_time,omitzero" gorm:"-" swaggertype:"primitive,integer" temporaljson:"execution_time,omitzero,omitempty"`
	Execution     *RunnerJobExecution    `json:"-" gorm:"-" temporaljson:"execution,omitzero,omitempty"`
	ParsedOutputs map[string]interface{} `json:"outputs,omitzero" gorm:"-" temporaljson:"parsed_outputs,omitzero,omitempty"`

	// foreign keys
	States      []TerraformWorkspaceState     `faker:"-" json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"states,omitzero,omitempty"`
	LockHistory []TerraformWorkspaceLock      `faker:"-" json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"lock_history,omitzero,omitempty"`
	StateJSON   []TerraformWorkspaceStateJSON `json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"statesjson,omitzero,omitempty"`
}

func (*RunnerJob) AfterQuery ¶

func (r *RunnerJob) AfterQuery(tx *gorm.DB) error

func (*RunnerJob) BeforeCreate ¶

func (r *RunnerJob) BeforeCreate(tx *gorm.DB) error

func (*RunnerJob) Indexes ¶

func (a *RunnerJob) Indexes(db *gorm.DB) []migrations.Index

func (*RunnerJob) UseView ¶

func (*RunnerJob) UseView() bool

func (*RunnerJob) ViewVersion ¶

func (*RunnerJob) ViewVersion() string

func (*RunnerJob) Views ¶

func (i *RunnerJob) Views(db *gorm.DB) []migrations.View

type RunnerJobExecution ¶

type RunnerJobExecution struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_runner_job_execution_runner_job_id,type:btree" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	RunnerJobID string    `` /* 160-byte string literal not displayed */
	RunnerJob   RunnerJob `json:"-" temporaljson:"runner_job,omitzero,omitempty"`

	Status   RunnerJobExecutionStatus `` /* 140-byte string literal not displayed */
	StatusV2 CompositeStatus          `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`

	Result  *RunnerJobExecutionResult  `json:"result,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"result,omitzero,omitempty"`
	Outputs *RunnerJobExecutionOutputs `json:"outputs,omitzero" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"outputs,omitzero,omitempty"`

	// Metadata is used to store additional information about the execution {e.g., client version.}
	Metadata pgtype.Hstore `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`
}

each runner job can be retried one or more times each execution will be tracked and have logs, metrics, events and more

func (*RunnerJobExecution) BeforeCreate ¶

func (r *RunnerJobExecution) BeforeCreate(tx *gorm.DB) error

func (*RunnerJobExecution) Indexes ¶

func (i *RunnerJobExecution) Indexes(db *gorm.DB) []migrations.Index

type RunnerJobExecutionOutputs ¶

type RunnerJobExecutionOutputs struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	RunnerJobExecutionID string             `` /* 170-byte string literal not displayed */
	RunnerJobExecution   RunnerJobExecution `json:"-" temporaljson:"runner_job_execution,omitzero,omitempty"`

	Outputs []byte `json:"outputs_json,omitzero" gorm:"type:jsonb" swaggertype:"string" temporaljson:"outputs,omitzero,omitempty"`

	ParsedOutputs map[string]interface{} `json:"outputs,omitzero" gorm:"-" swaggertype:"object,object" temporaljson:"parsed_outputs,omitzero,omitempty"`
}

func (*RunnerJobExecutionOutputs) AfterQuery ¶

func (r *RunnerJobExecutionOutputs) AfterQuery(tx *gorm.DB) error

func (*RunnerJobExecutionOutputs) BeforeCreate ¶

func (r *RunnerJobExecutionOutputs) BeforeCreate(tx *gorm.DB) error

func (*RunnerJobExecutionOutputs) Indexes ¶

func (r *RunnerJobExecutionOutputs) Indexes(db *gorm.DB) []migrations.Index

type RunnerJobExecutionResult ¶

type RunnerJobExecutionResult struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_job_execution_result,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	RunnerJobExecutionID string `` /* 162-byte string literal not displayed */

	Success bool `json:"success,omitzero" temporaljson:"success,omitzero,omitempty"`

	ErrorCode     int           `json:"error_code,omitzero" temporaljson:"error_code,omitzero,omitempty"`
	ErrorMetadata pgtype.Hstore `` /* 126-byte string literal not displayed */

	Contents        string `json:"contents,omitzero" gorm:"string" swaggertype:"string" temporaljson:"contents"`
	ContentsDisplay []byte `json:"contents_display,omitzero" gorm:"type:jsonb" swaggertype:"string" temporaljson:"-"`

	// columns for storage of gzipped contents and plans
	ContentsGzip        []byte `json:"contents_gzip,omitzero" gorm:"type:bytea" swaggertype:"string" temporaljson:"contents_binary"`
	ContentsDisplayGzip []byte `json:"contents_display_gzip,omitzero" gorm:"type:bytea" swaggertype:"string" temporaljson:"-"`
}

func (*RunnerJobExecutionResult) BeforeCreate ¶

func (r *RunnerJobExecutionResult) BeforeCreate(tx *gorm.DB) error

func (*RunnerJobExecutionResult) GetContentsB64String ¶

func (r *RunnerJobExecutionResult) GetContentsB64String() (string, error)

func (*RunnerJobExecutionResult) GetContentsDecompressedBytes ¶ added in v0.19.783

func (r *RunnerJobExecutionResult) GetContentsDecompressedBytes() ([]byte, error)

func (*RunnerJobExecutionResult) GetContentsDisplayDecompressedBytes ¶

func (r *RunnerJobExecutionResult) GetContentsDisplayDecompressedBytes() ([]byte, error)

func (*RunnerJobExecutionResult) GetContentsDisplayString ¶

func (r *RunnerJobExecutionResult) GetContentsDisplayString() (string, error)

func (*RunnerJobExecutionResult) Indexes ¶

func (r *RunnerJobExecutionResult) Indexes(db *gorm.DB) []migrations.Index

type RunnerJobExecutionStatus ¶

type RunnerJobExecutionStatus string
const (
	// the following statuses denote an in-progress execution
	// initializing means the runner is starting the job
	RunnerJobExecutionStatusPending RunnerJobExecutionStatus = "pending"
	// initializing means the runner is starting the job
	RunnerJobExecutionStatusInitializing RunnerJobExecutionStatus = "initializing"
	// means the runner is in progress
	RunnerJobExecutionStatusInProgress RunnerJobExecutionStatus = "in-progress"
	// means the runner is cleaning up
	RunnerJobExecutionStatusCleaningUp RunnerJobExecutionStatus = "cleaning-up"

	// the following statuses denote a finished execution
	// once a runner has finished the job successfully
	RunnerJobExecutionStatusFinished RunnerJobExecutionStatus = "finished"
	// once a runner has failed the job
	RunnerJobExecutionStatusFailed RunnerJobExecutionStatus = "failed"
	// once the job has timed out
	RunnerJobExecutionStatusTimedOut RunnerJobExecutionStatus = "timed-out"
	// not attempted is when the runner can not attempt
	RunnerJobExecutionStatusNotAttempted RunnerJobExecutionStatus = "not-attempted"
	// when a job is cancelled
	RunnerJobExecutionStatusCancelled RunnerJobExecutionStatus = "cancelled"
	// when a job status is unknown
	RunnerJobExecutionStatusUnknown RunnerJobExecutionStatus = "unknown"
)

func (RunnerJobExecutionStatus) IsRunning ¶

func (r RunnerJobExecutionStatus) IsRunning() bool

type RunnerJobGroup ¶

type RunnerJobGroup string
const (
	// a health check is a runner health check, not to be confused with a heart beat.
	RunnerJobGroupHealthChecks RunnerJobGroup = "health-checks"

	// component groups for builds, syncing and deploys
	RunnerJobGroupSync   RunnerJobGroup = "sync"
	RunnerJobGroupBuild  RunnerJobGroup = "build"
	RunnerJobGroupDeploy RunnerJobGroup = "deploy"

	// sandbox jobs such as provision, deprovision.
	RunnerJobGroupSandbox RunnerJobGroup = "sandbox"

	// runner jobs such as provision, deprovision and pre-flight checks.
	RunnerJobGroupRunner RunnerJobGroup = "runner"

	// operations jobs such as shutdown, restart, noop and update settings.
	RunnerJobGroupOperations RunnerJobGroup = "operations"
	RunnerJobGroupManagement RunnerJobGroup = "management"

	// actions workflows
	RunnerJobGroupActions RunnerJobGroup = "actions"

	RunnerJobGroupUnknown RunnerJobGroup = ""
	RunnerJobGroupAny     RunnerJobGroup = "any"
)

type RunnerJobOperationType ¶

type RunnerJobOperationType string

operation types that correspond to the type of operation

const (
	// exec is used for shut down, scripts and more. It is mainly ignored as those job types do not really need to
	// think about operations
	RunnerJobOperationTypeExec RunnerJobOperationType = "exec"

	// update build
	RunnerJobOperationTypeBuild RunnerJobOperationType = "build"

	// the following operations are for common use cases for things such as helm, terraform and other jobs that have
	// multiple operation types.
	RunnerJobOperationTypeCreateApplyPlan    RunnerJobOperationType = "create-apply-plan"
	RunnerJobOperationTypeCreateTeardownPlan RunnerJobOperationType = "create-teardown-plan"
	RunnerJobOperationTypeApplyPlan          RunnerJobOperationType = "apply-plan"

	RunnerJobOperationTypeUnknown RunnerJobOperationType = "unknown"
)

type RunnerJobPlan ¶

type RunnerJobPlan struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" gorm:"index:idx_runner_job_plan,unique" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	RunnerJobID string `` /* 137-byte string literal not displayed */

	PlanJSON      string                  `json:"plan_json,omitzero" temporaljson:"plan_json,omitzero,omitempty"`
	CompositePlan plantypes.CompositePlan `json:"composite_plan,omitzero" gorm:"type:jsonb" temporaljson:"composite_plan,omitzero,omitempty"`
}

func (*RunnerJobPlan) BeforeCreate ¶

func (r *RunnerJobPlan) BeforeCreate(tx *gorm.DB) error

func (*RunnerJobPlan) Indexes ¶

func (r *RunnerJobPlan) Indexes(db *gorm.DB) []migrations.Index

type RunnerJobStatus ¶

type RunnerJobStatus string
const (
	// all jobs are set as queued to start, and the event loop should update them to available.
	RunnerJobStatusQueued RunnerJobStatus = "queued"
	// the runner queries jobs that are available, to find something to work on
	RunnerJobStatusAvailable RunnerJobStatus = "available"
	// once a runner is actively working on the job
	RunnerJobStatusInProgress RunnerJobStatus = "in-progress"
	// once a runner has finished the job
	RunnerJobStatusFinished RunnerJobStatus = "finished"

	// once a runner has failed the job
	RunnerJobStatusFailed RunnerJobStatus = "failed"
	// once the job has timed out
	RunnerJobStatusTimedOut RunnerJobStatus = "timed-out"
	// not attempted is when the runner can not attempt
	RunnerJobStatusNotAttempted RunnerJobStatus = "not-attempted"
	// cancelled
	RunnerJobStatusCancelled RunnerJobStatus = "cancelled"
	// status is not known
	RunnerJobStatusUnknown RunnerJobStatus = "unknown"
)

type RunnerJobType ¶

type RunnerJobType string
const (
	// a health check is a runner health check, not to be confused with a heart beat
	RunnerJobTypeHealthCheck RunnerJobType = "health-check"

	// build job types
	RunnerJobTypeDockerBuild             RunnerJobType = "docker-build"
	RunnerJobTypeContainerImageBuild     RunnerJobType = "container-image-build"
	RunnerJobTypeTerraformModuleBuild    RunnerJobType = "terraform-module-build"
	RunnerJobTypeHelmChartBuild          RunnerJobType = "helm-chart-build"
	RunnerJobTypeKubernetesManifestBuild RunnerJobType = "kubernetes-manifest-build"
	RunnerJobTypePulumiBuild             RunnerJobType = "pulumi-build"
	RunnerJobTypeNOOPBuild               RunnerJobType = "noop-build"
	RunnerJobTypeSandboxBuild            RunnerJobType = "sandbox-build"

	// sync job types
	RunnerJobTypeOCISync            RunnerJobType = "oci-sync"
	RunnerJobTypeNOOPSync           RunnerJobType = "noop-sync"
	RunnerJobTypeFetchImageMetadata RunnerJobType = "fetch-image-metadata"

	// deploy job types
	RunnerJobTypeTerraformDeploy          RunnerJobType = "terraform-deploy"
	RunnerJobTypeHelmChartDeploy          RunnerJobType = "helm-chart-deploy"
	RunnerJobTypeJobDeploy                RunnerJobType = "job-deploy"
	RunnerJobTypeKubrenetesManifestDeploy RunnerJobType = "kubernetes-manifest-deploy"
	RunnerJobTypePulumiDeploy             RunnerJobType = "pulumi-deploy"
	RunnerJobTypeJobNOOPDeploy            RunnerJobType = "noop-deploy"

	// operations job types
	RunnerJobTypeShutDown      RunnerJobType = "shut-down"
	RunnerJobTypeUpdateVersion RunnerJobType = "update-version"
	RunnerJobTypeNOOP          RunnerJobType = "noop"

	// TODO(fd): revisit these names
	// management job types
	// RunnerJobTypeMngVMStats             RunnerJobType = "mng-vm-stats"          // log some vm stats/metrics
	RunnerJobTypeMngVMShutDown          RunnerJobType = "mng-vm-shut-down"          // shut down the vm
	RunnerJobTypeMngShutDown            RunnerJobType = "mng-shut-down"             // shutdown the runner mng process (usually triggers restart)
	RunnerJobTypeMngRunnerUpdateVersion RunnerJobType = "mng-runner-update-version" // update the runner image/version (check for changes and update)
	RunnerJobTypeMngRunnerRestart       RunnerJobType = "mng-runner-restart"        // restart the runner systemctl service (technically, a duplicate. runner can restart self.)
	RunnerJobTypeMngFetchToken          RunnerJobType = "mng-fetch-token"           // fetch authentication token via AWS presigned requests

	// sandbox job types
	RunnerJobTypeSandboxTerraform     RunnerJobType = "sandbox-terraform"
	RunnerJobTypeSandboxTerraformPlan RunnerJobType = "sandbox-terraform-plan"
	RunnerJobTypeSandboxPulumi        RunnerJobType = "sandbox-pulumi"
	RunnerJobTypeSandboxSyncSecrets   RunnerJobType = "sandbox-sync-secrets"

	// runner job types
	RunnerJobTypeRunnerHelm      RunnerJobType = "runner-helm"
	RunnerJobTypeRunnerTerraform RunnerJobType = "runner-terraform"
	RunnerJobTypeRunnerLocal     RunnerJobType = "runner-local"

	// actions job types
	RunnerJobTypeActionsWorkflowRun RunnerJobType = "actions-workflow"

	// unknown
	RunnerJobTypeUnknown = "unknown"
)

func (RunnerJobType) Group ¶

func (r RunnerJobType) Group() RunnerJobGroup

type RunnerOperation ¶

type RunnerOperation struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// job details
	LogStream LogStream `json:"log_stream,omitzero" gorm:"polymorphic:Owner;" temporaljson:"log_stream,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	RunnerID string `json:"runner_id,omitzero" temporaljson:"runner_id,omitzero,omitempty"`
	Runner   Runner `json:"-" faker:"-" temporaljson:"runner,omitzero,omitempty"`

	OpType            RunnerOperationType   `json:"operation_type,omitzero" temporaljson:"op_type,omitzero,omitempty"`
	Status            RunnerOperationStatus `json:"status,omitzero" gorm:"notnull" swaggertype:"string" temporaljson:"status,omitzero,omitempty"`
	StatusDescription string                `json:"status_description,omitzero" gorm:"notnull" temporaljson:"status_description,omitzero,omitempty"`
	StatusV2          CompositeStatus       `json:"status_v2,omitzero" gorm:"type:jsonb" temporaljson:"status_v2,omitzero,omitempty"`
}

func (*RunnerOperation) BeforeCreate ¶

func (i *RunnerOperation) BeforeCreate(tx *gorm.DB) error

func (*RunnerOperation) Indexes ¶

func (i *RunnerOperation) Indexes(db *gorm.DB) []migrations.Index

type RunnerOperationStatus ¶

type RunnerOperationStatus string
const (
	RunnerOperationStatusFinished   RunnerOperationStatus = "finished"
	RunnerOperationStatusInProgress RunnerOperationStatus = "in-progress"
	RunnerOperationStatusPending    RunnerOperationStatus = "pending"
	RunnerOperationStatusError      RunnerOperationStatus = "error"
)

type RunnerOperationType ¶

type RunnerOperationType string
const (
	RunnerOperationTypeProvision               RunnerOperationType = "provision"
	RunnerOperationTypeProvisionServiceAccount RunnerOperationType = "provision_service_account"
	RunnerOperationTypeReprovision             RunnerOperationType = "reprovision"
	RunnerOperationTypeDeprovision             RunnerOperationType = "deprovision"
)

type RunnerProcess ¶

type RunnerProcess struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero"`
	CreatedByID string  `gorm:"not null;default:null" json:"created_by_id,omitzero"`
	CreatedBy   Account `json:"-"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull"`
	DeletedAt soft_delete.DeletedAt `json:"-"`

	OrgID string `json:"org_id,omitzero" gorm:"index"`
	Org   Org    `json:"-"`

	RunnerID string `json:"runner_id,omitzero" gorm:"index"`
	Runner   Runner `json:"-"`

	Type RunnerProcessType `json:"type,omitzero" gorm:"not null"`

	CompositeStatus CompositeStatus `json:"composite_status,omitzero" gorm:"type:jsonb"`

	LogStreamID *string    `json:"log_stream_id,omitempty"`
	LogStream   *LogStream `json:"-"`

	Version            string     `json:"version,omitzero"`
	StartedAt          *time.Time `json:"started_at,omitempty"`
	InitialHealthCheck bool       `json:"initial_health_check,omitzero" gorm:"default:false"`

	Uptime time.Duration `json:"uptime,omitempty" gorm:"-" swaggertype:"primitive,integer"`

	// Warnings are computed server-side and not persisted.
	Warnings []string `json:"warnings,omitempty" gorm:"-"`

	// Labels are computed server-side and not persisted.
	Labels []string `json:"labels,omitempty" gorm:"-"`

	Shutdowns []RunnerProcessShutdown `json:"shutdowns,omitempty" gorm:"constraint:OnDelete:CASCADE;"`
}

func (*RunnerProcess) AfterQuery ¶ added in v0.19.894

func (r *RunnerProcess) AfterQuery(tx *gorm.DB) error

func (*RunnerProcess) BeforeCreate ¶ added in v0.19.894

func (r *RunnerProcess) BeforeCreate(tx *gorm.DB) error

func (*RunnerProcess) Indexes ¶ added in v0.19.894

func (r *RunnerProcess) Indexes(db *gorm.DB) []migrations.Index

func (*RunnerProcess) ProcessStatus ¶ added in v0.19.894

func (r *RunnerProcess) ProcessStatus() RunnerProcessStatus

type RunnerProcessShutdown ¶ added in v0.19.894

type RunnerProcessShutdown struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero"`
	CreatedByID string  `gorm:"not null;default:null" json:"created_by_id,omitzero"`
	CreatedBy   Account `json:"-"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull"`
	DeletedAt soft_delete.DeletedAt `json:"-"`

	OrgID string `json:"org_id,omitzero" gorm:"index"`
	Org   Org    `json:"-"`

	RunnerProcessID string `json:"runner_process_id,omitzero" gorm:"index;not null"`

	Type            RunnerProcessShutdownType `json:"type,omitzero" gorm:"not null"`
	CompositeStatus CompositeStatus           `json:"composite_status,omitzero" gorm:"type:jsonb"`

	// Status and StatusDescription are computed from CompositeStatus via AfterQuery.
	Status            RunnerProcessShutdownStatus `json:"status,omitzero" gorm:"-" swaggertype:"string"`
	StatusDescription string                      `json:"status_description,omitzero" gorm:"-"`

	Metadata pgtype.Hstore `json:"metadata,omitempty" gorm:"type:hstore"`
}

func (*RunnerProcessShutdown) AfterQuery ¶ added in v0.19.894

func (r *RunnerProcessShutdown) AfterQuery(tx *gorm.DB) error

func (*RunnerProcessShutdown) BeforeCreate ¶ added in v0.19.894

func (r *RunnerProcessShutdown) BeforeCreate(tx *gorm.DB) error

func (*RunnerProcessShutdown) Indexes ¶ added in v0.19.894

func (r *RunnerProcessShutdown) Indexes(db *gorm.DB) []migrations.Index

type RunnerProcessShutdownStatus ¶ added in v0.19.894

type RunnerProcessShutdownStatus string
const (
	RunnerProcessShutdownStatusRequested  RunnerProcessShutdownStatus = "requested"
	RunnerProcessShutdownStatusInProgress RunnerProcessShutdownStatus = "in-progress"
	RunnerProcessShutdownStatusCompleted  RunnerProcessShutdownStatus = "completed"
	RunnerProcessShutdownStatusFailed     RunnerProcessShutdownStatus = "failed"
	RunnerProcessShutdownStatusCancelled  RunnerProcessShutdownStatus = "cancelled"
)

type RunnerProcessShutdownType ¶ added in v0.19.894

type RunnerProcessShutdownType string
const (
	RunnerProcessShutdownTypeGraceful RunnerProcessShutdownType = "graceful"
	RunnerProcessShutdownTypeForce    RunnerProcessShutdownType = "force"
	RunnerProcessShutdownTypeRestart  RunnerProcessShutdownType = "restart"
)

type RunnerProcessStatus ¶ added in v0.19.894

type RunnerProcessStatus string
const (
	RunnerProcessStatusActive          RunnerProcessStatus = "active"
	RunnerProcessStatusOffline         RunnerProcessStatus = "offline"
	RunnerProcessStatusInactive        RunnerProcessStatus = "inactive"
	RunnerProcessStatusPendingShutdown RunnerProcessStatus = "pending-shutdown"
	RunnerProcessStatusShuttingDown    RunnerProcessStatus = "shutting-down"
	RunnerProcessStatusShutDown        RunnerProcessStatus = "shut-down"
	RunnerProcessStatusError           RunnerProcessStatus = "error"
	RunnerProcessStatusUnknown         RunnerProcessStatus = "unknown"
)

type RunnerProcessType ¶ added in v0.19.894

type RunnerProcessType string

RunnerProcessType distinguishes which process type is sending heartbeats/health checks. NOTE(fd): we have to implement Scan/Value so the gorm ch plugin doesn't complain

const (
	RunnerProcessTypeMng     RunnerProcessType = "mng"
	RunnerProcessTypeInstall RunnerProcessType = "install"
	RunnerProcessTypeBuild   RunnerProcessType = "build"
	RunnerProcessTypeOrg     RunnerProcessType = "org"
	RunnerProcessTypeUnknown RunnerProcessType = ""
)

func HeartBeatProcessForRunnerGroupType ¶ added in v0.19.872

func HeartBeatProcessForRunnerGroupType(gt RunnerGroupType) RunnerProcessType

HeartBeatProcessForRunnerGroupType maps a RunnerGroupType to the RunnerProcessType used for heartbeat lookups. Install runner groups use the "mng" process type, org runner groups use the "org" process type.

func InstallProcessForRunnerGroupType ¶ added in v0.19.894

func InstallProcessForRunnerGroupType(gt RunnerGroupType) RunnerProcessType

InstallProcessForRunnerGroupType maps a RunnerGroupType to the RunnerProcessType used for install-level health checking. Install runner groups use the "install" process type, org runner groups use the "org" process type.

func (*RunnerProcessType) Scan ¶ added in v0.19.894

func (rp *RunnerProcessType) Scan(value any) error

func (RunnerProcessType) Value ¶ added in v0.19.894

func (rp RunnerProcessType) Value() (driver.Value, error)

type RunnerStatus ¶

type RunnerStatus string
const (
	RunnerStatusError                   RunnerStatus = "error"
	RunnerStatusActive                  RunnerStatus = "active"
	RunnerStatusPending                 RunnerStatus = "pending"
	RunnerStatusProvisioning            RunnerStatus = "provisioning"
	RunnerStatusDeprovisioning          RunnerStatus = "deprovisioning"
	RunnerStatusDeprovisioned           RunnerStatus = "deprovisioned"
	RunnerStatusReprovisioning          RunnerStatus = "reprovisioning"
	RunnerStatusOffline                 RunnerStatus = "offline"
	RunnerStatusAwaitingInstallStackRun RunnerStatus = "awaiting-install-stack-run"

	RunnerStatusUnknown RunnerStatus = "unknown"
)

func (RunnerStatus) Code ¶

func (r RunnerStatus) Code() int

func (RunnerStatus) IsHealthy ¶

func (r RunnerStatus) IsHealthy() bool

func (RunnerStatus) String ¶

func (r RunnerStatus) String() string

type SandboxModeJobConfig ¶ added in v0.19.894

type SandboxModeJobConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull"`
	DeletedAt   soft_delete.DeletedAt `json:"-"`

	JobType   string `json:"job_type,omitzero" gorm:"notnull"`
	Operation string `json:"operation,omitempty" gorm:"default:''"`
	Enabled   bool   `json:"enabled" gorm:"default:true"`

	// Timing
	Duration      time.Duration `json:"duration,omitzero"`
	SleepDuration time.Duration `json:"sleep_duration,omitempty"`

	// Failure modes (simple toggles)
	ShouldError     bool `json:"should_error"`
	Panic           bool `json:"panic"`
	TriggerShutdown bool `json:"trigger_shutdown"`

	// Template references (keys into the templates package)
	LogTemplate         string `json:"log_template,omitempty"`
	PlanTemplate        string `json:"plan_template,omitempty"`
	PlanDisplayTemplate string `json:"plan_display_template,omitempty"`
	StateTemplate       string `json:"state_template,omitempty"`
	OutputTemplate      string `json:"output_template,omitempty"`
}

func (*SandboxModeJobConfig) BeforeCreate ¶ added in v0.19.894

func (s *SandboxModeJobConfig) BeforeCreate(tx *gorm.DB) error

func (*SandboxModeJobConfig) Indexes ¶ added in v0.19.894

func (s *SandboxModeJobConfig) Indexes(db *gorm.DB) []migrations.Index

type SandboxModeSignalConfig ¶ added in v0.19.894

type SandboxModeSignalConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull"`
	DeletedAt   soft_delete.DeletedAt `json:"-" gorm:"index:idx_sandbox_signal_config_unique,unique"`

	SignalType string `json:"signal_type,omitzero" gorm:"notnull;index:idx_sandbox_signal_config_unique,unique"`

	Enabled bool `json:"enabled" gorm:"default:false"`

	// Separate failure mode fields
	DeadlockSleep time.Duration `json:"deadlock_sleep,omitempty"` // blocks in a real sleep
	WorkflowSleep time.Duration `json:"workflow_sleep,omitempty"` // sleeps using workflow.Sleep
	Panic         bool          `json:"panic"`                    // triggers panic
	Error         string        `json:"error,omitempty"`          // returns error from Execute with this message
	ValidateError string        `json:"validate_error,omitempty"` // returns error from Validate with this message
}

func (*SandboxModeSignalConfig) BeforeCreate ¶ added in v0.19.894

func (s *SandboxModeSignalConfig) BeforeCreate(tx *gorm.DB) error

func (*SandboxModeSignalConfig) Indexes ¶ added in v0.19.894

func (s *SandboxModeSignalConfig) Indexes(db *gorm.DB) []migrations.Index

type SandboxRunStatus ¶

type SandboxRunStatus string
const (
	SandboxRunStatusActive         SandboxRunStatus = "active"
	SandboxRunStatusError          SandboxRunStatus = "error"
	SandboxRunStatusQueued         SandboxRunStatus = "queued"
	SandboxRunStatusDeprovisioned  SandboxRunStatus = "deprovisioned"
	SandboxRunStatusDeprovisioning SandboxRunStatus = "deprovisioning"
	SandboxRunStatusProvisioning   SandboxRunStatus = "provisioning"
	SandboxRunStatusReprovisioning SandboxRunStatus = "reprovisioning"
	SandboxRunStatusPlanning       SandboxRunStatus = "planning"
	SandboxRunStatusApplying       SandboxRunStatus = "applying"
	SandboxRunStatusAccessError    SandboxRunStatus = "access_error"
	SandboxRunStatusUnknown        SandboxRunStatus = "unknown"
	SandboxRunStatusCancelled      SandboxRunStatus = "cancelled"
	SandboxRunStatusEmpty          SandboxRunStatus = "empty"
	SandboxRunPendingApproval      SandboxRunStatus = "pending-approval"
	SandboxRunApprovalDenied       SandboxRunStatus = "approval-denied"
	SandboxRunDriftDetected        SandboxRunStatus = "drift-detected"
	SandboxRunNoDrift              SandboxRunStatus = "no-drift"
	SandboxRunAutoSkipped          SandboxRunStatus = "auto-skipped"
)

type SandboxRunType ¶

type SandboxRunType string
const (
	SandboxRunTypeProvision   SandboxRunType = "provision"
	SandboxRunTypeReprovision SandboxRunType = "reprovision"
	SandboxRunTypeDeprovision SandboxRunType = "deprovision"
)

type Signal ¶

type Signal struct {
	EventLoopID string `json:"event_loop_id,omitzero" temporaljson:"event_loop_id,omitzero,omitempty"`

	Namespace  string `json:"namespace,omitzero" temporaljson:"namespace,omitzero,omitempty"`
	Type       string `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	SignalJSON []byte `json:"json,omitzero" temporaljson:"signal_json,omitzero,omitempty"`
}

func (Signal) GormDataType ¶

func (Signal) GormDataType() string

func (*Signal) Scan ¶

func (s *Signal) Scan(v interface{}) (err error)

func (*Signal) Value ¶

func (s *Signal) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type StackOutput ¶ added in v0.19.850

type StackOutput interface {
	ProvisionRoleID() (string, error)
	DeprovisionRoleID() (string, error)
	MaintenanceRoleID() (string, error)
	CustomRoleID(string) (string, error)
	BreakGlassRoleID(string) (string, error)
	// returns list of custom roles along with their identifier
	CustomRoles() (map[string]string, error)
	// returns list of break glass roles along with their identifier
	BreakGlassRoles() (map[string]string, error)
	// returns list of customer install inputs along with their values in the stack
	InstallInputValues() (map[string]string, error)
}

type StackType ¶

type StackType string
const (
	StackTypeAWS   StackType = "aws-cloudformation"
	StackTypeAzure StackType = "azure-bicep"
	StackTypeGCP   StackType = "gcp-terraform"
)

type Status ¶

type Status string

generic statuses

const (
	StatusError        Status = "error"
	StatusPending      Status = "pending"
	StatusInProgress   Status = "in-progress"
	StatusCheckPlan    Status = "checking-plan"
	StatusSuccess      Status = "success"
	StatusNotAttempted Status = "not-attempted"
	StatusCancelled    Status = "cancelled"
	StatusRetrying     Status = "retrying"
	StatusDiscarded    Status = "discarded"
	StatusUserSkipped  Status = "user-skipped"
	StatusAutoSkipped  Status = "auto-skipped"
	StatusPlanning     Status = "planning"
	StatusApplying     Status = "applying"
	StatusQueued       Status = "queued"
	StatusWarning      Status = "warning"
)

define standard statuses

const (
	InstallStackVersionStatusGenerating   Status = "generating"
	InstallStackVersionStatusPendingUser  Status = "awaiting-user-run"
	InstallStackVersionStatusProvisioning Status = "provisioning"
	InstallStackVersionStatusActive       Status = "active"
	InstallStackVersionStatusOutdated     Status = "outdated"
	InstallStackVersionStatusExpired      Status = "expired"
)

type specific statuses

const (
	WorkflowStepApprovalStatusApproved Status = "approved"
	WorkflowStepDrifted                Status = "drifted"
	WorkflowStepNoDrift                Status = "no-drift"
	// WorkflowStepApprovalStatusAwaitingResponse  Status = "approval-awaiting" // NOTE(fd): superceded by shared const below
	WorkflowStepApprovalStatusApprovalExpired   Status = "approval-expired"
	WorkflowStepApprovalStatusApprovalDenied    Status = "approval-denied"
	WorkflowStepApprovalStatusApprovalRetryPlan Status = "approval-retry"
)
const (
	StatusBuilding Status = "building"
	StatusDeleting Status = "deleting"
)

component build specific statuses

const (
	AwaitingApproval Status = "approval-awaiting"
)

shared by WorkflowStep and Workflow

const (
	InstallDeployStatusV2Noop Status = "noop"
)

func (Status) DefaultHumanDescription ¶

func (s Status) DefaultHumanDescription() string

type StepErrorBehavior ¶

type StepErrorBehavior string

DEPRECATED: this is no longer used, but kept for historical data integrity

const (
	// abort on error
	StepErrorBehaviorAbort StepErrorBehavior = "abort"
)

type TemporalPayload ¶

type TemporalPayload struct {
	ID        string                `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id" temporaljson:"id,omitzero,omitempty"`
	CreatedAt time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	Contents []byte `json:"contents,omitzero" gorm:"type:bytea" swaggertype:"-" temporaljson:"contents,omitzero,omitempty"`
}

func (*TemporalPayload) BeforeCreate ¶

func (a *TemporalPayload) BeforeCreate(tx *gorm.DB) error

type TerraformLock ¶

type TerraformLock struct {
	Created   string `json:"created,omitzero" temporaljson:"created,omitzero,omitempty"`
	Path      string `json:"path,omitzero" temporaljson:"path,omitzero,omitempty"`
	ID        string `json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	Operation string `json:"operation,omitzero" temporaljson:"operation,omitzero,omitempty"`
	Info      string `json:"info,omitzero" temporaljson:"info,omitzero,omitempty"`
	Who       string `json:"who,omitzero" temporaljson:"who,omitzero,omitempty"`
	Version   any    `json:"version,omitzero" temporaljson:"version,omitzero,omitempty"`
}

Lock a lock on state

func (TerraformLock) GormDataType ¶

func (TerraformLock) GormDataType() string

func (*TerraformLock) Scan ¶

func (c *TerraformLock) Scan(v interface{}) (err error)

func (*TerraformLock) Value ¶

func (c *TerraformLock) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type TerraformModuleComponentConfig ¶

type TerraformModuleComponentConfig struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// parent reference
	ComponentConfigConnectionID string                    `` /* 126-byte string literal not displayed */
	ComponentConfigConnection   ComponentConfigConnection `json:"-" temporaljson:"component_config_connection,omitzero,omitempty"`

	// terraform configuration values
	Version        string         `json:"version,omitzero" gorm:"default:v1.7.5;notnull" temporaljson:"version,omitzero,omitempty"`
	Variables      pgtype.Hstore  `json:"variables,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"variables,omitzero,omitempty"`
	VariablesFiles pq.StringArray `` /* 147-byte string literal not displayed */
	EnvVars        pgtype.Hstore  `json:"env_vars,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"env_vars,omitzero,omitempty"`

	PublicGitVCSConfig       *PublicGitVCSConfig       `` /* 167-byte string literal not displayed */
	ConnectedGithubVCSConfig *ConnectedGithubVCSConfig `` /* 179-byte string literal not displayed */
}

func (*TerraformModuleComponentConfig) BeforeCreate ¶

func (c *TerraformModuleComponentConfig) BeforeCreate(tx *gorm.DB) error

func (*TerraformModuleComponentConfig) Indexes ¶

type TerraformStateData ¶

type TerraformStateData struct {
	Version          int                      `json:"version,omitzero,omitempty" temporaljson:"version,omitzero,omitempty"`
	TerraformVersion string                   `json:"terraform_version,omitzero,omitempty" temporaljson:"terraform_version,omitzero,omitempty"`
	Serial           int                      `json:"serial,omitzero,omitempty" temporaljson:"serial,omitzero,omitempty"`
	Lineage          string                   `json:"lineage,omitzero,omitempty" temporaljson:"lineage,omitzero,omitempty"`
	Outputs          map[string]any           `json:"outputs,omitzero,omitempty" temporaljson:"outputs,omitzero,omitempty"`
	Resources        []TerraformStateResource `json:"resources,omitzero,omitempty" temporaljson:"resources,omitzero,omitempty"`
	CheckResults     any                      `json:"check_results,omitzero,omitempty" temporaljson:"check_results,omitzero,omitempty"`

	// base 64 encoded version of the contents for compatibility
	Contents string `json:"contents,omitzero" temporaljson:"contents,omitzero,omitempty"`
}

func (TerraformStateData) GormDataType ¶

func (TerraformStateData) GormDataType() string

func (*TerraformStateData) Scan ¶

func (c *TerraformStateData) Scan(v interface{}) (err error)

func (*TerraformStateData) Value ¶

func (c *TerraformStateData) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type TerraformStateInstance ¶

type TerraformStateInstance struct {
	SchemaVersion       int            `json:"schema_version,omitzero" temporaljson:"schema_version,omitzero,omitempty"`
	Attributes          map[string]any `json:"attributes,omitzero" temporaljson:"attributes,omitzero,omitempty"`
	SensitiveAttributes []any          `json:"sensitive_attributes,omitzero" temporaljson:"sensitive_attributes,omitzero,omitempty"`
}

type TerraformStateResource ¶

type TerraformStateResource struct {
	Mode      string                   `json:"mode,omitzero" temporaljson:"mode,omitzero,omitempty"`
	Type      string                   `json:"type,omitzero" temporaljson:"type,omitzero,omitempty"`
	Name      string                   `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`
	Provider  string                   `json:"provider,omitzero" temporaljson:"provider,omitzero,omitempty"`
	Instances []TerraformStateInstance `json:"instances,omitzero" temporaljson:"instances,omitzero,omitempty"`
}

type TerraformWorkspace ¶

type TerraformWorkspace struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	OwnerID   string `` /* 148-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;uniqueIndex:idx_owner" temporaljson:"owner_type,omitzero,omitempty"`

	States      []TerraformWorkspaceState `faker:"-" json:"-" swaggerignore:"true" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"states,omitzero,omitempty"`
	LockHistory []TerraformWorkspaceLock  `` /* 170-byte string literal not displayed */

	StateJSON []TerraformWorkspaceStateJSON `` /* 147-byte string literal not displayed */
}

func (*TerraformWorkspace) BeforeCreate ¶

func (r *TerraformWorkspace) BeforeCreate(tx *gorm.DB) (err error)

func (*TerraformWorkspace) Indexes ¶

func (r *TerraformWorkspace) Indexes(db *gorm.DB) []migrations.Index

type TerraformWorkspaceLock ¶

type TerraformWorkspaceLock struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"null;default:null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	// Foreign key to TerraformWorkspace with unique constraint to prevent multiple active locks
	WorkspaceID string             `` /* 176-byte string literal not displayed */
	Workspace   TerraformWorkspace `json:"-" temporaljson:"workspace,omitzero,omitempty"`

	Lock *TerraformLock `json:"lock,omitzero" temporaljson:"lock,omitzero,omitempty"`

	RunnerJobID *string   `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerJob   RunnerJob `json:"runner_job,omitzero" temporaljson:"runner_job,omitzero,omitempty"`
}

func (*TerraformWorkspaceLock) BeforeCreate ¶

func (r *TerraformWorkspaceLock) BeforeCreate(tx *gorm.DB) (err error)

type TerraformWorkspaceState ¶

type TerraformWorkspaceState struct {
	ID          string `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`

	CreatedBy Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	Contents []byte `json:"contents,omitzero" gorm:"type:bytea" temporaljson:"contents,omitzero,omitempty"`

	TerraformWorkspaceID string             `json:"terraform_workspace_id,omitzero" temporaljson:"terraform_workspace_id,omitzero,omitempty"`
	TerraformWorkspace   TerraformWorkspace `json:"terraform_workspace,omitzero" gorm:"-" temporaljson:"terraform_workspace,omitzero,omitempty"`

	RunnerJobID *string   `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerJob   RunnerJob `json:"runner_job,omitzero" temporaljson:"runner_job,omitzero,omitempty"`

	Revision int `json:"revision,omitzero" gorm:"->;-:migration" temporaljson:"revision,omitzero,omitempty"`
}

func (*TerraformWorkspaceState) BeforeCreate ¶

func (t *TerraformWorkspaceState) BeforeCreate(tx *gorm.DB) (err error)

func (*TerraformWorkspaceState) Indexes ¶

func (t *TerraformWorkspaceState) Indexes(db *gorm.DB) []migrations.Index

func (*TerraformWorkspaceState) UseView ¶

func (i *TerraformWorkspaceState) UseView() bool

func (*TerraformWorkspaceState) ViewVersion ¶

func (i *TerraformWorkspaceState) ViewVersion() string

func (*TerraformWorkspaceState) Views ¶

func (i *TerraformWorkspaceState) Views(db *gorm.DB) []migrations.View

type TerraformWorkspaceStateJSON ¶

type TerraformWorkspaceStateJSON struct {
	ID          string  `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`

	Contents []byte `json:"contents,omitzero" gorm:"type:bytea" temporaljson:"contents,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"default:null" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" temporaljson:"org,omitzero,omitempty"`

	// Foreign key to TerraformWorkspace with unique constraint to prevent conflicting states for a workspace
	WorkspaceID string             `` /* 139-byte string literal not displayed */
	Workspace   TerraformWorkspace `json:"-" temporaljson:"workspace,omitzero,omitempty"`

	RunnerJobID *string   `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerJob   RunnerJob `json:"runner_job,omitzero" temporaljson:"runner_job,omitzero,omitempty"`
}

func (*TerraformWorkspaceStateJSON) BeforeCreate ¶

func (t *TerraformWorkspaceStateJSON) BeforeCreate(tx *gorm.DB) (err error)

func (*TerraformWorkspaceStateJSON) Indexes ¶

type Token ¶

type Token struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	AccountID string `json:"account_id,omitzero" temporaljson:"account_id,omitzero,omitempty"`

	Token     string    `gorm:"unique" json:"-" temporaljson:"token,omitzero,omitempty"`
	TokenType TokenType `json:"token_type,omitzero" temporaljson:"token_type,omitzero,omitempty"`

	// claim data
	ExpiresAt time.Time `json:"expires_at,omitzero" gorm:"notnull" temporaljson:"expires_at,omitzero,omitempty"`
	IssuedAt  time.Time `json:"issued_at,omitzero" gorm:"notnull" temporaljson:"issued_at,omitzero,omitempty"`
	Issuer    string    `json:"issuer,omitzero" gorm:"notnull;default null" temporaljson:"issuer,omitzero,omitempty"`
}

func (*Token) BeforeCreate ¶

func (a *Token) BeforeCreate(tx *gorm.DB) error

type TokenType ¶

type TokenType string
const (
	TokenTypeAuth        TokenType = "auth" // nuon auth service
	TokenTypeAuth0       TokenType = "auth0"
	TokenTypeAdmin       TokenType = "admin"
	TokenTypeStatic      TokenType = "static"
	TokenTypeIntegration TokenType = "integration"
	TokenTypeCanary      TokenType = "canary"
	TokenTypeNuon        TokenType = "nuon"
)

type UserJourney ¶

type UserJourney struct {
	Name  string            `json:"name" gorm:"column:name"`
	Title string            `json:"title" gorm:"column:title"`
	Steps []UserJourneyStep `json:"steps" gorm:"column:steps;type:jsonb"`
}

type UserJourneyStep ¶

type UserJourneyStep struct {
	Name     string `json:"name" gorm:"column:name"`
	Title    string `json:"title" gorm:"column:title"`
	Complete bool   `json:"complete" gorm:"column:complete;default:false"`

	// Top-level completion tracking fields
	CompletedAt      *time.Time `json:"completed_at,omitempty" gorm:"column:completed_at"`
	CompletionMethod string     `json:"completion_method,omitempty" gorm:"column:completion_method"`
	CompletionSource string     `json:"completion_source,omitempty" gorm:"column:completion_source"`

	// Flexible metadata for business data
	Metadata map[string]interface{} `json:"metadata,omitempty" gorm:"column:metadata;type:jsonb"`
}

type UserJourneys ¶

type UserJourneys []UserJourney

UserJourneys represents a slice of UserJourney that can be stored in JSONB

func (UserJourneys) GormDataType ¶

func (UserJourneys) GormDataType() string

func (*UserJourneys) Scan ¶

func (uj *UserJourneys) Scan(v interface{}) (err error)

Scan implements the database/sql.Scanner interface.

func (UserJourneys) Value ¶

func (uj UserJourneys) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type VCSCommitOwnerType ¶ added in v0.19.850

type VCSCommitOwnerType string

VCSCommitOwnerType represents the type of entity that owns a VCS commit. VCS commits use polymorphic ownership to reference either ConnectedGithubVCSConfig or PublicGitVCSConfig entities.

const (
	// VCSCommitOwnerTypeConnectedGithubVCSConfig indicates the commit is owned by a ConnectedGithubVCSConfig
	// (authenticated GitHub repository via GitHub App installation)
	VCSCommitOwnerTypeConnectedGithubVCSConfig VCSCommitOwnerType = "connected_github_vcs_configs"

	// VCSCommitOwnerTypePublicGitVCSConfig indicates the commit is owned by a PublicGitVCSConfig
	// (public GitHub repository with no authentication)
	VCSCommitOwnerTypePublicGitVCSConfig VCSCommitOwnerType = "public_git_vcs_configs"
)

type VCSConnection ¶

type VCSConnection struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `` /* 126-byte string literal not displayed */
	Org   Org    `swaggerignore:"true" json:"-" temporaljson:"org,omitzero,omitempty"`

	GithubInstallID string `` /* 127-byte string literal not displayed */

	GithubAccountID   string `json:"github_account_id,omitempty" gorm:"not null;default:''" temporaljson:"github_account_id,omitzero,omitempty"`
	GithubAccountName string `json:"github_account_name,omitempty" gorm:"not null;default:''" temporaljson:"github_account_name,omitzero,omitempty"`

	Status *CompositeStatus `json:"status,omitempty" gorm:"column:status;type:jsonb;default:null" temporaljson:"status,omitzero,omitempty"`

	Queues                    []Queue                    `json:"queues,omitzero" gorm:"polymorphic:Owner;polymorphicValue:vcs_connections" temporaljson:"queues,omitzero,omitempty"`
	Commits                   []VCSConnectionCommit      `json:"vcs_connection_commit,omitzero" gorm:"constraint:OnDelete:SET NULL;" temporaljson:"commits,omitzero,omitempty"`
	ConnectedGithubVCSConfigs []ConnectedGithubVCSConfig `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"connected_github_vcs_configs,omitzero,omitempty"`
}

func (*VCSConnection) BeforeCreate ¶

func (v *VCSConnection) BeforeCreate(tx *gorm.DB) error

func (*VCSConnection) Indexes ¶

func (v *VCSConnection) Indexes(db *gorm.DB) []migrations.Index

type VCSConnectionCommit ¶

type VCSConnectionCommit struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// Polymorphic ownership - references VCS config that owns this commit
	OwnerID   string `json:"owner_id,omitzero" gorm:"type:text" temporaljson:"owner_id,omitzero,omitempty"`
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	// Optional VCS connection reference (nullable for public repos)
	VCSConnection   *VCSConnection `json:"-" temporaljson:"vcs_connection,omitzero,omitempty"`
	VCSConnectionID *string        `json:"vcs_connection_id,omitzero" gorm:"default:null" temporaljson:"vcs_connection_id,omitzero,omitempty"`

	ComponentBuilds []ComponentBuild `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"component_builds,omitzero,omitempty"`

	SHA         string `json:"sha,omitzero" gorm:"notnull" temporaljson:"sha,omitzero,omitempty"`
	AuthorName  string `json:"author_name,omitzero" temporaljson:"author_name,omitzero,omitempty"`
	AuthorEmail string `json:"author_email,omitzero" temporaljson:"author_email,omitzero,omitempty"`
	Message     string `json:"message,omitzero" temporaljson:"message,omitzero,omitempty"`
}

func (*VCSConnectionCommit) BeforeCreate ¶

func (v *VCSConnectionCommit) BeforeCreate(tx *gorm.DB) error

func (*VCSConnectionCommit) Indexes ¶

func (v *VCSConnectionCommit) Indexes(db *gorm.DB) []migrations.Index

type VCSConnectionType ¶

type VCSConnectionType string
const (
	VCSConnectionTypeConnectedRepo VCSConnectionType = "connected_repo"
	VCSConnectionTypePublicRepo    VCSConnectionType = "public_repo"
	VCSConnectionTypeNone          VCSConnectionType = "none"
)

type VCSEvent ¶ added in v0.19.894

type VCSEvent struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `swaggerignore:"true" json:"-" temporaljson:"org,omitzero,omitempty"`

	VCSConnectionID string `json:"vcs_connection_id" gorm:"not null" temporaljson:"vcs_connection_id,omitzero,omitempty"`
	EventType       string `json:"event_type" gorm:"not null;default:''" temporaljson:"event_type,omitzero,omitempty"`

	Payload VCSEventPayload  `json:"payload" gorm:"type:jsonb;default:null" temporaljson:"payload,omitzero,omitempty"`
	Status  *CompositeStatus `json:"status,omitempty" gorm:"column:status;type:jsonb;default:null" temporaljson:"status,omitzero,omitempty"`
}

func (*VCSEvent) BeforeCreate ¶ added in v0.19.894

func (v *VCSEvent) BeforeCreate(tx *gorm.DB) error

func (*VCSEvent) Indexes ¶ added in v0.19.894

func (v *VCSEvent) Indexes(db *gorm.DB) []migrations.Index

type VCSEventPayload ¶ added in v0.19.894

type VCSEventPayload map[string]any

func (*VCSEventPayload) Scan ¶ added in v0.19.894

func (p *VCSEventPayload) Scan(src any) error

func (VCSEventPayload) Value ¶ added in v0.19.894

func (p VCSEventPayload) Value() (driver.Value, error)

type VCSWebhookSubscription ¶ added in v0.19.894

type VCSWebhookSubscription struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `swaggerignore:"true" json:"-" temporaljson:"org,omitzero,omitempty"`

	VCSConnectionID string `` /* 132-byte string literal not displayed */
	GithubHookID    int64  `json:"github_hook_id,omitempty" gorm:"default:null" temporaljson:"github_hook_id,omitzero,omitempty"`
	WebhookURL      string `json:"webhook_url,omitempty" gorm:"not null;default:''" temporaljson:"webhook_url,omitzero,omitempty"`

	Status *CompositeStatus `json:"status,omitempty" gorm:"column:status;type:jsonb;default:null" temporaljson:"status,omitzero,omitempty"`
}

func (*VCSWebhookSubscription) BeforeCreate ¶ added in v0.19.894

func (v *VCSWebhookSubscription) BeforeCreate(tx *gorm.DB) error

func (*VCSWebhookSubscription) Indexes ¶ added in v0.19.894

func (v *VCSWebhookSubscription) Indexes(db *gorm.DB) []migrations.Index

type Waitlist ¶

type Waitlist struct {
	ID          string  `gorm:"primarykey;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string  `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account `json:"-" temporaljson:"created_by,omitzero,omitempty"`

	CreatedAt time.Time `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`

	OrgName string `json:"org_name,omitzero" gorm:"not null;default:null" temporaljson:"org_name,omitzero,omitempty"`
}

func (*Waitlist) BeforeSave ¶

func (c *Waitlist) BeforeSave(tx *gorm.DB) error

type Webhook ¶ added in v0.19.894

type Webhook struct {
	ID          string                `gorm:"primarykey" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"notnull" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"uniqueIndex:idx_webhooks_org_url" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `` /* 134-byte string literal not displayed */

	WebhookURL    string `json:"webhook_url,omitzero" gorm:"notnull;uniqueIndex:idx_webhooks_org_url" temporaljson:"webhook_url,omitzero,omitempty"`
	WebhookSecret string `json:"-" temporaljson:"webhook_secret,omitzero,omitempty"`
}

func (*Webhook) BeforeCreate ¶ added in v0.19.894

func (a *Webhook) BeforeCreate(tx *gorm.DB) error

func (Webhook) TableName ¶ added in v0.19.894

func (Webhook) TableName() string

type Workflow ¶

type Workflow struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OwnerID   string `` /* 126-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	Type     WorkflowType    `json:"type,omitzero" gorm:"not null;default null" temporaljson:"type,omitzero,omitempty"`
	Metadata pgtype.Hstore   `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`
	Status   CompositeStatus `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`

	Role string `json:"role,omitzero,omitempty" temporaljson:"role" gorm:"column:role"`

	// DEPRECATED: for now we always abort on step errors
	StepErrorBehavior StepErrorBehavior `json:"step_error_behavior,omitzero" temporaljson:"step_error_behavior,omitzero,omitempty" swaggertype:"string"`

	ApprovalOption InstallApprovalOption `json:"approval_option,omitzero" gorm:"default 'auto'" temporaljson:"approval_option,omitzero,omitempty"`

	PlanOnly bool `json:"plan_only"`

	// GenerateStepsSignal is an optional queue signal that generates workflow steps.
	// When set, the conductor enqueues this signal and calls its "FetchSteps" update
	// handler instead of using the hardcoded Generators map.
	GenerateStepsSignal *signaldb.SignalData `json:"generate_steps_signal,omitempty" gorm:"type:jsonb"`

	// ResultDirective is set by the currently executing group signal to communicate
	// the group outcome back to the flow signal. Values: continue, stop, retry-group,
	// skip-group, await-approval.
	ResultDirective string `json:"result_directive,omitzero" gorm:"type:text;default:''" temporaljson:"result_directive,omitzero,omitempty"`

	StartedAt  time.Time `json:"started_at,omitzero" gorm:"default:null" temporaljson:"started_at,omitzero,omitempty"`
	FinishedAt time.Time `json:"finished_at,omitzero" gorm:"default:null" temporaljson:"finished_at,omitzero,omitempty"`
	Finished   bool      `json:"finished,omitzero" gorm:"-" temporaljson:"finished,omitzero,omitempty"`

	// step groups represent logical groupings of steps within the workflow
	StepGroups []WorkflowStepGroup `` /* 131-byte string literal not displayed */

	// steps represent each piece of the workflow
	Steps []WorkflowStep `` /* 126-byte string literal not displayed */
	Name  string         `json:"name,omitzero" gorm:"-" temporaljson:"name,omitzero,omitempty"`

	ExecutionTime time.Duration `json:"execution_time,omitzero" gorm:"-" swaggertype:"primitive,integer" temporaljson:"execution_time,omitzero,omitempty"`

	InstallSandboxRuns        []InstallSandboxRun        `` /* 156-byte string literal not displayed */
	InstallDeploys            []InstallDeploy            `` /* 146-byte string literal not displayed */
	InstallActionWorkflowRuns []InstallActionWorkflowRun `` /* 163-byte string literal not displayed */
	AppBranchRuns             []AppBranchRun             `` /* 139-byte string literal not displayed */
	WorkflowRuns              []WorkflowRun              `` /* 135-byte string literal not displayed */

	Links map[string]any `json:"links,omitzero,omitempty" temporaljson:"-" gorm:"-"`
}

TODO(jm): make install workflows a top level concept called a "workflow", and they belong to either an app or an install.

We start with this to make it easier to iterate on them, for now.

func (*Workflow) AfterQuery ¶

func (r *Workflow) AfterQuery(tx *gorm.DB) error

func (*Workflow) BeforeCreate ¶

func (i *Workflow) BeforeCreate(tx *gorm.DB) error

func (*Workflow) BeforeSave ¶

func (i *Workflow) BeforeSave(tx *gorm.DB) error

func (*Workflow) Indexes ¶

func (i *Workflow) Indexes(db *gorm.DB) []migrations.Index

func (*Workflow) TableName ¶

func (i *Workflow) TableName() string

type WorkflowMetadataKey ¶

type WorkflowMetadataKey string

type WorkflowResponse ¶ added in v0.19.894

type WorkflowResponse struct {
	WorkflowID string `json:"workflow_id"`
}

WorkflowResponse is returned by endpoints that trigger a workflow and have no other meaningful return data.

type WorkflowRun ¶ added in v0.19.894

type WorkflowRun struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull"`
	DeletedAt   soft_delete.DeletedAt `json:"-"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true"`

	WorkflowID string          `json:"workflow_id,omitzero" gorm:"not null"`
	Type       WorkflowRunType `json:"type,omitzero" gorm:"not null"`
	Status     CompositeStatus `json:"status,omitzero"`

	// TriggerStepID is the step that triggered this run (empty for initial runs).
	TriggerStepID string `json:"trigger_step_id,omitempty"`

	// StartFromIdx is the step index to start execution from.
	StartFromIdx int `json:"start_from_idx"`

	StartedAt  time.Time `json:"started_at,omitzero" gorm:"default:null"`
	FinishedAt time.Time `json:"finished_at,omitzero" gorm:"default:null"`
}

func (*WorkflowRun) BeforeCreate ¶ added in v0.19.894

func (r *WorkflowRun) BeforeCreate(tx *gorm.DB) error

func (*WorkflowRun) TableName ¶ added in v0.19.894

func (r *WorkflowRun) TableName() string

type WorkflowRunType ¶ added in v0.19.894

type WorkflowRunType string
const (
	WorkflowRunTypeInitial WorkflowRunType = "initial"
	WorkflowRunTypeRetry   WorkflowRunType = "retry"
	WorkflowRunTypeSkip    WorkflowRunType = "skip"
	WorkflowRunTypeResume  WorkflowRunType = "resume"
)

type WorkflowStep ¶

type WorkflowStep struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"created_by" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	OwnerID   string `` /* 174-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	// DEPRECATED: this is the install workflow ID, which is now the workflow ID.
	InstallWorkflowID string `json:"install_workflow_id,omitzero" temporaljson:"install_workflow_id,omitzero,omitempty"`

	Status CompositeStatus `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`
	Name   string          `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`

	// the signal that needs to be called (legacy)
	Signal *Signal `json:"-" temporaljson:"signal,omitzero,omitempty"`

	QueueSignal *signaldb.SignalData `json:"-" temporaljson:"queue_signal,omitzero,omitempty"`

	Idx int `json:"idx,omitzero" temporaljson:"idx,omitzero,omitempty"`

	// WorkflowStepGroupID links this step to its parent WorkflowStepGroup.
	WorkflowStepGroupID string `json:"workflow_step_group_id,omitzero" gorm:"type:text" temporaljson:"workflow_step_group_id,omitzero,omitempty"`

	// to group steps which belong to same logical group, eg, plan/apply
	GroupIdx int `json:"group_idx,omitzero" temporaljson:"group_idx,omitzero,omitempty"`
	// counter for every retry attempted on a group
	GroupRetryIdx int `json:"group_retry_idx" gorm:"default:0" temporaljson:"group_retry_idx,omitzero,omitempty"`
	// GroupParallel indicates whether steps in this group should execute in parallel.
	GroupParallel bool `json:"group_parallel,omitzero" gorm:"default:false" temporaljson:"group_parallel,omitzero,omitempty"`

	// StepQueueID is the queue where the execute-workflow-step signal runs.
	// When empty, the group's default step queue is used.
	StepQueueID string `json:"step_queue_id,omitzero" gorm:"type:text" temporaljson:"step_queue_id,omitzero,omitempty"`

	// TargetQueueID is the queue where the inner signal (the actual work)
	// gets dispatched. When empty, the step signal's TargetQueueName is used.
	TargetQueueID string `json:"target_queue_id,omitzero" gorm:"type:text" temporaljson:"target_queue_id,omitzero,omitempty"`

	ExecutionType WorkflowStepExecutionType `json:"execution_type,omitzero" temporaljson:"execution_type"`

	// the following fields are set _once_ a step is in flight, and are orchestrated via the step's signal.
	//
	// this is a polymorphic gorm relationship to one of the following objects:
	//
	// install_cloudformation_stack
	// install_sandbox_run
	// install_runner_update
	// install_deploy
	// install_action_workflow_run (can be many of these)
	StepTargetID   string `` /* 138-byte string literal not displayed */
	StepTargetType string `json:"step_target_type,omitzero" gorm:"type:text;" temporaljson:"step_target_type,omitzero,omitempty"`

	Metadata pgtype.Hstore `json:"metadata,omitzero" gorm:"type:hstore" swaggertype:"object,string" temporaljson:"metadata,omitzero,omitempty"`

	StartedAt  time.Time `json:"started_at,omitzero" gorm:"default:null" temporaljson:"started_at,omitzero,omitempty"`
	FinishedAt time.Time `json:"finished_at,omitzero" gorm:"default:null" temporaljson:"finished_at,omitzero,omitempty"`
	Finished   bool      `json:"finished,omitzero" gorm:"-" temporaljson:"finished,omitzero,omitempty"`

	Approval         *WorkflowStepApproval         `gorm:"foreignKey:InstallWorkflowStepID" json:"approval,omitzero" temporaljson:"approval,omitzero,omitempty"`
	PolicyValidation *WorkflowStepPolicyValidation `gorm:"foreignKey:InstallWorkflowStepID" json:"policy_validation,omitzero" temporaljson:"policy_validation,omitzero,omitempty"`

	// LogStream is the log stream associated with this workflow step (when step_target_type is install_workflow_steps).
	LogStream *LogStream `gorm:"-" json:"log_stream,omitempty" temporaljson:"log_stream,omitzero,omitempty"`

	ExecutionTime time.Duration `json:"execution_time,omitzero" gorm:"-" swaggertype:"primitive,integer" temporaljson:"execution_time,omitzero,omitempty"`

	Links map[string]any `json:"links,omitzero,omitempty" temporaljson:"-" gorm:"-"`

	Retryable  bool `json:"retryable,omitzero" gorm:"default:false" temporaljson:"retryable,omitzero,omitempty"`
	Skippable  bool `json:"skippable,omitzero" gorm:"default:false" temporaljson:"skippable,omitzero,omitempty"`
	Retried    bool `json:"retried,omitzero" gorm:"default:false" temporaljson:"retried,omitzero,omitempty"`
	RetryIndex int  `json:"retry_index" gorm:"default:0" temporaljson:"retry_index,omitzero,omitempty"`

	// ResultDirective is set by the execute-workflow-step signal to communicate
	// the step's outcome directive back to the group signal. Values: continue,
	// stop, retry, retry-group, skip-group, await-approval.
	ResultDirective string `json:"result_directive,omitzero" gorm:"type:text;default:''" temporaljson:"result_directive,omitzero,omitempty"`

	// Fields that are de-nested at read time using AfterQuery
	WorkflowID string `json:"workflow_id,omitzero" gorm:"-" temporaljson:"workflow_id,omitzero,omitempty"`
}

func (*WorkflowStep) AfterQuery ¶

func (r *WorkflowStep) AfterQuery(tx *gorm.DB) error

func (*WorkflowStep) BeforeCreate ¶

func (a *WorkflowStep) BeforeCreate(tx *gorm.DB) error

func (*WorkflowStep) BeforeSave ¶

func (i *WorkflowStep) BeforeSave(tx *gorm.DB) error

func (*WorkflowStep) Indexes ¶

func (i *WorkflowStep) Indexes(db *gorm.DB) []migrations.Index

func (*WorkflowStep) TableName ¶

func (i *WorkflowStep) TableName() string

type WorkflowStepApproval ¶

type WorkflowStepApproval struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index:idx_app_install_name,unique" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// the step that this approval belongs too
	InstallWorkflowStepID string       `gorm:"install_workflow_step_id,notnull" temporaljson:"install_workflow_step_id,omitzero,omitempty"`
	InstallWorkflowStep   WorkflowStep `temporaljson:"install_workflow_step,omitzero,omitempty"`

	// the runner job where this approval was created
	RunnerJobID *string    `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`
	RunnerJob   *RunnerJob `json:"runner_job,omitzero" temporaljson:"runner_job,omitzero,omitempty"`

	OwnerID   string `` /* 168-byte string literal not displayed */
	OwnerType string `json:"owner_type,omitzero" gorm:"type:text;" temporaljson:"owner_type,omitzero,omitempty"`

	Contents string `json:"-" temporaljson:"-"`

	Type WorkflowStepApprovalType `json:"type"`

	Response *WorkflowStepApprovalResponse `` /* 143-byte string literal not displayed */

	// afterquery
	WorkflowStepID string       `json:"workflow_step_id,omitzero" gorm:"-" temporaljson:"workflow_step_id,omitzero,omitempty"`
	WorkflowStep   WorkflowStep `json:"workflow_step,omitzero" gorm:"-" temporaljson:"workflow_step,omitzero,omitempty"`
}

func (*WorkflowStepApproval) AfterQuery ¶

func (c *WorkflowStepApproval) AfterQuery(tx *gorm.DB) error

func (*WorkflowStepApproval) BeforeCreate ¶

func (c *WorkflowStepApproval) BeforeCreate(tx *gorm.DB) error

func (*WorkflowStepApproval) Indexes ¶

func (c *WorkflowStepApproval) Indexes(db *gorm.DB) []migrations.Index

func (*WorkflowStepApproval) TableName ¶

func (c *WorkflowStepApproval) TableName() string

func (*WorkflowStepApproval) Views ¶ added in v0.19.850

func (c *WorkflowStepApproval) Views(db *gorm.DB) []migrations.View

type WorkflowStepApprovalResponse ¶

type WorkflowStepApprovalResponse struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index:idx_app_install_name,unique" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	InstallWorkflowStepApprovalID string               `json:"install_workflow_step_approval_id,omitzero" temporaljson:"install_workflow_step_approval_id,omitzero,omitempty"`
	InstallWorkflowStepApproval   WorkflowStepApproval `json:"-" gorm:"constraint:OnDelete:CASCADE;" temporaljson:"install_workflow_step_approval,omitzero,omitempty"`

	// the response type
	Type WorkflowStepResponseType `json:"type,omitzero" temporaljson:"type,omitzero,omitempty" swaggertype:"string"`

	Note string `json:"note,omitzero" temporaljson:"note,omitzero,omitempty"`
}

func (*WorkflowStepApprovalResponse) AfterQuery ¶

func (c *WorkflowStepApprovalResponse) AfterQuery(tx *gorm.DB) error

func (*WorkflowStepApprovalResponse) BeforeCreate ¶

func (c *WorkflowStepApprovalResponse) BeforeCreate(tx *gorm.DB) error

func (*WorkflowStepApprovalResponse) Indexes ¶

func (*WorkflowStepApprovalResponse) TableName ¶

func (c *WorkflowStepApprovalResponse) TableName() string

type WorkflowStepApprovalType ¶

type WorkflowStepApprovalType string
const (
	NoopApprovalType               WorkflowStepApprovalType = "noop"
	ApproveAllApprovalType         WorkflowStepApprovalType = "approve-all"
	TerraformPlanApprovalType      WorkflowStepApprovalType = "terraform_plan"
	KubernetesManifestApprovalType WorkflowStepApprovalType = "kubernetes_manifest_approval"
	HelmApprovalApprovalType       WorkflowStepApprovalType = "helm_approval"
	PulumiApprovalType             WorkflowStepApprovalType = "pulumi_plan"
)

type WorkflowStepExecutionType ¶

type WorkflowStepExecutionType string
const (
	WorkflowStepExecutionTypeSystem   WorkflowStepExecutionType = "system"
	WorkflowStepExecutionTypeUser     WorkflowStepExecutionType = "user"
	WorkflowStepExecutionTypeApproval WorkflowStepExecutionType = "approval"
	WorkflowStepExecutionTypeSkipped  WorkflowStepExecutionType = "skipped"
	WorkflowStepExecutionTypeHidden   WorkflowStepExecutionType = "hidden"
)

type WorkflowStepGroup ¶ added in v0.19.894

type WorkflowStepGroup struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`

	WorkflowID string `json:"workflow_id,omitzero" gorm:"not null" temporaljson:"workflow_id,omitzero,omitempty"`

	GroupIdx int  `json:"group_idx" temporaljson:"group_idx,omitzero,omitempty"`
	Parallel bool `json:"parallel,omitzero" gorm:"default:false" temporaljson:"parallel,omitzero,omitempty"`

	// EagerExecution marks this group for early execution during step generation.
	// When set, the group is returned via the "eager-step-groups" update handler
	// before all groups have been generated, allowing execution to start sooner.
	// This field is not persisted to DB — it is only used during generation.
	EagerExecution bool `json:"eager_execution,omitzero" gorm:"-" temporaljson:"eager_execution,omitzero,omitempty"`

	Status          CompositeStatus `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`
	Name            string          `json:"name,omitzero" temporaljson:"name,omitzero,omitempty"`
	ResultDirective string          `json:"result_directive,omitzero" gorm:"type:text;default:''" temporaljson:"result_directive,omitzero,omitempty"`

	QueueSignal *QueueSignal `json:"queue_signal,omitempty" gorm:"polymorphic:Owner;" temporaljson:"queue_signal,omitzero,omitempty"`

	Steps []WorkflowStep `` /* 128-byte string literal not displayed */
}

func (*WorkflowStepGroup) BeforeCreate ¶ added in v0.19.894

func (g *WorkflowStepGroup) BeforeCreate(tx *gorm.DB) error

func (*WorkflowStepGroup) Indexes ¶ added in v0.19.894

func (g *WorkflowStepGroup) Indexes(db *gorm.DB) []migrations.Index

func (*WorkflowStepGroup) TableName ¶ added in v0.19.894

func (g *WorkflowStepGroup) TableName() string

type WorkflowStepPolicyValidation ¶

type WorkflowStepPolicyValidation struct {
	ID          string                `gorm:"primary_key;check:id_checker,char_length(id)=26" json:"id,omitzero" temporaljson:"id,omitzero,omitempty"`
	CreatedByID string                `json:"created_by_id,omitzero" gorm:"not null;default:null" temporaljson:"created_by_id,omitzero,omitempty"`
	CreatedBy   Account               `gorm:"foreignKey:CreatedByID;references:ID" json:"-" temporaljson:"created_by,omitzero,omitempty"`
	CreatedAt   time.Time             `json:"created_at,omitzero" gorm:"notnull" temporaljson:"created_at,omitzero,omitempty"`
	UpdatedAt   time.Time             `json:"updated_at,omitzero" gorm:"notnull" temporaljson:"updated_at,omitzero,omitempty"`
	DeletedAt   soft_delete.DeletedAt `gorm:"index:idx_app_install_name,unique" json:"-" temporaljson:"deleted_at,omitzero,omitempty"`

	// used for RLS
	OrgID string `json:"org_id,omitzero" gorm:"notnull" swaggerignore:"true" temporaljson:"org_id,omitzero,omitempty"`
	Org   Org    `gorm:"foreignKey:OrgID;references:ID" json:"-" faker:"-" temporaljson:"org,omitzero,omitempty"`

	// runnerJobID is the runner job that this was performed within
	RunnerJobID string `json:"runner_job_id,omitzero" temporaljson:"runner_job_id,omitzero,omitempty"`

	// install workflow step is the install step that this was performed within
	InstallWorkflowStepID string `json:"install_workflow_step_id,omitzero" temporaljson:"install_workflow_step_id,omitzero,omitempty"`

	// status denotes whether this passed, or whether it failed the job.
	Status CompositeStatus `json:"status,omitzero" temporaljson:"status,omitzero,omitempty"`
	// response is the kyverno response (deprecated: use Reports for detailed results)
	Response string `json:"response,omitzero" gorm:"jsonb" temporaljson:"response,omitzero,omitempty"`
}

func (*WorkflowStepPolicyValidation) BeforeCreate ¶ added in v0.19.771

func (v *WorkflowStepPolicyValidation) BeforeCreate(tx *gorm.DB) error

func (*WorkflowStepPolicyValidation) Indexes ¶

func (*WorkflowStepPolicyValidation) TableName ¶

func (v *WorkflowStepPolicyValidation) TableName() string

type WorkflowStepResponseType ¶

type WorkflowStepResponseType string
const (
	WorkflowStepApprovalResponseTypeDeny                     WorkflowStepResponseType = "deny"
	WorkflowStepApprovalResponseTypeApprove                  WorkflowStepResponseType = "approve"
	WorkflowStepApprovalResponseTypeSkipCurrent              WorkflowStepResponseType = "deny-skip-current"
	WorkflowStepApprovalResponseTypeSkipCurrentAndDependents WorkflowStepResponseType = "deny-skip-current-and-dependents"
	WorkflowStepApprovalResponseTypeRetryPlan                WorkflowStepResponseType = "retry"

	// auto approve is when the workflow uses auto-approve
	WorkflowStepApprovalResponseTypeAutoApprove WorkflowStepResponseType = "auto-approve"
)

type WorkflowStepTargetType ¶

type WorkflowStepTargetType string
const (
	WorkflowStepTargetTypeInstallCloudformationStack WorkflowStepTargetType = "install_cloudformation_stack"
	WorkflowStepTargetTypeInstallSandboxRun          WorkflowStepTargetType = "install_sandbox_run"
	WorkflowStepTargetTypeInstallRunnerUpdate        WorkflowStepTargetType = "install_runner_update"
	WorkflowStepTargetTypeInstallDeploy              WorkflowStepTargetType = "install_deploy"
	WorkflowStepTargetTypeInstallActionWorkflowRun   WorkflowStepTargetType = "install_action_workflow_run"

	WorkflowStepTargetTypeInstallDeploys            WorkflowStepTargetType = "install_deploys"
	WorkflowStepTargetTypeInstallSandboxRuns        WorkflowStepTargetType = "install_sandbox_runs"
	WorkflowStepTargetTypeInstallActionWorkflowRuns WorkflowStepTargetType = "install_action_workflow_runs"
	WorkflowStepTargetTypeInstallStackVersions      WorkflowStepTargetType = "install_stack_versions"
	WorkflowStepTargetTypeInstallStates             WorkflowStepTargetType = "install_states"
	WorkflowStepTargetTypeRunners                   WorkflowStepTargetType = "runners"
)

install_cloudformation_stack install_sandbox_run install_runner_update install_deploy install_action_workflow_run (can be many of these)

type WorkflowType ¶

type WorkflowType string
const (
	WorkflowTypeProvision          WorkflowType = "provision"
	WorkflowTypeDeprovision        WorkflowType = "deprovision"
	WorkflowTypeDeprovisionSandbox WorkflowType = "deprovision_sandbox"

	// day-2 triggers
	WorkflowTypeManualDeploy               WorkflowType = "manual_deploy"
	WorkflowTypeInputUpdate                WorkflowType = "input_update"
	WorkflowTypeDeployComponents           WorkflowType = "deploy_components"
	WorkflowTypeTeardownComponent          WorkflowType = "teardown_component"
	WorkflowTypeTeardownComponents         WorkflowType = "teardown_components"
	WorkflowTypeReprovisionSandbox         WorkflowType = "reprovision_sandbox"
	WorkflowTypeDriftRunReprovisionSandbox WorkflowType = "drift_run_reprovision_sandbox"
	WorkflowTypeActionWorkflowRun          WorkflowType = "action_workflow_run"
	WorkflowTypeSyncSecrets                WorkflowType = "sync_secrets"
	WorkflowTypeDriftRun                   WorkflowType = "drift_run"

	// app branches workflows
	WorkflowTypeAppBranchesRun                 WorkflowType = "app_branches_manual_update"
	WorkflowTypeAppBranchesConfigRepoUpdate    WorkflowType = "app_branches_config_repo_update"
	WorkflowTypeAppBranchesComponentRepoUpdate WorkflowType = "app_branches_component_repo_update"

	// reprovision everything
	WorkflowTypeReprovision WorkflowType = "reprovision"

	// app config builds
	WorkflowTypeAppConfigBuild WorkflowType = "app_config_build"
)

func (WorkflowType) Description ¶

func (i WorkflowType) Description() string

func (WorkflowType) Name ¶

func (i WorkflowType) Name() string

func (WorkflowType) PastTenseName ¶

func (i WorkflowType) PastTenseName() string

Source Files ¶

Directories ¶

Path Synopsis
accounts
actions
admin-dashboard
components/icon
templui component icon - version: v1.3.0 installed by templui v1.3.0 📚 Documentation: https://templui.io/docs/components/icon
templui component icon - version: v1.3.0 installed by templui v1.3.0 📚 Documentation: https://templui.io/docs/components/icon
utils
templui util templui.go - version: v1.3.0 installed by templui v1.3.0
templui util templui.go - version: v1.3.0 installed by templui v1.3.0
apps
auth
components
general
identity-providers
installs
onboarding
orgs
policy_reports
runner-auth
runners
vcs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL