Remove repo unit index (#2621)

* Remove repo unit index

* Fix sqlite
release/v1.15
Morlinest 2017-10-02 22:22:25 +02:00 committed by Lauris BH
parent 46cc45f049
commit a04718a2a6
6 changed files with 33 additions and 22 deletions

View File

@ -2,7 +2,6 @@
id: 1 id: 1
repo_id: 1 repo_id: 1
type: 4 type: 4
index: 3
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -10,7 +9,6 @@
id: 2 id: 2
repo_id: 1 repo_id: 1
type: 5 type: 5
index: 4
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -18,7 +16,6 @@
id: 3 id: 3
repo_id: 1 repo_id: 1
type: 1 type: 1
index: 0
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -26,7 +23,6 @@
id: 4 id: 4
repo_id: 1 repo_id: 1
type: 2 type: 2
index: 1
config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}" config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}"
created_unix: 946684810 created_unix: 946684810
@ -34,7 +30,6 @@
id: 5 id: 5
repo_id: 1 repo_id: 1
type: 3 type: 3
index: 2
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -42,7 +37,6 @@
id: 6 id: 6
repo_id: 3 repo_id: 3
type: 1 type: 1
index: 0
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -50,7 +44,6 @@
id: 7 id: 7
repo_id: 3 repo_id: 3
type: 2 type: 2
index: 1
config: "{\"EnableTimetracker\":false,\"AllowOnlyContributorsToTrackTime\":false}" config: "{\"EnableTimetracker\":false,\"AllowOnlyContributorsToTrackTime\":false}"
created_unix: 946684810 created_unix: 946684810
@ -58,7 +51,6 @@
id: 8 id: 8
repo_id: 3 repo_id: 3
type: 3 type: 3
index: 2
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -66,7 +58,6 @@
id: 9 id: 9
repo_id: 3 repo_id: 3
type: 4 type: 4
index: 3
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810
@ -74,6 +65,5 @@
id: 10 id: 10
repo_id: 3 repo_id: 3
type: 5 type: 5
index: 4
config: "{}" config: "{}"
created_unix: 946684810 created_unix: 946684810

View File

@ -138,6 +138,8 @@ var migrations = []Migration{
NewMigration("fix protected branch can push value to false", fixProtectedBranchCanPushValue), NewMigration("fix protected branch can push value to false", fixProtectedBranchCanPushValue),
// v44 -> v45 // v44 -> v45
NewMigration("remove duplicate unit types", removeDuplicateUnitTypes), NewMigration("remove duplicate unit types", removeDuplicateUnitTypes),
// v45 -> v46
NewMigration("remove index column from repo_unit table", removeIndexColumnFromRepoUnitTable),
} }
// Migrate database to current version // Migrate database to current version

28
models/migrations/v45.go Normal file
View File

@ -0,0 +1,28 @@
// Copyright 2017 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 (
"fmt"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"github.com/go-xorm/xorm"
)
func removeIndexColumnFromRepoUnitTable(x *xorm.Engine) (err error) {
switch {
case setting.UseSQLite3:
log.Warn("Unable to drop columns in SQLite")
case setting.UseMySQL, setting.UsePostgreSQL, setting.UseMSSQL, setting.UseTiDB:
if _, err := x.Exec("ALTER TABLE repo_unit DROP COLUMN index"); err != nil {
return fmt.Errorf("DROP COLUMN index: %v", err)
}
default:
log.Fatal(4, "Unrecognized DB")
}
return nil
}

View File

