gitea源码

v182.go 1002B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package v1_15
  4. import (
  5. "xorm.io/xorm"
  6. )
  7. func AddIssueResourceIndexTable(x *xorm.Engine) error {
  8. type ResourceIndex struct {
  9. GroupID int64 `xorm:"pk"`
  10. MaxIndex int64 `xorm:"index"`
  11. }
  12. sess := x.NewSession()
  13. defer sess.Close()
  14. if err := sess.Begin(); err != nil {
  15. return err
  16. }
  17. if err := sess.Table("issue_index").Sync(new(ResourceIndex)); err != nil {
  18. return err
  19. }
  20. // Remove data we're goint to rebuild
  21. if _, err := sess.Table("issue_index").Where("1=1").Delete(&ResourceIndex{}); err != nil {
  22. return err
  23. }
  24. // Create current data for all repositories with issues and PRs
  25. if _, err := sess.Exec("INSERT INTO issue_index (group_id, max_index) " +
  26. "SELECT max_data.repo_id, max_data.max_index " +
  27. "FROM ( SELECT issue.repo_id AS repo_id, max(issue.`index`) AS max_index " +
  28. "FROM issue GROUP BY issue.repo_id) AS max_data"); err != nil {
  29. return err
  30. }
  31. return sess.Commit()
  32. }