mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 12:53:43 +01:00 
			
		
		
		
	Add migration to set IsArchived false if it is null (#11853)
* Add migration to set IsArchived false if it is null Fix #11824 Signed-off-by: Andrew Thornton <art27@cantab.net> * Add doctor Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		
							parent
							
								
									b682a2c1b2
								
							
						
					
					
						commit
						b9e281265e
					
				@ -574,6 +574,22 @@ func runDoctorCheckDBConsistency(ctx *cli.Context) ([]string, error) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						count, err = models.CountNullArchivedRepository()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if count > 0 {
 | 
				
			||||||
 | 
							if ctx.Bool("fix") {
 | 
				
			||||||
 | 
								updatedCount, err := models.FixNullArchivedRepository()
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return nil, err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								results = append(results, fmt.Sprintf("%d repositories with null is_archived updated", updatedCount))
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								results = append(results, fmt.Sprintf("%d repositories with null is_archived", count))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//ToDo: function to recalc all counters
 | 
						//ToDo: function to recalc all counters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return results, nil
 | 
						return results, nil
 | 
				
			||||||
 | 
				
			|||||||
@ -283,3 +283,15 @@ func DeleteOrphanedObjects(subject, refobject, joinCond string) error {
 | 
				
			|||||||
		Delete("`" + subject + "`")
 | 
							Delete("`" + subject + "`")
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CountNullArchivedRepository counts the number of repositories with is_archived is null
 | 
				
			||||||
 | 
					func CountNullArchivedRepository() (int64, error) {
 | 
				
			||||||
 | 
						return x.Where(builder.IsNull{"is_archived"}).Count(new(Repository))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FixNullArchivedRepository sets is_archived to false where it is null
 | 
				
			||||||
 | 
					func FixNullArchivedRepository() (int64, error) {
 | 
				
			||||||
 | 
						return x.Where(builder.IsNull{"is_archived"}).Cols("is_archived").Update(&Repository{
 | 
				
			||||||
 | 
							IsArchived: false,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -214,8 +214,10 @@ var migrations = []Migration{
 | 
				
			|||||||
	NewMigration("prepend refs/heads/ to issue refs", prependRefsHeadsToIssueRefs),
 | 
						NewMigration("prepend refs/heads/ to issue refs", prependRefsHeadsToIssueRefs),
 | 
				
			||||||
	// v140 -> v141
 | 
						// v140 -> v141
 | 
				
			||||||
	NewMigration("Save detected language file size to database instead of percent", fixLanguageStatsToSaveSize),
 | 
						NewMigration("Save detected language file size to database instead of percent", fixLanguageStatsToSaveSize),
 | 
				
			||||||
	// v141 -> 142
 | 
						// v141 -> v142
 | 
				
			||||||
	NewMigration("Add KeepActivityPrivate to User table", addKeepActivityPrivateUserColumn),
 | 
						NewMigration("Add KeepActivityPrivate to User table", addKeepActivityPrivateUserColumn),
 | 
				
			||||||
 | 
						// v142 -> v143
 | 
				
			||||||
 | 
						NewMigration("Ensure Repository.IsArchived is not null", setIsArchivedToFalse),
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetCurrentDBVersion returns the current db version
 | 
					// GetCurrentDBVersion returns the current db version
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										24
									
								
								models/migrations/v142.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								models/migrations/v142.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					// Copyright 2020 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/log"
 | 
				
			||||||
 | 
						"xorm.io/builder"
 | 
				
			||||||
 | 
						"xorm.io/xorm"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func setIsArchivedToFalse(x *xorm.Engine) error {
 | 
				
			||||||
 | 
						type Repository struct {
 | 
				
			||||||
 | 
							IsArchived bool `xorm:"INDEX"`
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						count, err := x.Where(builder.IsNull{"is_archived"}).Cols("is_archived").Update(&Repository{
 | 
				
			||||||
 | 
							IsArchived: false,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						if err == nil {
 | 
				
			||||||
 | 
							log.Debug("Updated %d repositories with is_archived IS NULL", count)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user