// Copyright 2026 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package v1_27 import ( "gitea.dev/modelmigration/base" "gitea.dev/modules/timeutil" "xorm.io/xorm" ) func AddScopedWorkflowsSchema(x base.EngineMigration) error { // Create the action_scoped_workflow_source table type ScopedWorkflowConfig struct { Required bool `json:"required"` Patterns []string `json:"patterns"` } type ActionScopedWorkflowSource struct { ID int64 `xorm:"pk autoincr"` OwnerID int64 `xorm:"UNIQUE(owner_repo) NOT NULL DEFAULT 0"` SourceRepoID int64 `xorm:"INDEX UNIQUE(owner_repo) NOT NULL DEFAULT 0"` WorkflowConfigs map[string]*ScopedWorkflowConfig `xorm:"JSON TEXT 'workflow_configs'"` CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` } if err := x.Sync(new(ActionScopedWorkflowSource)); err != nil { return err } // Add the columns that record where a run's workflow content came from type ActionRun struct { WorkflowRepoID int64 `xorm:"NOT NULL DEFAULT 0"` WorkflowCommitSHA string `xorm:"VARCHAR(64) NOT NULL DEFAULT ''"` IsScopedRun bool `xorm:"NOT NULL DEFAULT false"` } _, err := x.SyncWithOptions(xorm.SyncOptions{ IgnoreDropIndices: true, IgnoreConstrains: true, }, new(ActionRun)) return err }