1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package actions
-
- import (
- "context"
-
- "code.gitea.io/gitea/models/db"
- repo_model "code.gitea.io/gitea/models/repo"
- "code.gitea.io/gitea/modules/timeutil"
-
- "github.com/robfig/cron/v3"
- )
-
- // ActionScheduleSpec represents a schedule spec of a workflow file
- type ActionScheduleSpec struct {
- ID int64
- RepoID int64 `xorm:"index"`
- Repo *repo_model.Repository `xorm:"-"`
- ScheduleID int64 `xorm:"index"`
- Schedule *ActionSchedule `xorm:"-"`
-
- // Next time the job will run, or the zero time if Cron has not been
- // started or this entry's schedule is unsatisfiable
- Next timeutil.TimeStamp `xorm:"index"`
- // Prev is the last time this job was run, or the zero time if never.
- Prev timeutil.TimeStamp
- Spec string
-
- Created timeutil.TimeStamp `xorm:"created"`
- Updated timeutil.TimeStamp `xorm:"updated"`
- }
-
- func (s *ActionScheduleSpec) Parse() (cron.Schedule, error) {
- return cronParser.Parse(s.Spec)
- }
-
- func init() {
- db.RegisterModel(new(ActionScheduleSpec))
- }
-
- func UpdateScheduleSpec(ctx context.Context, spec *ActionScheduleSpec, cols ...string) error {
- sess := db.GetEngine(ctx).ID(spec.ID)
- if len(cols) > 0 {
- sess.Cols(cols...)
- }
- _, err := sess.Update(spec)
- return err
- }
|