db

package
v0.0.0-...-6a3170c Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2025 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsRecordNotFoundError

func IsRecordNotFoundError(err error) bool

IsRecordNotFoundError returns true if the error is a record not found error.

func PackJob

func PackJob(j *Job, latestExecution *JobExecution, executions []*JobExecution, steps []*Step,
	stepExecutions []*StepExecution,
) (*api.Job, error)

PackJob packs a job into api.Job. latestExecution is the latest job execution. executions are all job executions. steps are all steps of the job. stepExecutions are all step executions of the job.

func PackJobExecution

func PackJobExecution(j *JobExecution, steps []*StepExecution) (*api.JobExecution, error)

PackJobExecution packs a job execution into api.JobExecution. If steps is nil, it will not pack steps.

func PackStep

func PackStep(step *Step, executions []*StepExecution) (*api.Step, error)

PackStep packs a step into api.Step.

func PackStepExecution

func PackStepExecution(s *StepExecution) *api.StepExecution

PackStepExecution packs a step execution into api.StepExecution.

func UnmarshalRunsOn

func UnmarshalRunsOn(body []byte) (*api.RunsOn, error)

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(conn *gorm.DB) *Client

NewClient creates a new database client.

func (*Client) AutoMigrate

func (c *Client) AutoMigrate() error

AutoMigrate migrates the models.

func (*Client) CreateJobExecutions

func (c *Client) CreateJobExecutions(ctx context.Context, options []*CreateJobExecutionOption) ([]*JobExecution, error)

CreateJobExecutions creates new job executions.

func (*Client) CreateJobQueues

func (c *Client) CreateJobQueues(ctx context.Context, options []*CreateJobQueueOption) ([]*JobQueue, error)

CreateJobQueues creates new job queue entity.

func (*Client) CreateJobs

func (c *Client) CreateJobs(ctx context.Context, options []*CreateJobOption) ([]*Job, error)

CreateJobs creates new jobs.

func (*Client) CreatePipeline

func (c *Client) CreatePipeline(ctx context.Context) (*Pipeline, error)

CreatePipeline creates a new pipeline.

func (*Client) CreateStepExecutions

func (c *Client) CreateStepExecutions(ctx context.Context, options []*CreateStepExecutionOption) ([]*StepExecution, error)

CreateStepExecutions creates new step executions.

func (*Client) CreateSteps

func (c *Client) CreateSteps(ctx context.Context, options []*CreateStepOption) ([]*Step, error)

CreateSteps creates new steps.

func (*Client) DeleteJobQueueByJobExecutionID

func (c *Client) DeleteJobQueueByJobExecutionID(ctx context.Context, jobExecutionID int64) error

func (*Client) GetJobByID

func (c *Client) GetJobByID(ctx context.Context, id int64) (*Job, error)

GetJobByID returns a job by its ID.

func (*Client) GetJobExecution

func (c *Client) GetJobExecution(ctx context.Context, id int64) (*JobExecution, error)

func (*Client) GetJobExecutionsByJobID

func (c *Client) GetJobExecutionsByJobID(ctx context.Context, jobID int64) ([]*JobExecution, error)

func (*Client) GetJobQueue

func (c *Client) GetJobQueue(ctx context.Context, jobExecutionID int64) (*JobQueue, error)

func (*Client) GetQueuedJobExecutionIDs

func (c *Client) GetQueuedJobExecutionIDs(ctx context.Context, label string, limit int) ([]*JobQueue, error)

func (*Client) GetStepByID

func (c *Client) GetStepByID(ctx context.Context, id int64) (*Step, error)

GetStepByID returns a step by its ID.

func (*Client) GetStepExecution

func (c *Client) GetStepExecution(ctx context.Context, id int64) (*StepExecution, error)

GetStepExecution returns step execution by id.

func (*Client) GetStepExecutionsByJobExecutionID

func (c *Client) GetStepExecutionsByJobExecutionID(ctx context.Context, jobExecutionID int64) ([]*StepExecution, error)

