12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package actions
-
- import (
- "context"
-
- "code.gitea.io/gitea/models/db"
- )
-
- // ActionTaskOutput represents an output of ActionTask.
- // So the outputs are bound to a task, that means when a completed job has been rerun,
- // the outputs of the job will be reset because the task is new.
- // It's by design, to avoid the outputs of the old task to be mixed with the new task.
- type ActionTaskOutput struct {
- ID int64
- TaskID int64 `xorm:"INDEX UNIQUE(task_id_output_key)"`
- OutputKey string `xorm:"VARCHAR(255) UNIQUE(task_id_output_key)"`
- OutputValue string `xorm:"MEDIUMTEXT"`
- }
-
- func init() {
- db.RegisterModel(new(ActionTaskOutput))
- }
-
- // FindTaskOutputByTaskID returns the outputs of the task.
- func FindTaskOutputByTaskID(ctx context.Context, taskID int64) ([]*ActionTaskOutput, error) {
- var outputs []*ActionTaskOutput
- return outputs, db.GetEngine(ctx).Where("task_id=?", taskID).Find(&outputs)
- }
-
- // FindTaskOutputKeyByTaskID returns the keys of the outputs of the task.
- func FindTaskOutputKeyByTaskID(ctx context.Context, taskID int64) ([]string, error) {
- var keys []string
- return keys, db.GetEngine(ctx).Table(ActionTaskOutput{}).Where("task_id=?", taskID).Cols("output_key").Find(&keys)
- }
-
- // InsertTaskOutputIfNotExist inserts a new task output if it does not exist.
- func InsertTaskOutputIfNotExist(ctx context.Context, taskID int64, key, value string) error {
- return db.WithTx(ctx, func(ctx context.Context) error {
- sess := db.GetEngine(ctx)
- if exist, err := sess.Exist(&ActionTaskOutput{TaskID: taskID, OutputKey: key}); err != nil {
- return err
- } else if exist {
- return nil
- }
- _, err := sess.Insert(&ActionTaskOutput{
- TaskID: taskID,
- OutputKey: key,
- OutputValue: value,
- })
- return err
- })
- }
|