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