biz

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrAlreadyRepoInOrg = errors.New("there is already an OCI repository associated with this organization")

ProviderSet is biz providers.

Functions

func IsErrInvalidUUID

func IsErrInvalidUUID(err error) bool

func IsErrValidation

func IsErrValidation(err error) bool

func IsNotFound

func IsNotFound(err error) bool

Types

type AttachOpts

type AttachOpts struct {
	IntegrationID, WorkflowID, OrgID string
	// The integration that is being attached
	FanOutIntegration sdk.FanOut
	// The attachment configuration
	AttachmentConfig *structpb.Struct
}

type Attestation

type Attestation struct {
	Envelope *dsse.Envelope
}

type CASClient added in v0.8.95

type CASClient interface {
	CASUploader
	CASDownloader
}

type CASClientFactory added in v0.8.96

type CASClientFactory func(conf *conf.Bootstrap_CASServer, token string) (casclient.DownloaderUploader, func(), error)

Function that returns a CAS client including a connection closer method

type CASClientOpts added in v0.8.96

type CASClientOpts func(u *CASClientUseCase)

func WithClientFactory added in v0.8.96

func WithClientFactory(f CASClientFactory) CASClientOpts

type CASClientUseCase added in v0.8.95

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

func NewCASClientUseCase added in v0.8.95

func NewCASClientUseCase(credsProvider *CASCredentialsUseCase, config *conf.Bootstrap_CASServer, l log.Logger, opts ...CASClientOpts) *CASClientUseCase

func (*CASClientUseCase) Download added in v0.8.95

func (uc *CASClientUseCase) Download(ctx context.Context, secretID string, w io.Writer, digest string) error

func (*CASClientUseCase) IsReady added in v0.8.96

func (uc *CASClientUseCase) IsReady(ctx context.Context) (bool, error)

If the CAS server can be reached and reports readiness

func (*CASClientUseCase) Upload added in v0.8.95

func (uc *CASClientUseCase) Upload(ctx context.Context, secretID string, content io.Reader, filename, digest string) error

The secretID is embedded in the JWT token and is used to identify the secret by the CAS server

type CASCredentialsUseCase

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

func NewCASCredentialsUseCase

func NewCASCredentialsUseCase(c *conf.Auth) (*CASCredentialsUseCase, error)

func (*CASCredentialsUseCase) GenerateTemporaryCredentials

func (uc *CASCredentialsUseCase) GenerateTemporaryCredentials(secretID string, role robotaccount.Role) (string, error)

type CASDownloader added in v0.8.95

type CASDownloader interface {
	Download(ctx context.Context, secretID string, w io.Writer, digest string) error
}

type CASUploader added in v0.8.95

type CASUploader interface {
	Upload(ctx context.Context, secretID string, content io.Reader, filename, digest string) error
}

type ContractCreateOpts

type ContractCreateOpts struct {
	Name         string
	OrgID        uuid.UUID
	ContractBody []byte
}

type ContractUpdateOpts

type ContractUpdateOpts struct {
	Name              string
	OrgID, ContractID uuid.UUID
	ContractBody      []byte
}

type CreateOpts

type CreateOpts struct {
	Name, OrgID, Project, Team, ContractID string
}

type ErrInvalidUUID

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

func NewErrInvalidUUID

func NewErrInvalidUUID(err error) ErrInvalidUUID

func (ErrInvalidUUID) Error

func (e ErrInvalidUUID) Error() string

type ErrNotFound

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

func NewErrNotFound

func NewErrNotFound(entity string) ErrNotFound

func (ErrNotFound) Error

func (e ErrNotFound) Error() string

type ErrValidation added in v0.8.95

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

func NewErrValidation added in v0.8.95

func NewErrValidation(err error) ErrValidation

func (ErrValidation) Error added in v0.8.95

func (e ErrValidation) Error() string

type Integration

type Integration struct {
	ID uuid.UUID
	// Kind is the type of the integration, it matches the registered plugin ID
	Kind string
	// Description is a human readable description of the integration registration
	// It helps to differentiate different instances of the same kind
	Description string
	// Registration Configuration, usually JSON marshalled
	Config []byte
	// Identifier to the external provider where any secret information is stored
	SecretName string
	CreatedAt  *time.Time
}

