mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 07:21:36 +01:00 
			
		
		
		
	Improve action table indices (#19472)
This commit is contained in:
		
							parent
							
								
									dd1ed35f75
								
							
						
					
					
						commit
						5d653cc10d
					
				| @ -30,6 +30,7 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 
 | ||||
| 	"xorm.io/builder" | ||||
| 	"xorm.io/xorm/schemas" | ||||
| ) | ||||
| 
 | ||||
| // ActionType represents the type of an action. | ||||
| @ -70,25 +71,36 @@ const ( | ||||
| // used in template render. | ||||
| type Action struct { | ||||
| 	ID          int64 `xorm:"pk autoincr"` | ||||
| 	UserID      int64 `xorm:"INDEX"` // Receiver user id. | ||||
| 	UserID      int64 // Receiver user id. | ||||
| 	OpType      ActionType | ||||
| 	ActUserID   int64                  `xorm:"INDEX"` // Action user id. | ||||
| 	ActUser     *user_model.User       `xorm:"-"` | ||||
| 	RepoID      int64                  `xorm:"INDEX"` | ||||
| 	ActUserID   int64            // Action user id. | ||||
| 	ActUser     *user_model.User `xorm:"-"` | ||||
| 	RepoID      int64 | ||||
| 	Repo        *repo_model.Repository `xorm:"-"` | ||||
| 	CommentID   int64                  `xorm:"INDEX"` | ||||
| 	Comment     *issues_model.Comment  `xorm:"-"` | ||||
| 	IsDeleted   bool                   `xorm:"INDEX NOT NULL DEFAULT false"` | ||||
| 	IsDeleted   bool                   `xorm:"NOT NULL DEFAULT false"` | ||||
| 	RefName     string | ||||
| 	IsPrivate   bool               `xorm:"INDEX NOT NULL DEFAULT false"` | ||||
| 	IsPrivate   bool               `xorm:"NOT NULL DEFAULT false"` | ||||
| 	Content     string             `xorm:"TEXT"` | ||||
| 	CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | ||||
| 	CreatedUnix timeutil.TimeStamp `xorm:"created"` | ||||
| } | ||||
| 
 | ||||
| func init() { | ||||
| 	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. | ||||
| func (a *Action) GetOpType() ActionType { | ||||
| 	return a.OpType | ||||
|  | ||||
| @ -387,6 +387,8 @@ var migrations = []Migration{ | ||||
| 	NewMigration("Add auto merge table", addAutoMergeTable), | ||||
| 	// v215 -> v216 | ||||
| 	NewMigration("allow to view files in PRs", addReviewViewedFiles), | ||||
| 	// v216 -> v217 | ||||
| 	NewMigration("Improve Action table indices", improveActionTableIndices), | ||||
| } | ||||
| 
 | ||||
| // 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{}) | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user