@ -1245,19 +1245,17 @@ func createRepository(e *xorm.Session, doer, u *User, repo *Repository) (err err
// insert units for repo // insert units for repo
var units = make([]RepoUnit, 0, len(defaultRepoUnits)) var units = make([]RepoUnit, 0, len(defaultRepoUnits))
for i, tp := range defaultRepoUnits { for _, tp := range defaultRepoUnits {
if tp == UnitTypeIssues { if tp == UnitTypeIssues {
units = append(units, RepoUnit{ units = append(units, RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: tp, Type: tp,
Index: i,
Config: &IssuesConfig{EnableTimetracker: setting.Service.DefaultEnableTimetracking, AllowOnlyContributorsToTrackTime: setting.Service.DefaultAllowOnlyContributorsToTrackTime}, Config: &IssuesConfig{EnableTimetracker: setting.Service.DefaultEnableTimetracking, AllowOnlyContributorsToTrackTime: setting.Service.DefaultAllowOnlyContributorsToTrackTime},
}) })
} else { } else {
units = append(units, RepoUnit{ units = append(units, RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: tp, Type: tp,
Index: i,
}) })
} }

View File

@ -16,9 +16,8 @@ import (
// RepoUnit describes all units of a repository // RepoUnit describes all units of a repository
type RepoUnit struct { type RepoUnit struct {
ID int64 ID int64
RepoID int64 `xorm:"INDEX(s)"` RepoID int64 `xorm:"INDEX(s)"`
Type UnitType `xorm:"INDEX(s)"` Type UnitType `xorm:"INDEX(s)"`
Index int
Config core.Conversion `xorm:"TEXT"` Config core.Conversion `xorm:"TEXT"`
CreatedUnix int64 `xorm:"INDEX CREATED"` CreatedUnix int64 `xorm:"INDEX CREATED"`
Created time.Time `xorm:"-"` Created time.Time `xorm:"-"`

View File

@ -149,7 +149,6 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
units = append(units, models.RepoUnit{ units = append(units, models.RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: tp, Type: tp,
Index: int(tp),
Config: new(models.UnitConfig), Config: new(models.UnitConfig),
}) })
} }
@ -165,7 +164,6 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
units = append(units, models.RepoUnit{ units = append(units, models.RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: models.UnitTypeExternalWiki, Type: models.UnitTypeExternalWiki,
Index: int(models.UnitTypeExternalWiki),
Config: &models.ExternalWikiConfig{ Config: &models.ExternalWikiConfig{
ExternalWikiURL: form.ExternalWikiURL, ExternalWikiURL: form.ExternalWikiURL,
}, },
@ -174,7 +172,6 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
units = append(units, models.RepoUnit{ units = append(units, models.RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: models.UnitTypeWiki, Type: models.UnitTypeWiki,
Index: int(models.UnitTypeWiki),
Config: new(models.UnitConfig), Config: new(models.UnitConfig),
}) })
} }
@ -190,7 +187,6 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
units = append(units, models.RepoUnit{ units = append(units, models.RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: models.UnitTypeExternalTracker, Type: models.UnitTypeExternalTracker,
Index: int(models.UnitTypeExternalTracker),
Config: &models.ExternalTrackerConfig{ Config: &models.ExternalTrackerConfig{
ExternalTrackerURL: form.ExternalTrackerURL, ExternalTrackerURL: form.ExternalTrackerURL,
ExternalTrackerFormat: form.TrackerURLFormat, ExternalTrackerFormat: form.TrackerURLFormat,
@ -201,7 +197,6 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
units = append(units, models.RepoUnit{ units = append(units, models.RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: models.UnitTypeIssues, Type: models.UnitTypeIssues,
Index: int(models.UnitTypeIssues),
Config: &models.IssuesConfig{ Config: &models.IssuesConfig{
EnableTimetracker: form.EnableTimetracker, EnableTimetracker: form.EnableTimetracker,
AllowOnlyContributorsToTrackTime: form.AllowOnlyContributorsToTrackTime, AllowOnlyContributorsToTrackTime: form.AllowOnlyContributorsToTrackTime,
@ -214,7 +209,6 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
units = append(units, models.RepoUnit{ units = append(units, models.RepoUnit{
RepoID: repo.ID, RepoID: repo.ID,
Type: models.UnitTypePullRequests, Type: models.UnitTypePullRequests,
Index: int(models.UnitTypePullRequests),
Config: new(models.UnitConfig), Config: new(models.UnitConfig),
}) })
} }