Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit a42186e

Browse files
authoredMar 7, 2023
Merge branch 'main' into fix-repo-topic-edit
2 parents 902be92 + c842388 commit a42186e

File tree

36 files changed

+103
-96
lines changed

36 files changed

+103
-96
lines changed
 

‎cmd/convert.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func runConvert(ctx *cli.Context) error {
3535
log.Info("Log path: %s", setting.Log.RootPath)
3636
log.Info("Configuration file: %s", setting.CustomConf)
3737

38-
if !setting.Database.UseMySQL {
38+
if !setting.Database.Type.IsMySQL() {
3939
fmt.Println("This command can only be used with a MySQL database")
4040
return nil
4141
}

‎cmd/dump.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ func runDump(ctx *cli.Context) error {
279279
}()
280280

281281
targetDBType := ctx.String("database")
282-
if len(targetDBType) > 0 && targetDBType != setting.Database.Type {
282+
if len(targetDBType) > 0 && targetDBType != setting.Database.Type.String() {
283283
log.Info("Dumping database %s => %s...", setting.Database.Type, targetDBType)
284284
} else {
285285
log.Info("Dumping database...")

‎models/activities/action.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (a *Action) TableIndices() []*schemas.Index {
9999
actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted")
100100

101101
indices := []*schemas.Index{actUserIndex, repoIndex}
102-
if setting.Database.UsePostgreSQL {
102+
if setting.Database.Type.IsPostgreSQL() {
103103
cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType)
104104
cudIndex.AddColumn("created_unix", "user_id", "is_deleted")
105105
indices = append(indices, cudIndex)
@@ -640,15 +640,15 @@ func DeleteIssueActions(ctx context.Context, repoID, issueID int64) error {
640640

641641
// CountActionCreatedUnixString count actions where created_unix is an empty string
642642
func CountActionCreatedUnixString(ctx context.Context) (int64, error) {
643-
if setting.Database.UseSQLite3 {
643+
if setting.Database.Type.IsSQLite3() {
644644
return db.GetEngine(ctx).Where(`created_unix = ""`).Count(new(Action))
645645
}
646646
return 0, nil
647647
}
648648

649649
// FixActionCreatedUnixString set created_unix to zero if it is an empty string
650650
func FixActionCreatedUnixString(ctx context.Context) (int64, error) {
651-
if setting.Database.UseSQLite3 {
651+
if setting.Database.Type.IsSQLite3() {
652652
res, err := db.GetEngine(ctx).Exec(`UPDATE action SET created_unix = 0 WHERE created_unix = ""`)
653653
if err != nil {
654654
return 0, err

‎models/activities/action_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func TestGetFeedsCorrupted(t *testing.T) {
243243
}
244244

245245
func TestConsistencyUpdateAction(t *testing.T) {
246-
if !setting.Database.UseSQLite3 {
246+
if !setting.Database.Type.IsSQLite3() {
247247
t.Skip("Test is only for SQLite database.")
248248
}
249249
assert.NoError(t, unittest.PrepareTestDatabase())

‎models/activities/user_heatmap.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ func getUserHeatmapData(user *user_model.User, team *organization.Team, doer *us
3939
groupBy := "created_unix / 900 * 900"
4040
groupByName := "timestamp" // We need this extra case because mssql doesn't allow grouping by alias
4141
switch {
42-
case setting.Database.UseMySQL:
42+
case setting.Database.Type.IsMySQL():
4343
groupBy = "created_unix DIV 900 * 900"
44-
case setting.Database.UseMSSQL:
44+
case setting.Database.Type.IsMSSQL():
4545
groupByName = groupBy
4646
}
4747

‎models/db/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
// BuildCaseInsensitiveLike returns a condition to check if the given value is like the given key case-insensitively.
1616
// Handles especially SQLite correctly as UPPER there only transforms ASCII letters.
1717
func BuildCaseInsensitiveLike(key, value string) builder.Cond {
18-
if setting.Database.UseSQLite3 {
18+
if setting.Database.Type.IsSQLite3() {
1919
return builder.Like{"UPPER(" + key + ")", util.ToUpperASCII(value)}
2020
}
2121
return builder.Like{"UPPER(" + key + ")", strings.ToUpper(value)}

‎models/db/engine.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,12 @@ func newXORMEngine() (*xorm.Engine, error) {
101101

102102
var engine *xorm.Engine
103103

104-
if setting.Database.UsePostgreSQL && len(setting.Database.Schema) > 0 {
104+
if setting.Database.Type.IsPostgreSQL() && len(setting.Database.Schema) > 0 {
105105
// OK whilst we sort out our schema issues - create a schema aware postgres
106106
registerPostgresSchemaDriver()
107107
engine, err = xorm.NewEngine("postgresschema", connStr)
108108
} else {
109-
engine, err = xorm.NewEngine(setting.Database.Type, connStr)
109+
engine, err = xorm.NewEngine(setting.Database.Type.String(), connStr)
110110
}
111111

112112
if err != nil {

‎models/db/index.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func postgresGetNextResourceIndex(ctx context.Context, tableName string, groupID
7373

7474
// GetNextResourceIndex generates a resource index, it must run in the same transaction where the resource is created
7575
func GetNextResourceIndex(ctx context.Context, tableName string, groupID int64) (int64, error) {
76-
if setting.Database.UsePostgreSQL {
76+
if setting.Database.Type.IsPostgreSQL() {
7777
return postgresGetNextResourceIndex(ctx, tableName, groupID)
7878
}
7979

‎models/db/sequence.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
// CountBadSequences looks for broken sequences from recreate-table mistakes
1515
func CountBadSequences(_ context.Context) (int64, error) {
16-
if !setting.Database.UsePostgreSQL {
16+
if !setting.Database.Type.IsPostgreSQL() {
1717
return 0, nil
1818
}
1919

@@ -34,7 +34,7 @@ func CountBadSequences(_ context.Context) (int64, error) {
3434

3535
// FixBadSequences fixes for broken sequences from recreate-table mistakes
3636
func FixBadSequences(_ context.Context) error {
37-
if !setting.Database.UsePostgreSQL {
37+
if !setting.Database.Type.IsPostgreSQL() {
3838
return nil
3939
}
4040

‎models/git/commit_status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func postgresGetCommitStatusIndex(ctx context.Context, repoID int64, sha string)
6565

6666
// GetNextCommitStatusIndex retried 3 times to generate a resource index
6767
func GetNextCommitStatusIndex(ctx context.Context, repoID int64, sha string) (int64, error) {
68-
if setting.Database.UsePostgreSQL {
68+
if setting.Database.Type.IsPostgreSQL() {
6969
return postgresGetCommitStatusIndex(ctx, repoID, sha)
7070
}
7171

‎models/migrations/base/db.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func RecreateTable(sess *xorm.Session, bean interface{}) error {
8989
hasID = hasID || (column.IsPrimaryKey && column.IsAutoIncrement)
9090
}
9191

92-
if hasID && setting.Database.UseMSSQL {
92+
if hasID && setting.Database.Type.IsMSSQL() {
9393
if _, err := sess.Exec(fmt.Sprintf("SET IDENTITY_INSERT `%s` ON", tempTableName)); err != nil {
9494
log.Error("Unable to set identity insert for table %s. Error: %v", tempTableName, err)
9595
return err
@@ -143,15 +143,15 @@ func RecreateTable(sess *xorm.Session, bean interface{}) error {
143143
return err
144144
}
145145

146-
if hasID && setting.Database.UseMSSQL {
146+
if hasID && setting.Database.Type.IsMSSQL() {
147147
if _, err := sess.Exec(fmt.Sprintf("SET IDENTITY_INSERT `%s` OFF", tempTableName)); err != nil {
148148
log.Error("Unable to switch off identity insert for table %s. Error: %v", tempTableName, err)
149149
return err
150150
}
151151
}
152152

153153
switch {
154-
case setting.Database.UseSQLite3:
154+
case setting.Database.Type.IsSQLite3():
155155
// SQLite will drop all the constraints on the old table
156156
if _, err := sess.Exec(fmt.Sprintf("DROP TABLE `%s`", tableName)); err != nil {
157157
log.Error("Unable to drop old table %s. Error: %v", tableName, err)
@@ -178,7 +178,7 @@ func RecreateTable(sess *xorm.Session, bean interface{}) error {
178178
return err
179179
}
180180

181-
case setting.Database.UseMySQL:
181+
case setting.Database.Type.IsMySQL():
182182
// MySQL will drop all the constraints on the old table
183183
if _, err := sess.Exec(fmt.Sprintf("DROP TABLE `%s`", tableName)); err != nil {
184184
log.Error("Unable to drop old table %s. Error: %v", tableName, err)
@@ -205,7 +205,7 @@ func RecreateTable(sess *xorm.Session, bean interface{}) error {
205205
log.Error("Unable to recreate uniques on table %s. Error: %v", tableName, err)
206206
return err
207207
}
208-
case setting.Database.UsePostgreSQL:
208+
case setting.Database.Type.IsPostgreSQL():
209209
var originalSequences []string
210210
type sequenceData struct {
211211
LastValue int `xorm:"'last_value'"`
@@ -296,7 +296,7 @@ func RecreateTable(sess *xorm.Session, bean interface{}) error {
296296

297297
}
298298

299-
case setting.Database.UseMSSQL:
299+
case setting.Database.Type.IsMSSQL():
300300
// MSSQL will drop all the constraints on the old table
301301
if _, err := sess.Exec(fmt.Sprintf("DROP TABLE `%s`", tableName)); err != nil {
302302
log.Error("Unable to drop old table %s. Error: %v", tableName, err)
@@ -323,7 +323,7 @@ func DropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
323323
// TODO: This will not work if there are foreign keys
324324

325325
switch {
326-
case setting.Database.UseSQLite3:
326+
case setting.Database.Type.IsSQLite3():
327327
// First drop the indexes on the columns
328328
res, errIndex := sess.Query(fmt.Sprintf("PRAGMA index_list(`%s`)", tableName))
329329
if errIndex != nil {
@@ -405,7 +405,7 @@ func DropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
405405
return err
406406
}
407407

408-
case setting.Database.UsePostgreSQL:
408+
case setting.Database.Type.IsPostgreSQL():
409409
cols := ""
410410
for _, col := range columnNames {
411411
if cols != "" {
@@ -416,7 +416,7 @@ func DropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
416416
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil {
417417
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
418418
}
419-
case setting.Database.UseMySQL:
419+
case setting.Database.Type.IsMySQL():
420420
// Drop indexes on columns first
421421
sql := fmt.Sprintf("SHOW INDEX FROM %s WHERE column_name IN ('%s')", tableName, strings.Join(columnNames, "','"))
422422
res, err := sess.Query(sql)
@@ -444,7 +444,7 @@ func DropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
444444
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil {
445445
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
446446
}
447-
case setting.Database.UseMSSQL:
447+
case setting.Database.Type.IsMSSQL():
448448
cols := ""
449449
for _, col := range columnNames {
450450
if cols != "" {
@@ -543,13 +543,13 @@ func newXORMEngine() (*xorm.Engine, error) {
543543

544544
func deleteDB() error {
545545
switch {
546-
case setting.Database.UseSQLite3:
546+
case setting.Database.Type.IsSQLite3():
547547
if err := util.Remove(setting.Database.Path); err != nil {
548548
return err
549549
}
550550
return os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm)
551551

552-
case setting.Database.UseMySQL:
552+
case setting.Database.Type.IsMySQL():
553553
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/",
554554
setting.Database.User, setting.Database.Passwd, setting.Database.Host))
555555
if err != nil {
@@ -565,7 +565,7 @@ func deleteDB() error {
565565
return err
566566
}
567567
return nil
568-
case setting.Database.UsePostgreSQL:
568+
case setting.Database.Type.IsPostgreSQL():
569569
db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
570570
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
571571
if err != nil {
@@ -612,7 +612,7 @@ func deleteDB() error {
612612
}
613613
return nil
614614
}
615-
case setting.Database.UseMSSQL:
615+
case setting.Database.Type.IsMSSQL():
616616
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
617617
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
618618
host, port, "master", setting.Database.User, setting.Database.Passwd))

‎models/migrations/v1_12/v139.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ func PrependRefsHeadsToIssueRefs(x *xorm.Engine) error {
1313
var query string
1414

1515
switch {
16-
case setting.Database.UseMSSQL:
16+
case setting.Database.Type.IsMSSQL():
1717
query = "UPDATE `issue` SET `ref` = 'refs/heads/' + `ref` WHERE `ref` IS NOT NULL AND `ref` <> '' AND `ref` NOT LIKE 'refs/%'"
18-
case setting.Database.UseMySQL:
18+
case setting.Database.Type.IsMySQL():
1919
query = "UPDATE `issue` SET `ref` = CONCAT('refs/heads/', `ref`) WHERE `ref` IS NOT NULL AND `ref` <> '' AND `ref` NOT LIKE 'refs/%';"
2020
default:
2121
query = "UPDATE `issue` SET `ref` = 'refs/heads/' || `ref` WHERE `ref` IS NOT NULL AND `ref` <> '' AND `ref` NOT LIKE 'refs/%'"

‎models/migrations/v1_13/v140.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func FixLanguageStatsToSaveSize(x *xorm.Engine) error {
4141

4242
// Delete language stat statuses
4343
truncExpr := "TRUNCATE TABLE"
44-
if setting.Database.UseSQLite3 {
44+
if setting.Database.Type.IsSQLite3() {
4545
truncExpr = "DELETE FROM"
4646
}
4747

‎models/migrations/v1_13/v145.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func IncreaseLanguageField(x *xorm.Engine) error {
2121
return err
2222
}
2323

24-
if setting.Database.UseSQLite3 {
24+
if setting.Database.Type.IsSQLite3() {
2525
// SQLite maps VARCHAR to TEXT without size so we're done
2626
return nil
2727
}
@@ -41,11 +41,11 @@ func IncreaseLanguageField(x *xorm.Engine) error {
4141
}
4242

4343
switch {
44-
case setting.Database.UseMySQL:
44+
case setting.Database.Type.IsMySQL():
4545
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat MODIFY COLUMN language %s", sqlType)); err != nil {
4646
return err
4747
}
48-
case setting.Database.UseMSSQL:
48+
case setting.Database.Type.IsMSSQL():
4949
// Yet again MSSQL just has to be awkward.
5050
// Here we have to drop the constraints first and then rebuild them
5151
constraints := make([]string, 0)
@@ -71,7 +71,7 @@ func IncreaseLanguageField(x *xorm.Engine) error {
7171
if err := sess.CreateUniques(new(LanguageStat)); err != nil {
7272
return err
7373
}
74-
case setting.Database.UsePostgreSQL:
74+
case setting.Database.Type.IsPostgreSQL():
7575
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat ALTER COLUMN language TYPE %s", sqlType)); err != nil {
7676
return err
7777
}

‎models/migrations/v1_13/v151.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ import (
1717

1818
func SetDefaultPasswordToArgon2(x *xorm.Engine) error {
1919
switch {
20-
case setting.Database.UseMySQL:
20+
case setting.Database.Type.IsMySQL():
2121
_, err := x.Exec("ALTER TABLE `user` ALTER passwd_hash_algo SET DEFAULT 'argon2';")
2222
return err
23-
case setting.Database.UsePostgreSQL:
23+
case setting.Database.Type.IsPostgreSQL():
2424
_, err := x.Exec("ALTER TABLE `user` ALTER COLUMN passwd_hash_algo SET DEFAULT 'argon2';")
2525
return err
26-
case setting.Database.UseMSSQL:
26+
case setting.Database.Type.IsMSSQL():
2727
// need to find the constraint and drop it, then recreate it.
2828
sess := x.NewSession()
2929
defer sess.Close()
@@ -53,7 +53,7 @@ func SetDefaultPasswordToArgon2(x *xorm.Engine) error {
5353
}
5454
return sess.Commit()
5555

56-
case setting.Database.UseSQLite3:
56+
case setting.Database.Type.IsSQLite3():
5757
// drop through
5858
default:
5959
log.Fatal("Unrecognized DB")

‎models/migrations/v1_14/v158.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func UpdateCodeCommentReplies(x *xorm.Engine) error {
6262
return err
6363
}
6464

65-
if setting.Database.UseMSSQL {
65+
if setting.Database.Type.IsMSSQL() {
6666
if _, err := sess.Exec(sqlSelect + " INTO #temp_comments" + sqlTail); err != nil {
6767
log.Error("unable to create temporary table")
6868
return err
@@ -72,13 +72,13 @@ func UpdateCodeCommentReplies(x *xorm.Engine) error {
7272
comments := make([]*Comment, 0, batchSize)
7373

7474
switch {
75-
case setting.Database.UseMySQL:
75+
case setting.Database.Type.IsMySQL():
7676
sqlCmd = sqlSelect + sqlTail + " LIMIT " + strconv.Itoa(batchSize) + ", " + strconv.Itoa(start)
77-
case setting.Database.UsePostgreSQL:
77+
case setting.Database.Type.IsPostgreSQL():
7878
fallthrough
79-
case setting.Database.UseSQLite3:
79+
case setting.Database.Type.IsSQLite3():
8080
sqlCmd = sqlSelect + sqlTail + " LIMIT " + strconv.Itoa(batchSize) + " OFFSET " + strconv.Itoa(start)
81-
case setting.Database.UseMSSQL:
81+
case setting.Database.Type.IsMSSQL():
8282
sqlCmd = "SELECT TOP " + strconv.Itoa(batchSize) + " * FROM #temp_comments WHERE " +
8383
"(id NOT IN ( SELECT TOP " + strconv.Itoa(start) + " id FROM #temp_comments ORDER BY id )) ORDER BY id"
8484
default:

‎models/migrations/v1_14/v175.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
func FixPostgresIDSequences(x *xorm.Engine) error {
17-
if !setting.Database.UsePostgreSQL {
17+
if !setting.Database.Type.IsPostgreSQL() {
1818
return nil
1919
}
2020

‎models/migrations/v1_15/v184.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ func RenameTaskErrorsToMessage(x *xorm.Engine) error {
5454
}
5555

5656
switch {
57-
case setting.Database.UseMySQL:
57+
case setting.Database.Type.IsMySQL():
5858
if _, err := sess.Exec("ALTER TABLE `task` CHANGE errors message text"); err != nil {
5959
return err
6060
}
61-
case setting.Database.UseMSSQL:
61+
case setting.Database.Type.IsMSSQL():
6262
if _, err := sess.Exec("sp_rename 'task.errors', 'message', 'COLUMN'"); err != nil {
6363
return err
6464
}

‎models/migrations/v1_16/v191.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func AlterIssueAndCommentTextFieldsToLongText(x *xorm.Engine) error {
1616
return err
1717
}
1818

19-
if setting.Database.UseMySQL {
19+
if setting.Database.Type.IsMySQL() {
2020
if _, err := sess.Exec("ALTER TABLE `issue` CHANGE `content` `content` LONGTEXT"); err != nil {
2121
return err
2222
}

‎models/migrations/v1_17/v217.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func AlterHookTaskTextFieldsToLongText(x *xorm.Engine) error {
1616
return err
1717
}
1818

19-
if setting.Database.UseMySQL {
19+
if setting.Database.Type.IsMySQL() {
2020
if _, err := sess.Exec("ALTER TABLE `hook_task` CHANGE `payload_content` `payload_content` LONGTEXT, CHANGE `request_content` `request_content` LONGTEXT, change `response_content` `response_content` LONGTEXT"); err != nil {
2121
return err
2222
}

‎models/migrations/v1_17/v218.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (*improveActionTableIndicesAction) TableIndices() []*schemas.Index {
3838
actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType)
3939
actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted")
4040
indices := []*schemas.Index{actUserIndex, repoIndex}
41-
if setting.Database.UsePostgreSQL {
41+
if setting.Database.Type.IsPostgreSQL() {
4242
cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType)
4343
cudIndex.AddColumn("created_unix", "user_id", "is_deleted")
4444
indices = append(indices, cudIndex)

‎models/migrations/v1_17/v223.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ func RenameCredentialIDBytes(x *xorm.Engine) error {
6565
}
6666

6767
switch {
68-
case setting.Database.UseMySQL:
68+
case setting.Database.Type.IsMySQL():
6969
if _, err := sess.Exec("ALTER TABLE `webauthn_credential` CHANGE credential_id_bytes credential_id VARBINARY(1024)"); err != nil {
7070
return err
7171
}
72-
case setting.Database.UseMSSQL:
72+
case setting.Database.Type.IsMSSQL():
7373
if _, err := sess.Exec("sp_rename 'webauthn_credential.credential_id_bytes', 'credential_id', 'COLUMN'"); err != nil {
7474
return err
7575
}

‎models/migrations/v1_18/v225.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func AlterPublicGPGKeyContentFieldsToMediumText(x *xorm.Engine) error {
1616
return err
1717
}
1818

19-
if setting.Database.UseMySQL {
19+
if setting.Database.Type.IsMySQL() {
2020
if _, err := sess.Exec("ALTER TABLE `gpg_key` CHANGE `content` `content` MEDIUMTEXT"); err != nil {
2121
return err
2222
}

‎models/migrations/v1_19/v232.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func AlterPackageVersionMetadataToLongText(x *xorm.Engine) error {
1616
return err
1717
}
1818

19-
if setting.Database.UseMySQL {
19+
if setting.Database.Type.IsMySQL() {
2020
if _, err := sess.Exec("ALTER TABLE `package_version` MODIFY COLUMN `metadata_json` LONGTEXT"); err != nil {
2121
return err
2222
}

‎models/migrations/v1_19/v242.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func AlterPublicGPGKeyImportContentFieldToMediumText(x *xorm.Engine) error {
1717
return err
1818
}
1919

20-
if setting.Database.UseMySQL {
20+
if setting.Database.Type.IsMySQL() {
2121
if _, err := sess.Exec("ALTER TABLE `gpg_key_import` CHANGE `content` `content` MEDIUMTEXT"); err != nil {
2222
return err
2323
}

‎models/project/project.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ func DeleteProjectByID(ctx context.Context, id int64) error {
409409

410410
func DeleteProjectByRepoID(ctx context.Context, repoID int64) error {
411411
switch {
412-
case setting.Database.UseSQLite3:
412+
case setting.Database.Type.IsSQLite3():
413413
if _, err := db.GetEngine(ctx).Exec("DELETE FROM project_issue WHERE project_issue.id IN (SELECT project_issue.id FROM project_issue INNER JOIN project WHERE project.id = project_issue.project_id AND project.repo_id = ?)", repoID); err != nil {
414414
return err
415415
}
@@ -419,7 +419,7 @@ func DeleteProjectByRepoID(ctx context.Context, repoID int64) error {
419419
if _, err := db.GetEngine(ctx).Table("project").Where("repo_id = ? ", repoID).Delete(&Project{}); err != nil {
420420
return err
421421
}
422-
case setting.Database.UsePostgreSQL:
422+
case setting.Database.Type.IsPostgreSQL():
423423
if _, err := db.GetEngine(ctx).Exec("DELETE FROM project_issue USING project WHERE project.id = project_issue.project_id AND project.repo_id = ? ", repoID); err != nil {
424424
return err
425425
}

‎models/repo/repo_list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ func SearchRepositoryCondition(opts *SearchRepoOptions) builder.Cond {
498498
subQueryCond := builder.NewCond()
499499

500500
// Topic checking. Topics are present.
501-
if setting.Database.UsePostgreSQL { // postgres stores the topics as json and not as text
501+
if setting.Database.Type.IsPostgreSQL() { // postgres stores the topics as json and not as text
502502
subQueryCond = subQueryCond.Or(builder.And(builder.NotNull{"topics"}, builder.Neq{"(topics)::text": "[]"}))
503503
} else {
504504
subQueryCond = subQueryCond.Or(builder.And(builder.Neq{"topics": "null"}, builder.Neq{"topics": "[]"}))

‎models/unittest/testdb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func MainTest(m *testing.M, testOpts *TestOptions) {
7676
setting.SSH.BuiltinServerUser = "builtinuser"
7777
setting.SSH.Port = 3000
7878
setting.SSH.Domain = "try.gitea.io"
79-
setting.Database.UseSQLite3 = true
79+
setting.Database.Type = "sqlite3"
8080
setting.Repository.DefaultBranch = "master" // many test code still assume that default branch is called "master"
8181
repoRootPath, err := os.MkdirTemp(os.TempDir(), "repos")
8282
if err != nil {

‎modules/doctor/dbconsistency.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er
155155

156156
// TODO: function to recalc all counters
157157

158-
if setting.Database.UsePostgreSQL {
158+
if setting.Database.Type.IsPostgreSQL() {
159159
consistencyChecks = append(consistencyChecks, consistencyCheck{
160160
Name: "Sequence values",
161161
Counter: db.CountBadSequences,

‎modules/setting/database.go

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ var (
2727

2828
// Database holds the database settings
2929
Database = struct {
30-
Type string
30+
Type DatabaseType
3131
Host string
3232
Name string
3333
User string
@@ -39,10 +39,6 @@ var (
3939
Charset string
4040
Timeout int // seconds
4141
SQLiteJournalMode string
42-
UseSQLite3 bool
43-
UseMySQL bool
44-
UseMSSQL bool
45-
UsePostgreSQL bool
4642
DBConnectRetries int
4743
DBConnectBackoff time.Duration
4844
MaxIdleConns int
@@ -59,24 +55,13 @@ var (
5955
// LoadDBSetting loads the database settings
6056
func LoadDBSetting() {
6157
sec := CfgProvider.Section("database")
62-
Database.Type = sec.Key("DB_TYPE").String()
58+
Database.Type = DatabaseType(sec.Key("DB_TYPE").String())
6359
defaultCharset := "utf8"
64-
Database.UseMySQL = false
65-
Database.UseSQLite3 = false
66-
Database.UsePostgreSQL = false
67-
Database.UseMSSQL = false
6860

69-
switch Database.Type {
70-
case "sqlite3":
71-
Database.UseSQLite3 = true
72-
case "mysql":
73-
Database.UseMySQL = true
61+
if Database.Type.IsMySQL() {
7462
defaultCharset = "utf8mb4"
75-
case "postgres":
76-
Database.UsePostgreSQL = true
77-
case "mssql":
78-
Database.UseMSSQL = true
7963
}
64+
8065
Database.Host = sec.Key("HOST").String()
8166
Database.Name = sec.Key("NAME").String()
8267
Database.User = sec.Key("USER").String()
@@ -86,7 +71,7 @@ func LoadDBSetting() {
8671
Database.Schema = sec.Key("SCHEMA").String()
8772
Database.SSLMode = sec.Key("SSL_MODE").MustString("disable")
8873
Database.Charset = sec.Key("CHARSET").In(defaultCharset, []string{"utf8", "utf8mb4"})
89-
if Database.UseMySQL && defaultCharset != "utf8mb4" {
74+
if Database.Type.IsMySQL() && defaultCharset != "utf8mb4" {
9075
log.Error("Deprecated database mysql charset utf8 support, please use utf8mb4 or convert utf8 to utf8mb4.")
9176
}
9277

@@ -95,7 +80,7 @@ func LoadDBSetting() {
9580
Database.SQLiteJournalMode = sec.Key("SQLITE_JOURNAL_MODE").MustString("")
9681

9782
Database.MaxIdleConns = sec.Key("MAX_IDLE_CONNS").MustInt(2)
98-
if Database.UseMySQL {
83+
if Database.Type.IsMySQL() {
9984
Database.ConnMaxLifetime = sec.Key("CONN_MAX_LIFETIME").MustDuration(3 * time.Second)
10085
} else {
10186
Database.ConnMaxLifetime = sec.Key("CONN_MAX_LIFETIME").MustDuration(0)
@@ -207,3 +192,25 @@ func ParseMSSQLHostPort(info string) (string, string) {
207192
}
208193
return host, port
209194
}
195+
196+
type DatabaseType string
197+
198+
func (t DatabaseType) String() string {
199+
return string(t)
200+
}
201+
202+
func (t DatabaseType) IsSQLite3() bool {
203+
return t == "sqlite3"
204+
}
205+
206+
func (t DatabaseType) IsMySQL() bool {
207+
return t == "mysql"
208+
}
209+
210+
func (t DatabaseType) IsMSSQL() bool {
211+
return t == "mssql"
212+
}
213+
214+
func (t DatabaseType) IsPostgreSQL() bool {
215+
return t == "postgres"
216+
}

‎routers/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func GlobalInitInstalled(ctx context.Context) {
141141

142142
if setting.EnableSQLite3 {
143143
log.Info("SQLite3 support is enabled")
144-
} else if setting.Database.UseSQLite3 {
144+
} else if setting.Database.Type.IsSQLite3() {
145145
log.Fatal("SQLite3 support is disabled, but it is used for database setting. Please get or build a Gitea release with SQLite3 support.")
146146
}
147147

‎routers/install/install.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func Install(ctx *context.Context) {
104104
form.DbSchema = setting.Database.Schema
105105
form.Charset = setting.Database.Charset
106106

107-
curDBType := setting.Database.Type
107+
curDBType := setting.Database.Type.String()
108108
var isCurDBTypeSupported bool
109109
for _, dbType := range setting.SupportedDatabaseTypes {
110110
if dbType == curDBType {
@@ -272,7 +272,7 @@ func SubmitInstall(ctx *context.Context) {
272272
// ---- Basic checks are passed, now test configuration.
273273

274274
// Test database setting.
275-
setting.Database.Type = form.DbType
275+
setting.Database.Type = setting.DatabaseType(form.DbType)
276276
setting.Database.Host = form.DbHost
277277
setting.Database.User = form.DbUser
278278
setting.Database.Passwd = form.DbPasswd
@@ -392,7 +392,7 @@ func SubmitInstall(ctx *context.Context) {
392392
log.Error("Failed to load custom conf '%s': %v", setting.CustomConf, err)
393393
}
394394
}
395-
cfg.Section("database").Key("DB_TYPE").SetValue(setting.Database.Type)
395+
cfg.Section("database").Key("DB_TYPE").SetValue(setting.Database.Type.String())
396396
cfg.Section("database").Key("HOST").SetValue(setting.Database.Host)
397397
cfg.Section("database").Key("NAME").SetValue(setting.Database.Name)
398398
cfg.Section("database").Key("USER").SetValue(setting.Database.User)

‎routers/web/healthcheck/check.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func checkDatabase(checks checks) status {
100100
st.Time = getCheckTime()
101101
}
102102

103-
if setting.Database.UseSQLite3 && st.Status == pass {
103+
if setting.Database.Type.IsSQLite3() && st.Status == pass {
104104
if !setting.EnableSQLite3 {
105105
st.Status = fail
106106
st.Time = getCheckTime()

‎tests/integration/markup_external_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919

2020
func TestExternalMarkupRenderer(t *testing.T) {
2121
defer tests.PrepareTestEnv(t)()
22-
if !setting.Database.UseSQLite3 {
22+
if !setting.Database.Type.IsSQLite3() {
2323
t.Skip()
2424
return
2525
}

‎tests/integration/migration-test/migration_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func availableVersions() ([]string, error) {
9494
return nil, err
9595
}
9696
defer migrationsDir.Close()
97-
versionRE, err := regexp.Compile("gitea-v(?P<version>.+)\\." + regexp.QuoteMeta(setting.Database.Type) + "\\.sql.gz")
97+
versionRE, err := regexp.Compile("gitea-v(?P<version>.+)\\." + regexp.QuoteMeta(setting.Database.Type.String()) + "\\.sql.gz")
9898
if err != nil {
9999
return nil, err
100100
}
@@ -149,7 +149,7 @@ func restoreOldDB(t *testing.T, version string) bool {
149149
}
150150

151151
switch {
152-
case setting.Database.UseSQLite3:
152+
case setting.Database.Type.IsSQLite3():
153153
util.Remove(setting.Database.Path)
154154
err := os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm)
155155
assert.NoError(t, err)
@@ -162,7 +162,7 @@ func restoreOldDB(t *testing.T, version string) bool {
162162
assert.NoError(t, err)
163163
db.Close()
164164

165-
case setting.Database.UseMySQL:
165+
case setting.Database.Type.IsMySQL():
166166
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/",
167167
setting.Database.User, setting.Database.Passwd, setting.Database.Host))
168168
assert.NoError(t, err)
@@ -184,7 +184,7 @@ func restoreOldDB(t *testing.T, version string) bool {
184184
assert.NoError(t, err)
185185
db.Close()
186186

187-
case setting.Database.UsePostgreSQL:
187+
case setting.Database.Type.IsPostgreSQL():
188188
var db *sql.DB
189189
var err error
190190
if setting.Database.Host[0] == '/' {
@@ -252,7 +252,7 @@ func restoreOldDB(t *testing.T, version string) bool {
252252
assert.NoError(t, err)
253253
db.Close()
254254

255-
case setting.Database.UseMSSQL:
255+
case setting.Database.Type.IsMSSQL():
256256
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
257257
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
258258
host, port, "master", setting.Database.User, setting.Database.Passwd))

‎tests/test_utils.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func InitTest(requireGitea bool) {
7474
}
7575

7676
switch {
77-
case setting.Database.UseMySQL:
77+
case setting.Database.Type.IsMySQL():
7878
connType := "tcp"
7979
if len(setting.Database.Host) > 0 && setting.Database.Host[0] == '/' { // looks like a unix socket
8080
connType = "unix"
@@ -89,7 +89,7 @@ func InitTest(requireGitea bool) {
8989
if _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", setting.Database.Name)); err != nil {
9090
log.Fatal("db.Exec: %v", err)
9191
}
92-
case setting.Database.UsePostgreSQL:
92+
case setting.Database.Type.IsPostgreSQL():
9393
var db *sql.DB
9494
var err error
9595
if setting.Database.Host[0] == '/' {
@@ -146,7 +146,7 @@ func InitTest(requireGitea bool) {
146146
}
147147
}
148148

149-
case setting.Database.UseMSSQL:
149+
case setting.Database.Type.IsMSSQL():
150150
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
151151
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
152152
host, port, "master", setting.Database.User, setting.Database.Passwd))

0 commit comments

Comments
 (0)
Please sign in to comment.