diff options
Diffstat (limited to 'models/migrations/v39.go')
-rw-r--r-- | models/migrations/v39.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/models/migrations/v39.go b/models/migrations/v39.go new file mode 100644 index 0000000000..a536cd9d62 --- /dev/null +++ b/models/migrations/v39.go @@ -0,0 +1,65 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package migrations + +import ( + "fmt" + "time" + + "code.gitea.io/gitea/modules/setting" + + "github.com/go-xorm/xorm" +) + +// Stopwatch see models/issue_stopwatch.go +type Stopwatch struct { + ID int64 `xorm:"pk autoincr"` + IssueID int64 `xorm:"INDEX"` + UserID int64 `xorm:"INDEX"` + Created time.Time `xorm:"-"` + CreatedUnix int64 +} + +// TrackedTime see models/issue_tracked_time.go +type TrackedTime struct { + ID int64 `xorm:"pk autoincr" json:"id"` + IssueID int64 `xorm:"INDEX" json:"issue_id"` + UserID int64 `xorm:"INDEX" json:"user_id"` + Created time.Time `xorm:"-" json:"created"` + CreatedUnix int64 `json:"-"` + Time int64 `json:"time"` +} + +func addTimetracking(x *xorm.Engine) error { + if err := x.Sync2(new(Stopwatch)); err != nil { + return fmt.Errorf("Sync2: %v", err) + } + if err := x.Sync2(new(TrackedTime)); err != nil { + return fmt.Errorf("Sync2: %v", err) + } + //Updating existing issue units + var units []*RepoUnit + x.Where("type = ?", V16UnitTypeIssues).Find(&units) + for _, unit := range units { + if unit.Config == nil { + unit.Config = make(map[string]interface{}) + } + changes := false + if _, ok := unit.Config["EnableTimetracker"]; !ok { + unit.Config["EnableTimetracker"] = setting.Service.DefaultEnableTimetracking + changes = true + } + if _, ok := unit.Config["AllowOnlyContributorsToTrackTime"]; !ok { + unit.Config["AllowOnlyContributorsToTrackTime"] = setting.Service.DefaultAllowOnlyContributorsToTrackTime + changes = true + } + if changes { + if _, err := x.Id(unit.ID).Cols("config").Update(unit); err != nil { + return err + } + } + } + return nil +} |