mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Improve action table indices (#19472)
This commit is contained in:
		| @@ -30,6 +30,7 @@ import ( | |||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
|  |  | ||||||
| 	"xorm.io/builder" | 	"xorm.io/builder" | ||||||
|  | 	"xorm.io/xorm/schemas" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // ActionType represents the type of an action. | // ActionType represents the type of an action. | ||||||
| @@ -70,25 +71,36 @@ const ( | |||||||
| // used in template render. | // used in template render. | ||||||
| type Action struct { | type Action struct { | ||||||
| 	ID          int64 `xorm:"pk autoincr"` | 	ID          int64 `xorm:"pk autoincr"` | ||||||
| 	UserID      int64 `xorm:"INDEX"` // Receiver user id. | 	UserID      int64 // Receiver user id. | ||||||
| 	OpType      ActionType | 	OpType      ActionType | ||||||
| 	ActUserID   int64                  `xorm:"INDEX"` // Action user id. | 	ActUserID   int64            // Action user id. | ||||||
| 	ActUser     *user_model.User `xorm:"-"` | 	ActUser     *user_model.User `xorm:"-"` | ||||||
| 	RepoID      int64                  `xorm:"INDEX"` | 	RepoID      int64 | ||||||
| 	Repo        *repo_model.Repository `xorm:"-"` | 	Repo        *repo_model.Repository `xorm:"-"` | ||||||
| 	CommentID   int64                  `xorm:"INDEX"` | 	CommentID   int64                  `xorm:"INDEX"` | ||||||
| 	Comment     *issues_model.Comment  `xorm:"-"` | 	Comment     *issues_model.Comment  `xorm:"-"` | ||||||
| 	IsDeleted   bool                   `xorm:"INDEX NOT NULL DEFAULT false"` | 	IsDeleted   bool                   `xorm:"NOT NULL DEFAULT false"` | ||||||
| 	RefName     string | 	RefName     string | ||||||
| 	IsPrivate   bool               `xorm:"INDEX NOT NULL DEFAULT false"` | 	IsPrivate   bool               `xorm:"NOT NULL DEFAULT false"` | ||||||
| 	Content     string             `xorm:"TEXT"` | 	Content     string             `xorm:"TEXT"` | ||||||
| 	CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | 	CreatedUnix timeutil.TimeStamp `xorm:"created"` | ||||||
| } | } | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	db.RegisterModel(new(Action)) | 	db.RegisterModel(new(Action)) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // TableIndices implements xorm's TableIndices interface | ||||||
|  | func (a *Action) TableIndices() []*schemas.Index { | ||||||
|  | 	actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType) | ||||||
|  | 	actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted") | ||||||
|  |  | ||||||
|  | 	repoIndex := schemas.NewIndex("r_c_u_d", schemas.IndexType) | ||||||
|  | 	repoIndex.AddColumn("repo_id", "created_unix", "user_id", "is_deleted") | ||||||
|  |  | ||||||
|  | 	return []*schemas.Index{actUserIndex, repoIndex} | ||||||
|  | } | ||||||
|  |  | ||||||
| // GetOpType gets the ActionType of this action. | // GetOpType gets the ActionType of this action. | ||||||
| func (a *Action) GetOpType() ActionType { | func (a *Action) GetOpType() ActionType { | ||||||
| 	return a.OpType | 	return a.OpType | ||||||
|   | |||||||
| @@ -387,6 +387,8 @@ var migrations = []Migration{ | |||||||
| 	NewMigration("Add auto merge table", addAutoMergeTable), | 	NewMigration("Add auto merge table", addAutoMergeTable), | ||||||
| 	// v215 -> v216 | 	// v215 -> v216 | ||||||
| 	NewMigration("allow to view files in PRs", addReviewViewedFiles), | 	NewMigration("allow to view files in PRs", addReviewViewedFiles), | ||||||
|  | 	// v216 -> v217 | ||||||
|  | 	NewMigration("Improve Action table indices", improveActionTableIndices), | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetCurrentDBVersion returns the current db version | // GetCurrentDBVersion returns the current db version | ||||||
|   | |||||||
							
								
								
									
										67
									
								
								models/migrations/v216.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								models/migrations/v216.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | // Copyright 2022 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 ( | ||||||
|  | 	"code.gitea.io/gitea/modules/timeutil" | ||||||
|  |  | ||||||
|  | 	"xorm.io/xorm" | ||||||
|  | 	"xorm.io/xorm/schemas" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type improveActionTableIndicesAction struct { | ||||||
|  | 	ID          int64 `xorm:"pk autoincr"` | ||||||
|  | 	UserID      int64 // Receiver user id. | ||||||
|  | 	OpType      int | ||||||
|  | 	ActUserID   int64 // Action user id. | ||||||
|  | 	RepoID      int64 | ||||||
|  | 	CommentID   int64 `xorm:"INDEX"` | ||||||
|  | 	IsDeleted   bool  `xorm:"NOT NULL DEFAULT false"` | ||||||
|  | 	RefName     string | ||||||
|  | 	IsPrivate   bool               `xorm:"NOT NULL DEFAULT false"` | ||||||
|  | 	Content     string             `xorm:"TEXT"` | ||||||
|  | 	CreatedUnix timeutil.TimeStamp `xorm:"created"` | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // TableName sets the name of this table | ||||||
|  | func (a *improveActionTableIndicesAction) TableName() string { | ||||||
|  | 	return "action" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // TableIndices implements xorm's TableIndices interface | ||||||
|  | func (a *improveActionTableIndicesAction) TableIndices() []*schemas.Index { | ||||||
|  | 	actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType) | ||||||
|  | 	actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted") | ||||||
|  |  | ||||||
|  | 	repoIndex := schemas.NewIndex("r_c_u_d", schemas.IndexType) | ||||||
|  | 	repoIndex.AddColumn("repo_id", "created_unix", "user_id", "is_deleted") | ||||||
|  |  | ||||||
|  | 	return []*schemas.Index{actUserIndex, repoIndex} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func improveActionTableIndices(x *xorm.Engine) error { | ||||||
|  | 	{ | ||||||
|  | 		type Action struct { | ||||||
|  | 			ID          int64 `xorm:"pk autoincr"` | ||||||
|  | 			UserID      int64 `xorm:"INDEX"` // Receiver user id. | ||||||
|  | 			OpType      int | ||||||
|  | 			ActUserID   int64 `xorm:"INDEX"` // Action user id. | ||||||
|  | 			RepoID      int64 `xorm:"INDEX"` | ||||||
|  | 			CommentID   int64 `xorm:"INDEX"` | ||||||
|  | 			IsDeleted   bool  `xorm:"INDEX NOT NULL DEFAULT false"` | ||||||
|  | 			RefName     string | ||||||
|  | 			IsPrivate   bool               `xorm:"INDEX NOT NULL DEFAULT false"` | ||||||
|  | 			Content     string             `xorm:"TEXT"` | ||||||
|  | 			CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | ||||||
|  | 		} | ||||||
|  | 		if err := x.Sync2(&Action{}); err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		if err := x.DropIndexes(&Action{}); err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return x.Sync2(&improveActionTableIndicesAction{}) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 zeripath
					zeripath