type IntegrationAndAttachment

type IntegrationAndAttachment struct {
	*Integration
	*IntegrationAttachment
}

type IntegrationAttachment

type IntegrationAttachment struct {
	ID                        uuid.UUID
	CreatedAt                 *time.Time
	Config                    []byte
	WorkflowID, IntegrationID uuid.UUID
}

type IntegrationAttachmentRepo

type IntegrationAttachmentRepo interface {
	Create(ctx context.Context, integrationID, workflowID uuid.UUID, config []byte) (*IntegrationAttachment, error)
	List(ctx context.Context, orgID, workflowID uuid.UUID) ([]*IntegrationAttachment, error)
	FindByIDInOrg(ctx context.Context, orgID, ID uuid.UUID) (*IntegrationAttachment, error)
	SoftDelete(ctx context.Context, ID uuid.UUID) error
}

type IntegrationCreateOpts added in v0.11.1

type IntegrationCreateOpts struct {
	Kind, Description, SecretName string
	OrgID                         uuid.UUID
	Config                        []byte
}

type IntegrationRepo

type IntegrationRepo interface {
	Create(ctx context.Context, opts *IntegrationCreateOpts) (*Integration, error)
	List(ctx context.Context, orgID uuid.UUID) ([]*Integration, error)
	FindByIDInOrg(ctx context.Context, orgID, ID uuid.UUID) (*Integration, error)
	SoftDelete(ctx context.Context, ID uuid.UUID) error
}

type IntegrationUseCase

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

func NewIntegrationUseCase added in v0.8.95

func NewIntegrationUseCase(opts *NewIntegrationUseCaseOpts) *IntegrationUseCase

func (*IntegrationUseCase) AttachToWorkflow

func (uc *IntegrationUseCase) AttachToWorkflow(ctx context.Context, opts *AttachOpts) (*IntegrationAttachment, error)

- Integration and workflows exists in current organization - Run specific validation for the integration - Persist integration attachment

func (*IntegrationUseCase) Delete

func (uc *IntegrationUseCase) Delete(ctx context.Context, orgID, integrationID string) error

func (*IntegrationUseCase) Detach

func (uc *IntegrationUseCase) Detach(ctx context.Context, orgID, attachmentID string) error

Detach integration from workflow

func (*IntegrationUseCase) FindByIDInOrg

func (uc *IntegrationUseCase) FindByIDInOrg(ctx context.Context, orgID, id string) (*Integration, error)

func (*IntegrationUseCase) List

func (uc *IntegrationUseCase) List(ctx context.Context, orgID string) ([]*Integration, error)

func (*IntegrationUseCase) ListAttachments

func (uc *IntegrationUseCase) ListAttachments(ctx context.Context, orgID, workflowID string) ([]*IntegrationAttachment, error)

List attachments returns the list of attachments for a given organization and optionally workflow

func (*IntegrationUseCase) RegisterAndSave added in v0.11.1

func (uc *IntegrationUseCase) RegisterAndSave(ctx context.Context, orgID, description string, i sdk.FanOut, regConfig *structpb.Struct) (*Integration, error)

Persist the secret and integration with its configuration in the database

type Membership

type Membership struct {
	ID, UserID, OrganizationID uuid.UUID
	Current                    bool
	CreatedAt, UpdatedAt       *time.Time
	Org                        *Organization
}

type MembershipRepo

type MembershipRepo interface {
	FindByUser(ctx context.Context, userID uuid.UUID) ([]*Membership, error)
	FindByOrg(ctx context.Context, orgID uuid.UUID) ([]*Membership, error)
	FindByIDInUser(ctx context.Context, userID, ID uuid.UUID) (*Membership, error)
	SetCurrent(ctx context.Context, ID uuid.UUID) (*Membership, error)
	Create(ctx context.Context, orgID, userID uuid.UUID, current bool) (*Membership, error)
	Delete(ctx context.Context, ID uuid.UUID) error
}

type MembershipUseCase

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

func NewMembershipUseCase added in v0.8.95

