You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

v27.go 1.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright 2017 Gitea. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package migrations
  5. import (
  6. "fmt"
  7. "time"
  8. "github.com/go-xorm/xorm"
  9. )
  10. func convertIntervalToDuration(x *xorm.Engine) (err error) {
  11. type Repository struct {
  12. ID int64
  13. OwnerID int64
  14. Name string
  15. }
  16. type Mirror struct {
  17. ID int64 `xorm:"pk autoincr"`
  18. RepoID int64 `xorm:"INDEX"`
  19. Repo *Repository `xorm:"-"`
  20. Interval time.Duration
  21. EnablePrune bool `xorm:"NOT NULL DEFAULT true"`
  22. Updated time.Time `xorm:"-"`
  23. UpdatedUnix int64 `xorm:"INDEX"`
  24. NextUpdate time.Time `xorm:"-"`
  25. NextUpdateUnix int64 `xorm:"INDEX"`
  26. address string `xorm:"-"`
  27. }
  28. sess := x.NewSession()
  29. defer sess.Close()
  30. if err := sess.Begin(); err != nil {
  31. return err
  32. }
  33. var mirrors []Mirror
  34. err = sess.Table("mirror").Select("*").Find(&mirrors)
  35. if err != nil {
  36. return fmt.Errorf("Query repositories: %v", err)
  37. }
  38. for _, mirror := range mirrors {
  39. mirror.Interval = mirror.Interval * time.Hour
  40. _, err := sess.Id(mirror.ID).Cols("interval").Update(mirror)
  41. if err != nil {
  42. return fmt.Errorf("update mirror interval failed: %v", err)
  43. }
  44. }
  45. return sess.Commit()
  46. }