GetStepExecutionsByJobExecutionID returns step executions by job execution id.

func (*Client) GetStepExecutionsByJobExecutionIDs

func (c *Client) GetStepExecutionsByJobExecutionIDs(ctx context.Context, jobExecutionIDs []int64) (map[int64][]*StepExecution, error)

GetStepExecutionsByJobExecutionIDs returns step executions by job execution id list.

func (*Client) GetStepsByJobID

func (c *Client) GetStepsByJobID(ctx context.Context, jobID int64) ([]*Step, error)

GetStepsByJobID returns steps by job id.

func (*Client) ListHeartbeatJobExecutions

func (c *Client) ListHeartbeatJobExecutions(ctx context.Context, timeout time.Duration) ([]*JobQueue, error)

func (*Client) ResetJobExecution

func (c *Client) ResetJobExecution(ctx context.Context, jobExecutionID int64) error

func (*Client) ResetStepExecutions

func (c *Client) ResetStepExecutions(ctx context.Context, stepExecutionIDs []int64) error

func (*Client) ToMigrateSQL

func (c *Client) ToMigrateSQL() ([]string, error)

ToMigrateSQL generates DDL SQL for the models.

func (*Client) TouchHeartbeat

func (c *Client) TouchHeartbeat(ctx context.Context, jobExecutionID int64) error

func (*Client) Transaction

func (c *Client) Transaction(fc func(client *Client) error) error

Transaction executes a block of code inside a database transaction.

func (*Client) UpdateJobExecution

func (c *Client) UpdateJobExecution(ctx context.Context, option *UpdateJobExecutionOption) (*JobExecution, error)

UpdateJobExecution updates a job execution. Don't use this method directly, A helper function in dispatch.

func (*Client) UpdateJobQueueStatus

func (c *Client) UpdateJobQueueStatus(ctx context.Context, jobExecutionID int64, status api.Status) error

func (*Client) UpdateStepExecution

func (c *Client) UpdateStepExecution(ctx context.Context, option *UpdateStepExecutionOption) (*StepExecution, error)

UpdateStepExecution updates a step execution.

type CreateJobExecutionOption

type CreateJobExecutionOption struct {
	JobID  int64
	Status api.Status
}

type CreateJobOption

type CreateJobOption struct {
	PipelineID       int64
	Name             string
	RunsOn           *api.RunsOn
	WorkingDirectory string
	EnvVar           map[string]string
	DependsOn        []string
	Timeout          int32
}

type CreateJobQueueOption

type CreateJobQueueOption struct {
	JobExecutionID int64
	Label          string
	Status         api.Status
}

type CreateStepExecutionOption

type CreateStepExecutionOption struct {
	JobExecutionID int64
	StepID         int64
	Status         api.Status
}

type CreateStepOption

type CreateStepOption struct {
	PipelineID       int64
	JobID            int64
	Name             string
	User             string
	Container        string
	WorkingDirectory string
	EnvVar           map[string]string
	DependsOn        []string
	Commands         []string
	Script           string
}

type Dialect

type Dialect string
const (
	Postgres Dialect = "postgres"
	SQLite   Dialect = "sqlite"
	Mysql    Dialect = "mysql"
)

type Job

type Job struct {
	ID               int64     `gorm:"column:id;primaryKey;autoIncrement"`
	PipelineID       int64     `gorm:"column:pipeline_id"`
	Name             string    `gorm:"column:name"`
	RunsOn           []byte    `gorm:"column:runs_on"`
	WorkingDirectory string    `gorm:"column:working_directory"`
	EnvVar           []byte    `gorm:"column:env_var"`
	DependsOn        []byte    `gorm:"column:depends_on"`
	Timeout          int32     `gorm:"column:timeout"`
	CreatedAt        time.Time `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt        time.Time `gorm:"column:updated_at;autoUpdateTime"`
}

func (*Job) TableName

func (p *Job) TableName() string

type JobExecution

type JobExecution struct {
	ID          int64      `gorm:"column:id;primaryKey;autoIncrement"`
	JobID       int64      `gorm:"column:job_id"`
	Status      api.Status `gorm:"column:status"`
	Reason      []byte     `gorm:"column:reason"`
	StartedAt   *time.Time `gorm:"column:started_at"`
	CompletedAt *time.Time `gorm:"column:completed_at"`
	CreatedAt   time.Time  `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt   time.Time  `gorm:"column:updated_at;autoUpdateTime"`
}