func NewMembershipUseCase(repo MembershipRepo, logger log.Logger) *MembershipUseCase

func (*MembershipUseCase) ByOrg

func (uc *MembershipUseCase) ByOrg(ctx context.Context, orgID string) ([]*Membership, error)

func (*MembershipUseCase) ByUser

func (uc *MembershipUseCase) ByUser(ctx context.Context, userID string) ([]*Membership, error)

func (*MembershipUseCase) Create

func (uc *MembershipUseCase) Create(ctx context.Context, orgID, userID string, current bool) (*Membership, error)

func (*MembershipUseCase) Delete

func (uc *MembershipUseCase) Delete(ctx context.Context, id string) error

func (*MembershipUseCase) SetCurrent

func (uc *MembershipUseCase) SetCurrent(ctx context.Context, userID, membershipID string) (*Membership, error)

type NewIntegrationUseCaseOpts added in v0.8.95

type NewIntegrationUseCaseOpts struct {
	IRepo   IntegrationRepo
	IaRepo  IntegrationAttachmentRepo
	WfRepo  WorkflowRepo
	CredsRW credentials.ReaderWriter
	Logger  log.Logger
}

type NewUserUseCaseParams

type NewUserUseCaseParams struct {
	UserRepo            UserRepo
	MembershipUseCase   *MembershipUseCase
	OrganizationUseCase *OrganizationUseCase
	Logger              log.Logger
}

type OCIRepoCreateOpts

type OCIRepoCreateOpts struct {
	*OCIRepoOpts
	OrgID uuid.UUID
}

type OCIRepoOpts

type OCIRepoOpts struct {
	Repository, Username, Password, SecretName string
}

type OCIRepoUpdateOpts

type OCIRepoUpdateOpts struct {
	*OCIRepoOpts
	ID uuid.UUID
}

type OCIRepoValidationStatus

type OCIRepoValidationStatus string
var OCIRepoValidationFailed OCIRepoValidationStatus = "Invalid"
var OCIRepoValidationOK OCIRepoValidationStatus = "OK"

func (OCIRepoValidationStatus) Values

func (OCIRepoValidationStatus) Values() (kinds []string)

Implements https://pkg.go.dev/entgo.io/ent/schema/field#EnumValues

type OCIRepository

type OCIRepository struct {
	ID, Repo, SecretName   string
	CreatedAt, ValidatedAt *time.Time
	OrganizationID         string
	ValidationStatus       OCIRepoValidationStatus
}

type OCIRepositoryReader

type OCIRepositoryReader interface {
	FindMainRepo(ctx context.Context, orgID string) (*OCIRepository, error)
	FindByID(ctx context.Context, ID string) (*OCIRepository, error)
	PerformValidation(ctx context.Context, ID string) error
}

type OCIRepositoryRepo

type OCIRepositoryRepo interface {
	FindMainRepo(ctx context.Context, orgID uuid.UUID) (*OCIRepository, error)
	FindByID(ctx context.Context, ID uuid.UUID) (*OCIRepository, error)
	UpdateValidationStatus(ctx context.Context, ID uuid.UUID, status OCIRepoValidationStatus) error
	Create(context.Context, *OCIRepoCreateOpts) (*OCIRepository, error)
	Update(context.Context, *OCIRepoUpdateOpts) (*OCIRepository, error)
	Delete(ctx context.Context, ID uuid.UUID) error
}

type OCIRepositoryUseCase

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

func NewOCIRepositoryUseCase added in v0.8.95

func NewOCIRepositoryUseCase(repo OCIRepositoryRepo, credsRW credentials.ReaderWriter, p backend.Provider, l log.Logger) *OCIRepositoryUseCase

func (*OCIRepositoryUseCase) CreateOrUpdate

func (uc *OCIRepositoryUseCase) CreateOrUpdate(ctx context.Context, orgID, repoURL, username, password string) (*OCIRepository, error)

func (*OCIRepositoryUseCase) Delete

func (uc *OCIRepositoryUseCase) Delete(ctx context.Context, id string) error

Delete will delete the secret in the external secrets manager and the repository in the database

