Skip to content

Commit

Permalink
Merge pull request #2132 from semaphoreui/schedule
Browse files Browse the repository at this point in the history
schedule
  • Loading branch information
fiftin committed Jun 24, 2024
2 parents dabc8eb + a4c9ef9 commit 6b945e8
Show file tree
Hide file tree
Showing 14 changed files with 33,837 additions and 33,253 deletions.
11 changes: 11 additions & 0 deletions api/projects/schedules.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,17 @@ func GetSchedule(w http.ResponseWriter, r *http.Request) {
helpers.WriteJSON(w, http.StatusOK, schedule)
}

func GetProjectSchedules(w http.ResponseWriter, r *http.Request) {
project := context.Get(r, "project").(db.Project)

tplSchedules, err := helpers.Store(r).GetProjectSchedules(project.ID)
if err != nil {
helpers.WriteError(w, err)
return
}

helpers.WriteJSON(w, http.StatusOK, tplSchedules)
}
func GetTemplateSchedules(w http.ResponseWriter, r *http.Request) {
project := context.Get(r, "project").(db.Project)
templateID, err := helpers.GetIntParam("template_id", w, r)
Expand Down
1 change: 1 addition & 0 deletions api/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ func Route() *mux.Router {
projectUserAPI.Path("/templates").HandlerFunc(projects.GetTemplates).Methods("GET", "HEAD")
projectUserAPI.Path("/templates").HandlerFunc(projects.AddTemplate).Methods("POST")

projectUserAPI.Path("/schedules").HandlerFunc(projects.GetProjectSchedules).Methods("GET", "HEAD")
projectUserAPI.Path("/schedules").HandlerFunc(projects.AddSchedule).Methods("POST")
projectUserAPI.Path("/schedules/validate").HandlerFunc(projects.ValidateScheduleCronFormat).Methods("POST")

Expand Down
5 changes: 5 additions & 0 deletions db/Schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@ type Schedule struct {
RepositoryID *int `db:"repository_id" json:"repository_id"`
LastCommitHash *string `db:"last_commit_hash" json:"-"`
}

type ScheduleWithTpl struct {
Schedule
TemplateName string `db:"tpl_name" json:"tpl_name"`
}
1 change: 1 addition & 0 deletions db/Store.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ type Store interface {
DeleteTemplate(projectID int, templateID int) error

GetSchedules() ([]Schedule, error)
GetProjectSchedules(projectID int) ([]ScheduleWithTpl, error)
GetTemplateSchedules(projectID int, templateID int) ([]Schedule, error)
CreateSchedule(schedule Schedule) (Schedule, error)
UpdateSchedule(schedule Schedule) error
Expand Down
14 changes: 11 additions & 3 deletions db/bolt/schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func (d *BoltDb) GetSchedules() (schedules []db.Schedule, err error) {

for _, proj := range allProjects {
var projSchedules []db.Schedule
projSchedules, err = d.GetProjectSchedules(proj.ID)
projSchedules, err = d.getProjectSchedules(proj.ID)
if err != nil {
return
}
Expand All @@ -26,15 +26,23 @@ func (d *BoltDb) GetSchedules() (schedules []db.Schedule, err error) {
return
}

func (d *BoltDb) GetProjectSchedules(projectID int) (schedules []db.Schedule, err error) {
func (d *BoltDb) getProjectSchedules(projectID int) (schedules []db.Schedule, err error) {
err = d.getObjects(projectID, db.ScheduleProps, db.RetrieveQueryParams{}, nil, &schedules)
return
}

func (d *BoltDb) GetProjectSchedules(projectID int) (schedules []db.ScheduleWithTpl, err error) {
err = d.getObjects(projectID, db.ScheduleProps, db.RetrieveQueryParams{}, func(referringObj interface{}) bool {
s := referringObj.(db.ScheduleWithTpl)
return s.RepositoryID == nil
}, &schedules)
return
}

func (d *BoltDb) GetTemplateSchedules(projectID int, templateID int) (schedules []db.Schedule, err error) {
schedules = make([]db.Schedule, 0)

projSchedules, err := d.GetProjectSchedules(projectID)
projSchedules, err := d.getProjectSchedules(projectID)
if err != nil {
return
}
Expand Down
9 changes: 9 additions & 0 deletions db/sql/schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,15 @@ func (d *SqlDb) GetSchedules() (schedules []db.Schedule, err error) {
return
}

func (d *SqlDb) GetProjectSchedules(projectID int) (schedules []db.ScheduleWithTpl, err error) {
_, err = d.selectAll(&schedules,
"SELECT ps.*, pt.name as tpl_name FROM project__schedule ps "+
"JOIN project__template pt ON pt.id = ps.template_id "+
"WHERE ps.repository_id IS NULL AND ps.project_id=?",
projectID)
return
}

func (d *SqlDb) GetTemplateSchedules(projectID int, templateID int) (schedules []db.Schedule, err error) {
_, err = d.selectAll(&schedules,
"select * from project__schedule where project_id=? and template_id=?",
Expand Down
Loading

0 comments on commit 6b945e8

Please sign in to comment.