@@ -18,6 +18,7 @@ import (
1818 "code.gitea.io/gitea/modules/timeutil"
1919
2020 "xorm.io/builder"
21+ "xorm.io/xorm/schemas"
2122)
2223
2324type (
@@ -50,25 +51,64 @@ const (
5051// Notification represents a notification
5152type Notification struct {
5253 ID int64 `xorm:"pk autoincr"`
53- UserID int64 `xorm:"INDEX NOT NULL"`
54- RepoID int64 `xorm:"INDEX NOT NULL"`
54+ UserID int64 `xorm:"NOT NULL"`
55+ RepoID int64 `xorm:"NOT NULL"`
5556
56- Status NotificationStatus `xorm:"SMALLINT INDEX NOT NULL"`
57- Source NotificationSource `xorm:"SMALLINT INDEX NOT NULL"`
57+ Status NotificationStatus `xorm:"SMALLINT NOT NULL"`
58+ Source NotificationSource `xorm:"SMALLINT NOT NULL"`
5859
59- IssueID int64 `xorm:"INDEX NOT NULL"`
60- CommitID string `xorm:"INDEX"`
60+ IssueID int64 `xorm:"NOT NULL"`
61+ CommitID string
6162 CommentID int64
6263
63- UpdatedBy int64 `xorm:"INDEX NOT NULL"`
64+ UpdatedBy int64 `xorm:"NOT NULL"`
6465
6566 Issue * issues_model.Issue `xorm:"-"`
6667 Repository * repo_model.Repository `xorm:"-"`
6768 Comment * issues_model.Comment `xorm:"-"`
6869 User * user_model.User `xorm:"-"`
6970
70- CreatedUnix timeutil.TimeStamp `xorm:"created INDEX NOT NULL"`
71- UpdatedUnix timeutil.TimeStamp `xorm:"updated INDEX NOT NULL"`
71+ CreatedUnix timeutil.TimeStamp `xorm:"created NOT NULL"`
72+ UpdatedUnix timeutil.TimeStamp `xorm:"updated NOT NULL"`
73+ }
74+
75+ // TableIndices implements xorm's TableIndices interface
76+ func (n * Notification ) TableIndices () []* schemas.Index {
77+ indices := make ([]* schemas.Index , 0 , 8 )
78+ usuuIndex := schemas .NewIndex ("u_s_uu" , schemas .IndexType )
79+ usuuIndex .AddColumn ("user_id" , "status" , "updated_unix" )
80+ indices = append (indices , usuuIndex )
81+
82+ // Add the individual indices that were previously defined in struct tags
83+ userIDIndex := schemas .NewIndex ("idx_notification_user_id" , schemas .IndexType )
84+ userIDIndex .AddColumn ("user_id" )
85+ indices = append (indices , userIDIndex )
86+
87+ repoIDIndex := schemas .NewIndex ("idx_notification_repo_id" , schemas .IndexType )
88+ repoIDIndex .AddColumn ("repo_id" )
89+ indices = append (indices , repoIDIndex )
90+
91+ statusIndex := schemas .NewIndex ("idx_notification_status" , schemas .IndexType )
92+ statusIndex .AddColumn ("status" )
93+ indices = append (indices , statusIndex )
94+
95+ sourceIndex := schemas .NewIndex ("idx_notification_source" , schemas .IndexType )
96+ sourceIndex .AddColumn ("source" )
97+ indices = append (indices , sourceIndex )
98+
99+ issueIDIndex := schemas .NewIndex ("idx_notification_issue_id" , schemas .IndexType )
100+ issueIDIndex .AddColumn ("issue_id" )
101+ indices = append (indices , issueIDIndex )
102+
103+ commitIDIndex := schemas .NewIndex ("idx_notification_commit_id" , schemas .IndexType )
104+ commitIDIndex .AddColumn ("commit_id" )
105+ indices = append (indices , commitIDIndex )
106+
107+ updatedByIndex := schemas .NewIndex ("idx_notification_updated_by" , schemas .IndexType )
108+ updatedByIndex .AddColumn ("updated_by" )
109+ indices = append (indices , updatedByIndex )
110+
111+ return indices
72112}
73113
74114func init () {
0 commit comments