func (*OCIRepositoryUseCase) FindByID

func (uc *OCIRepositoryUseCase) FindByID(ctx context.Context, id string) (*OCIRepository, error)

func (*OCIRepositoryUseCase) FindMainRepo

func (uc *OCIRepositoryUseCase) FindMainRepo(ctx context.Context, orgID string) (*OCIRepository, error)

func (*OCIRepositoryUseCase) PerformValidation

func (uc *OCIRepositoryUseCase) PerformValidation(ctx context.Context, id string) (err error)

Validate that the repository is valid and reachable TODO: run this process periodically in the background

type OrgMetricsRepo

type OrgMetricsRepo interface {
	// Total number of runs within the provided time window (from now)
	RunsTotal(ctx context.Context, orgID uuid.UUID, timeWindow time.Duration) (int32, error)
	// Total number by run status
	RunsByStatusTotal(ctx context.Context, orgID uuid.UUID, timeWindow time.Duration) (map[string]int32, error)
	RunsByRunnerTypeTotal(ctx context.Context, orgID uuid.UUID, timeWindow time.Duration) (map[string]int32, error)
	TopWorkflowsByRunsCount(ctx context.Context, orgID uuid.UUID, numWorkflows int, timeWindow time.Duration) ([]*TopWorkflowsByRunsCountItem, error)
}

type OrgMetricsUseCase

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

func NewOrgMetricsUseCase

func NewOrgMetricsUseCase(r OrgMetricsRepo, l log.Logger) (*OrgMetricsUseCase, error)

func (*OrgMetricsUseCase) RunsTotal

func (uc *OrgMetricsUseCase) RunsTotal(ctx context.Context, orgID string, timeWindow time.Duration) (int32, error)

func (*OrgMetricsUseCase) RunsTotalByRunnerType

func (uc *OrgMetricsUseCase) RunsTotalByRunnerType(ctx context.Context, orgID string, timeWindow time.Duration) (map[string]int32, error)

func (*OrgMetricsUseCase) RunsTotalByStatus

func (uc *OrgMetricsUseCase) RunsTotalByStatus(ctx context.Context, orgID string, timeWindow time.Duration) (map[string]int32, error)

func (*OrgMetricsUseCase) TopWorkflowsByRunsCount

func (uc *OrgMetricsUseCase) TopWorkflowsByRunsCount(ctx context.Context, orgID string, numWorkflows int, timeWindow time.Duration) ([]*TopWorkflowsByRunsCountItem, error)

type Organization

type Organization struct {
	ID, Name  string
	CreatedAt *time.Time
}

type OrganizationRepo

type OrganizationRepo interface {
	FindByID(ctx context.Context, orgID uuid.UUID) (*Organization, error)
	Create(ctx context.Context, name string) (*Organization, error)
	Delete(ctx context.Context, ID uuid.UUID) error
}

type OrganizationUseCase

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

func NewOrganizationUseCase added in v0.8.95

func NewOrganizationUseCase(repo OrganizationRepo, repoUC *OCIRepositoryUseCase, iUC *IntegrationUseCase, logger log.Logger) *OrganizationUseCase

func (*OrganizationUseCase) Create

func (uc *OrganizationUseCase) Create(ctx context.Context, name string) (*Organization, error)

func (*OrganizationUseCase) Delete

func (uc *OrganizationUseCase) Delete(ctx context.Context, id string) error

Delete deletes an organization and all relevant data This includes: - The organization - The associated repositories - The associated integrations The reason for just deleting these two associated components only is because they have external secrets that need to be deleted as well, and for that we leverage their own delete methods The rest of the data gets removed by the database cascade delete

func (*OrganizationUseCase) FindByID

func (uc *OrganizationUseCase) FindByID(ctx context.Context, id string) (*Organization, error)

type RobotAccount

type RobotAccount struct {
	Name                 string
	ID                   uuid.UUID
	JWT                  string
	WorkflowID           uuid.UUID
	CreatedAt, RevokedAt *time.Time
}

type RobotAccountRepo