func (*JobExecution) TableName

func (p *JobExecution) TableName() string

type JobQueue

type JobQueue struct {
	ID             int64      `gorm:"column:id;primaryKey;autoIncrement"`
	Status         api.Status `gorm:"column:status"`
	JobExecutionID int64      `gorm:"column:job_execution_id"`
	Label          string     `gorm:"column:label"`
	Heartbeat      time.Time  `gorm:"column:heartbeat;autoCreateTime"`
	CreatedAt      time.Time  `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt      time.Time  `gorm:"column:updated_at;autoUpdateTime"`
}

func (*JobQueue) TableName

func (p *JobQueue) TableName() string

type Pipeline

type Pipeline struct {
	ID        int64     `gorm:"column:id;primaryKey;autoIncrement"`
	CreatedAt time.Time `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime"`
}

func (*Pipeline) TableName

func (p *Pipeline) TableName() string

type PipelineExecution

type PipelineExecution struct {
	ID          int64     `gorm:"column:id;primaryKey;autoIncrement"`
	PipelineID  int64     `gorm:"column:pipeline_id"`
	StartedAt   time.Time `gorm:"column:started_at"`
	CompletedAt time.Time `gorm:"column:completed_at"`
	CreatedAt   time.Time `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt   time.Time `gorm:"column:updated_at;autoUpdateTime"`
}

func (*PipelineExecution) TableName

func (p *PipelineExecution) TableName() string

type Step

type Step struct {
	ID               int64     `gorm:"column:id;primaryKey;autoIncrement"`
	PipelineID       int64     `gorm:"column:pipeline_id"`
	JobID            int64     `gorm:"column:job_id"`
	Name             string    `gorm:"column:name"`
	User             string    `gorm:"column:user"`
	Container        string    `gorm:"column:container"`
	WorkingDirectory string    `gorm:"column:working_directory"`
	Commands         []byte    `gorm:"column:commands"`
	EnvVar           []byte    `gorm:"column:env_var"`
	DependsOn        []byte    `gorm:"column:depends_on"`
	Script           string    `gorm:"column:script"`
	CreatedAt        time.Time `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt        time.Time `gorm:"column:updated_at;autoUpdateTime"`
}

func (*Step) TableName

func (p *Step) TableName() string

type StepExecution

type StepExecution struct {
	ID             int64      `gorm:"column:id;primaryKey;autoIncrement"`
	JobExecutionID int64      `gorm:"column:job_execution_id"`
	StepID         int64      `gorm:"column:step_id"`
	Status         api.Status `gorm:"column:status"`
	ExitCode       uint32     `gorm:"column:exit_code"`
	StartedAt      *time.Time `gorm:"column:started_at"`
	CompletedAt    *time.Time `gorm:"column:completed_at"`
	CreatedAt      time.Time  `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt      time.Time  `gorm:"column:updated_at;autoUpdateTime"`
}

func (*StepExecution) TableName

func (p *StepExecution) TableName() string

type UpdateJobExecutionOption

type UpdateJobExecutionOption struct {
	ID          int64
	Status      *api.Status
	Reason      *api.Reason
	StartedAt   *time.Time
	CompletedAt *time.Time
}

type UpdateStepExecutionOption

type UpdateStepExecutionOption struct {
	ID          int64
	Status      *api.Status
	ExitCode    *uint32
	StartedAt   *time.Time
	CompletedAt *time.Time
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL