code.gitea.io/gitea@v1.21.7/models/migrations/v1_13/v140.go (about) 1 // Copyright 2020 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package v1_13 //nolint 5 6 import ( 7 "fmt" 8 9 "code.gitea.io/gitea/models/migrations/base" 10 "code.gitea.io/gitea/modules/setting" 11 12 "xorm.io/xorm" 13 ) 14 15 func FixLanguageStatsToSaveSize(x *xorm.Engine) error { 16 // LanguageStat see models/repo_language_stats.go 17 type LanguageStat struct { 18 Size int64 `xorm:"NOT NULL DEFAULT 0"` 19 } 20 21 // RepoIndexerType specifies the repository indexer type 22 type RepoIndexerType int 23 24 const ( 25 // RepoIndexerTypeCode code indexer - 0 26 RepoIndexerTypeCode RepoIndexerType = iota //nolint:unused 27 // RepoIndexerTypeStats repository stats indexer - 1 28 RepoIndexerTypeStats 29 ) 30 31 // RepoIndexerStatus see models/repo_indexer.go 32 type RepoIndexerStatus struct { 33 IndexerType RepoIndexerType `xorm:"INDEX(s) NOT NULL DEFAULT 0"` 34 } 35 36 if err := x.Sync(new(LanguageStat)); err != nil { 37 return fmt.Errorf("Sync: %w", err) 38 } 39 40 x.Delete(&RepoIndexerStatus{IndexerType: RepoIndexerTypeStats}) 41 42 // Delete language stat statuses 43 truncExpr := "TRUNCATE TABLE" 44 if setting.Database.Type.IsSQLite3() { 45 truncExpr = "DELETE FROM" 46 } 47 48 // Delete language stats 49 if _, err := x.Exec(fmt.Sprintf("%s language_stat", truncExpr)); err != nil { 50 return err 51 } 52 53 sess := x.NewSession() 54 defer sess.Close() 55 return base.DropTableColumns(sess, "language_stat", "percentage") 56 }