type RobotAccountRepo interface {
	Create(ctx context.Context, name string, workflowID uuid.UUID) (*RobotAccount, error)
	List(ctx context.Context, workflowID uuid.UUID, includeRevoked bool) ([]*RobotAccount, error)
	FindByID(ctx context.Context, ID uuid.UUID) (*RobotAccount, error)
	Revoke(ctx context.Context, orgID, ID uuid.UUID) error
}

type RobotAccountUseCase

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

func NewRootAccountUseCase

func NewRootAccountUseCase(robotAccountRepo RobotAccountRepo, workflowRepo WorkflowRepo, conf *conf.Auth, logger log.Logger) *RobotAccountUseCase

func (*RobotAccountUseCase) Create

func (uc *RobotAccountUseCase) Create(ctx context.Context, name string, orgID, workflowID string) (*RobotAccount, error)

func (*RobotAccountUseCase) FindByID

func (uc *RobotAccountUseCase) FindByID(ctx context.Context, id string) (*RobotAccount, error)

func (*RobotAccountUseCase) List

func (uc *RobotAccountUseCase) List(ctx context.Context, orgID, workflowID string, includeRevoked bool) ([]*RobotAccount, error)

func (*RobotAccountUseCase) Revoke

func (uc *RobotAccountUseCase) Revoke(ctx context.Context, orgID, id string) error

type TopWorkflowsByRunsCountItem

type TopWorkflowsByRunsCountItem struct {
	Workflow *Workflow
	ByStatus map[string]int32
	Total    int32
}

type User

type User struct {
	ID        string
	Email     string
	CreatedAt *time.Time
}

type UserOrgFinder

type UserOrgFinder interface {
	FindByID(ctx context.Context, userID string) (*User, error)
	CurrentOrg(ctx context.Context, userID string) (*Organization, error)
}

type UserRepo

type UserRepo interface {
	CreateByEmail(ctx context.Context, email string) (*User, error)
	FindByEmail(ctx context.Context, email string) (*User, error)
	FindByID(ctx context.Context, userID uuid.UUID) (*User, error)
	Delete(ctx context.Context, userID uuid.UUID) error
}

type UserUseCase

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

func NewUserUseCase

func NewUserUseCase(opts *NewUserUseCaseParams) *UserUseCase

func (*UserUseCase) CurrentOrg

func (uc *UserUseCase) CurrentOrg(ctx context.Context, userID string) (*Organization, error)

Find the organization associated with the user that's marked as current

func (*UserUseCase) DeleteUser

func (uc *UserUseCase) DeleteUser(ctx context.Context, userID string) error

DeleteUser deletes the user, related memberships and organization if needed

func (*UserUseCase) FindByID

func (uc *UserUseCase) FindByID(ctx context.Context, userID string) (*User, error)

func (*UserUseCase) FindOrCreateByEmail

func (uc *UserUseCase) FindOrCreateByEmail(ctx context.Context, email string) (*User, error)

type Workflow

type Workflow struct {
	Name, Team, Project   string
	CreatedAt             *time.Time
	RunsCounter           int
	LastRun               *WorkflowRun
	ID, ContractID, OrgID uuid.UUID
}

type WorkflowContract

type WorkflowContract struct {
	ID             uuid.UUID
	Name           string
	LatestRevision int
	CreatedAt      *time.Time
	// WorkflowIDs is the list of workflows associated with this contract
	WorkflowIDs []string
}

type WorkflowContractRepo

type WorkflowContractRepo interface {
	Create(ctx context.Context, opts *ContractCreateOpts) (*WorkflowContract, error)
	List(ctx context.Context, orgID uuid.UUID) ([]*WorkflowContract, error)
	FindByIDInOrg(ctx context.Context, orgID, ID uuid.UUID) (*WorkflowContract, error)
	Describe(ctx context.Context, orgID, contractID uuid.UUID, revision int) (*WorkflowContractWithVersion, error)
	FindVersionByID(ctx context.Context, versionID uuid.UUID) (*WorkflowContractVersion, error)
	Update(ctx context.Context, opts *ContractUpdateOpts) (*WorkflowContractWithVersion, error)
	SoftDelete(ctx context.Context, contractID uuid.UUID) error
}

type WorkflowContractUseCase

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

func NewWorkflowContractUseCase added in v0.8.95

func NewWorkflowContractUseCase(repo WorkflowContractRepo, logger log.Logger) *WorkflowContractUseCase

func (*WorkflowContractUseCase) Create

func (uc *WorkflowContractUseCase) Create(ctx context.Context, orgID, name string, schema *schemav1.CraftingSchema) (*WorkflowContract, error)

we currently only support schema v1

func (*WorkflowContractUseCase) Delete

func (uc *WorkflowContractUseCase) Delete(ctx context.Context, orgID, contractID string) error

Delete soft-deletes the entry

func (*WorkflowContractUseCase) Describe

func (uc *WorkflowContractUseCase) Describe(ctx context.Context, orgID, contractID string, revision int) (*WorkflowContractWithVersion, error)

func (*WorkflowContractUseCase) FindByIDInOrg

func (uc *WorkflowContractUseCase) FindByIDInOrg(ctx context.Context, orgID, contractID string) (*WorkflowContract, error)

func (*WorkflowContractUseCase) FindVersionByID

func (uc *WorkflowContractUseCase) FindVersionByID(ctx context.Context, versionID string) (*WorkflowContractVersion, error)

func (*WorkflowContractUseCase) List

func (*WorkflowContractUseCase) Update

func (uc *WorkflowContractUseCase) Update(ctx context.Context, orgID, contractID, name string, schema *schemav1.CraftingSchema) (*WorkflowContractWithVersion, error)

type WorkflowContractVersion

type WorkflowContractVersion struct {
	ID        uuid.UUID
	Revision  int
	CreatedAt *time.Time
	BodyV1    *schemav1.CraftingSchema
}

type WorkflowContractWithVersion

type WorkflowContractWithVersion struct {
	Contract *WorkflowContract
	Version  *WorkflowContractVersion
}

type WorkflowRepo

type WorkflowRepo interface {
	Create(context.Context, *CreateOpts) (*Workflow, error)
	List(ctx context.Context, orgID uuid.UUID) ([]*Workflow, error)
	GetOrgScoped(ctx context.Context, orgID, workflowID uuid.UUID) (*Workflow, error)
	IncRunsCounter(ctx context.Context, workflowID uuid.UUID) error
	FindByID(ctx context.Context, workflowID uuid.UUID) (*Workflow, error)
	SoftDelete(ctx context.Context, workflowID uuid.UUID) error
}

type WorkflowRun

type WorkflowRun struct {
	ID                    uuid.UUID
	State, Reason         string
	CreatedAt, FinishedAt *time.Time
	Workflow              *Workflow
	AttestationID         uuid.UUID
	RunURL, RunnerType    string
	ContractVersionID     uuid.UUID
	Attestation           *Attestation
}

type WorkflowRunCreateOpts

type WorkflowRunCreateOpts struct {
	WorkflowID, RobotaccountID string
	ContractRevisionUUID       uuid.UUID
	RunnerRunURL               string
	RunnerType                 string
}

type WorkflowRunExpirerOpts

type WorkflowRunExpirerOpts struct {
	// Maximum time threshold for what a workflowRun will be considered expired
	ExpirationWindow time.Duration
	CheckInterval    time.Duration
}

type WorkflowRunExpirerUseCase

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

func NewWorkflowRunExpirerUseCase

func NewWorkflowRunExpirerUseCase(wfrRepo WorkflowRunRepo, logger log.Logger) *WorkflowRunExpirerUseCase

func (*WorkflowRunExpirerUseCase) ExpirationSweep

func (uc *WorkflowRunExpirerUseCase) ExpirationSweep(ctx context.Context, olderThan time.Time) error

ExpirationSweep looks for runs older than the provider time and marks them as expired

func (*WorkflowRunExpirerUseCase) Run

type WorkflowRunRepo

type WorkflowRunRepo interface {
	Create(ctx context.Context, workflowID, robotaccountID, contractVersion uuid.UUID, runURL, runnerType string) (*WorkflowRun, error)
	FindByID(ctx context.Context, ID uuid.UUID) (*WorkflowRun, error)
	FindByIDInOrg(ctx context.Context, orgID, ID uuid.UUID) (*WorkflowRun, error)
	MarkAsFinished(ctx context.Context, ID uuid.UUID, status WorkflowRunStatus, reason string) error
	SaveAttestation(ctx context.Context, ID uuid.UUID, att *dsse.Envelope) error
	List(ctx context.Context, orgID, workflowID uuid.UUID, p *pagination.Options) ([]*WorkflowRun, string, error)
	// List the runs that have not finished and are older than a given time
	ListNotFinishedOlderThan(ctx context.Context, olderThan time.Time) ([]*WorkflowRun, error)
	// Set run as expired
	Expire(ctx context.Context, id uuid.UUID) error
}

type WorkflowRunStatus

type WorkflowRunStatus string
const (
	WorkflowRunInitialized WorkflowRunStatus = "initialized"
	WorkflowRunSuccess     WorkflowRunStatus = "success"
	WorkflowRunError       WorkflowRunStatus = "error"
	WorkflowRunExpired     WorkflowRunStatus = "expired"
	WorkflowRunCancelled   WorkflowRunStatus = "canceled"
)

func (WorkflowRunStatus) Values

func (WorkflowRunStatus) Values() (kinds []string)

Implements https://pkg.go.dev/entgo.io/ent/schema/field#EnumValues

type WorkflowRunUseCase

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

func NewWorkflowRunUseCase added in v0.8.95

func NewWorkflowRunUseCase(wfrRepo WorkflowRunRepo, wfRepo WorkflowRepo, logger log.Logger) (*WorkflowRunUseCase, error)

func (*WorkflowRunUseCase) Create

Create will add a new WorkflowRun, associate it to a schemaVersion and increment the counter in the associated workflow

func (*WorkflowRunUseCase) ExistsInWorkflow

func (uc *WorkflowRunUseCase) ExistsInWorkflow(ctx context.Context, workflowID, id string) (bool, error)

The workflowRun belongs to the provided workflowRun

func (*WorkflowRunUseCase) List

func (uc *WorkflowRunUseCase) List(ctx context.Context, orgID, workflowID string, p *pagination.Options) ([]*WorkflowRun, string, error)

List the workflowruns associated with an org and optionally filtered by a workflow

func (*WorkflowRunUseCase) MarkAsFinished

func (uc *WorkflowRunUseCase) MarkAsFinished(ctx context.Context, id string, status WorkflowRunStatus, reason string) error

func (*WorkflowRunUseCase) SaveAttestation added in v0.11.1

func (uc *WorkflowRunUseCase) SaveAttestation(ctx context.Context, id string, envelope *dsse.Envelope) error

func (*WorkflowRunUseCase) View

func (uc *WorkflowRunUseCase) View(ctx context.Context, orgID, runID string) (*WorkflowRun, error)

type WorkflowRunWithContract

type WorkflowRunWithContract struct {
	*WorkflowRun
	*WorkflowContractVersion
}

type WorkflowUseCase

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

func NewWorkflowUsecase

func NewWorkflowUsecase(wfr WorkflowRepo, schemaUC *WorkflowContractUseCase, logger log.Logger) *WorkflowUseCase

func (*WorkflowUseCase) Create

func (uc *WorkflowUseCase) Create(ctx context.Context, opts *CreateOpts) (*Workflow, error)

func (*WorkflowUseCase) Delete

func (uc *WorkflowUseCase) Delete(ctx context.Context, orgID, workflowID string) error

Delete soft-deletes the entry

func (*WorkflowUseCase) FindByID

func (uc *WorkflowUseCase) FindByID(ctx context.Context, workflowID string) (*Workflow, error)

func (*WorkflowUseCase) FindByIDInOrg

func (uc *WorkflowUseCase) FindByIDInOrg(ctx context.Context, orgID, workflowID string) (*Workflow, error)

func (*WorkflowUseCase) IncRunsCounter

func (uc *WorkflowUseCase) IncRunsCounter(ctx context.Context, workflowID string) error

func (*WorkflowUseCase) List

func (uc *WorkflowUseCase) List(ctx context.Context, orgID string) ([]*Workflow, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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