Skip to content

Commit 07ada36

Browse files
authored
chore: add comments for "api/healthz", clean up test env (#36481)
GITEA_UNIT_TESTS_LOG_SQL is renamed to GITEA_TEST_LOG_SQL
1 parent 1adf8b3 commit 07ada36

24 files changed

Lines changed: 256 additions & 323 deletions

File tree

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,6 @@ ENV GITEA_CUSTOM=/data/gitea
7676

7777
VOLUME ["/data"]
7878

79+
# HINT: HEALTH-CHECK-ENDPOINT: don't use HEALTHCHECK, search this hint keyword for more information
7980
ENTRYPOINT ["/usr/bin/entrypoint"]
8081
CMD ["/usr/bin/s6-svscan", "/etc/s6"]

Dockerfile.rootless

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,6 @@ ENV HOME="/var/lib/gitea/git"
7777
VOLUME ["/var/lib/gitea", "/etc/gitea"]
7878
WORKDIR /var/lib/gitea
7979

80+
# HINT: HEALTH-CHECK-ENDPOINT: don't use HEALTHCHECK, search this hint keyword for more information
8081
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/local/bin/docker-entrypoint.sh"]
8182
CMD []

Makefile

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -489,11 +489,11 @@ generate-ini-sqlite:
489489

490490
.PHONY: test-sqlite
491491
test-sqlite: integrations.sqlite.test generate-ini-sqlite
492-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./integrations.sqlite.test
492+
GITEA_TEST_CONF=tests/sqlite.ini ./integrations.sqlite.test
493493

494494
.PHONY: test-sqlite\#%
495495
test-sqlite\#%: integrations.sqlite.test generate-ini-sqlite
496-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./integrations.sqlite.test -test.run $(subst .,/,$*)
496+
GITEA_TEST_CONF=tests/sqlite.ini ./integrations.sqlite.test -test.run $(subst .,/,$*)
497497

498498
.PHONY: test-sqlite-migration
499499
test-sqlite-migration: migrations.sqlite.test migrations.individual.sqlite.test
@@ -510,11 +510,11 @@ generate-ini-mysql:
510510

511511
.PHONY: test-mysql
512512
test-mysql: integrations.mysql.test generate-ini-mysql
513-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./integrations.mysql.test
513+
GITEA_TEST_CONF=tests/mysql.ini ./integrations.mysql.test
514514

515515
.PHONY: test-mysql\#%
516516
test-mysql\#%: integrations.mysql.test generate-ini-mysql
517-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./integrations.mysql.test -test.run $(subst .,/,$*)
517+
GITEA_TEST_CONF=tests/mysql.ini ./integrations.mysql.test -test.run $(subst .,/,$*)
518518

519519
.PHONY: test-mysql-migration
520520
test-mysql-migration: migrations.mysql.test migrations.individual.mysql.test
@@ -533,11 +533,11 @@ generate-ini-pgsql:
533533

534534
.PHONY: test-pgsql
535535
test-pgsql: integrations.pgsql.test generate-ini-pgsql
536-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./integrations.pgsql.test
536+
GITEA_TEST_CONF=tests/pgsql.ini ./integrations.pgsql.test
537537

538538
.PHONY: test-pgsql\#%
539539
test-pgsql\#%: integrations.pgsql.test generate-ini-pgsql
540-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./integrations.pgsql.test -test.run $(subst .,/,$*)
540+
GITEA_TEST_CONF=tests/pgsql.ini ./integrations.pgsql.test -test.run $(subst .,/,$*)
541541

542542
.PHONY: test-pgsql-migration
543543
test-pgsql-migration: migrations.pgsql.test migrations.individual.pgsql.test
@@ -554,11 +554,11 @@ generate-ini-mssql:
554554

555555
.PHONY: test-mssql
556556
test-mssql: integrations.mssql.test generate-ini-mssql
557-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini ./integrations.mssql.test
557+
GITEA_TEST_CONF=tests/mssql.ini ./integrations.mssql.test
558558

559559
.PHONY: test-mssql\#%
560560
test-mssql\#%: integrations.mssql.test generate-ini-mssql
561-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini ./integrations.mssql.test -test.run $(subst .,/,$*)
561+
GITEA_TEST_CONF=tests/mssql.ini ./integrations.mssql.test -test.run $(subst .,/,$*)
562562

563563
.PHONY: test-mssql-migration
564564
test-mssql-migration: migrations.mssql.test migrations.individual.mssql.test
@@ -577,59 +577,59 @@ test-e2e: test-e2e-sqlite
577577

578578
.PHONY: test-e2e-sqlite
579579
test-e2e-sqlite: playwright e2e.sqlite.test generate-ini-sqlite
580-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./e2e.sqlite.test
580+
GITEA_TEST_CONF=tests/sqlite.ini ./e2e.sqlite.test
581581

582582
.PHONY: test-e2e-sqlite\#%
583583
test-e2e-sqlite\#%: playwright e2e.sqlite.test generate-ini-sqlite
584-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./e2e.sqlite.test -test.run TestE2e/$*
584+
GITEA_TEST_CONF=tests/sqlite.ini ./e2e.sqlite.test -test.run TestE2e/$*
585585

586586
.PHONY: test-e2e-mysql
587587
test-e2e-mysql: playwright e2e.mysql.test generate-ini-mysql
588-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./e2e.mysql.test
588+
GITEA_TEST_CONF=tests/mysql.ini ./e2e.mysql.test
589589

590590
.PHONY: test-e2e-mysql\#%
591591
test-e2e-mysql\#%: playwright e2e.mysql.test generate-ini-mysql
592-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./e2e.mysql.test -test.run TestE2e/$*
592+
GITEA_TEST_CONF=tests/mysql.ini ./e2e.mysql.test -test.run TestE2e/$*
593593

594594
.PHONY: test-e2e-pgsql
595595
test-e2e-pgsql: playwright e2e.pgsql.test generate-ini-pgsql
596-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./e2e.pgsql.test
596+
GITEA_TEST_CONF=tests/pgsql.ini ./e2e.pgsql.test
597597

598598
.PHONY: test-e2e-pgsql\#%
599599
test-e2e-pgsql\#%: playwright e2e.pgsql.test generate-ini-pgsql
600-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./e2e.pgsql.test -test.run TestE2e/$*
600+
GITEA_TEST_CONF=tests/pgsql.ini ./e2e.pgsql.test -test.run TestE2e/$*
601601

602602
.PHONY: test-e2e-mssql
603603
test-e2e-mssql: playwright e2e.mssql.test generate-ini-mssql
604-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini ./e2e.mssql.test
604+
GITEA_TEST_CONF=tests/mssql.ini ./e2e.mssql.test
605605

606606
.PHONY: test-e2e-mssql\#%
607607
test-e2e-mssql\#%: playwright e2e.mssql.test generate-ini-mssql
608-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini ./e2e.mssql.test -test.run TestE2e/$*
608+
GITEA_TEST_CONF=tests/mssql.ini ./e2e.mssql.test -test.run TestE2e/$*
609609

610610
.PHONY: bench-sqlite
611611
bench-sqlite: integrations.sqlite.test generate-ini-sqlite
612-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./integrations.sqlite.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
612+
GITEA_TEST_CONF=tests/sqlite.ini ./integrations.sqlite.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
613613

614614
.PHONY: bench-mysql
615615
bench-mysql: integrations.mysql.test generate-ini-mysql
616-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./integrations.mysql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
616+
GITEA_TEST_CONF=tests/mysql.ini ./integrations.mysql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
617617

618618
.PHONY: bench-mssql
619619
bench-mssql: integrations.mssql.test generate-ini-mssql
620-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini ./integrations.mssql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
620+
GITEA_TEST_CONF=tests/mssql.ini ./integrations.mssql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
621621

622622
.PHONY: bench-pgsql
623623
bench-pgsql: integrations.pgsql.test generate-ini-pgsql
624-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./integrations.pgsql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
624+
GITEA_TEST_CONF=tests/pgsql.ini ./integrations.pgsql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
625625

626626
.PHONY: integration-test-coverage
627627
integration-test-coverage: integrations.cover.test generate-ini-mysql
628-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./integrations.cover.test -test.coverprofile=integration.coverage.out
628+
GITEA_TEST_CONF=tests/mysql.ini ./integrations.cover.test -test.coverprofile=integration.coverage.out
629629

630630
.PHONY: integration-test-coverage-sqlite
631631
integration-test-coverage-sqlite: integrations.cover.sqlite.test generate-ini-sqlite
632-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./integrations.cover.sqlite.test -test.coverprofile=integration.coverage.out
632+
GITEA_TEST_CONF=tests/sqlite.ini ./integrations.cover.sqlite.test -test.coverprofile=integration.coverage.out
633633

634634
integrations.mysql.test: git-check $(GO_SOURCES)
635635
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mysql.test
@@ -652,54 +652,54 @@ integrations.cover.sqlite.test: git-check $(GO_SOURCES)
652652
.PHONY: migrations.mysql.test
653653
migrations.mysql.test: $(GO_SOURCES) generate-ini-mysql
654654
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mysql.test
655-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./migrations.mysql.test
655+
GITEA_TEST_CONF=tests/mysql.ini ./migrations.mysql.test
656656

657657
.PHONY: migrations.pgsql.test
658658
migrations.pgsql.test: $(GO_SOURCES) generate-ini-pgsql
659659
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.pgsql.test
660-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./migrations.pgsql.test
660+
GITEA_TEST_CONF=tests/pgsql.ini ./migrations.pgsql.test
661661

662662
.PHONY: migrations.mssql.test
663663
migrations.mssql.test: $(GO_SOURCES) generate-ini-mssql
664664
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mssql.test
665-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini ./migrations.mssql.test
665+
GITEA_TEST_CONF=tests/mssql.ini ./migrations.mssql.test
666666

667667
.PHONY: migrations.sqlite.test
668668
migrations.sqlite.test: $(GO_SOURCES) generate-ini-sqlite
669669
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.sqlite.test -tags '$(TEST_TAGS)'
670-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./migrations.sqlite.test
670+
GITEA_TEST_CONF=tests/sqlite.ini ./migrations.sqlite.test
671671

672672
.PHONY: migrations.individual.mysql.test
673673
migrations.individual.mysql.test: $(GO_SOURCES)
674-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
674+
GITEA_TEST_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
675675

676676
.PHONY: migrations.individual.sqlite.test\#%
677677
migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite
678-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
678+
GITEA_TEST_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
679679

680680
.PHONY: migrations.individual.pgsql.test
681681
migrations.individual.pgsql.test: $(GO_SOURCES)
682-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
682+
GITEA_TEST_CONF=tests/pgsql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
683683

684684
.PHONY: migrations.individual.pgsql.test\#%
685685
migrations.individual.pgsql.test\#%: $(GO_SOURCES) generate-ini-pgsql
686-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
686+
GITEA_TEST_CONF=tests/pgsql.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
687687

688688
.PHONY: migrations.individual.mssql.test
689689
migrations.individual.mssql.test: $(GO_SOURCES) generate-ini-mssql
690-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
690+
GITEA_TEST_CONF=tests/mssql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
691691

692692
.PHONY: migrations.individual.mssql.test\#%
693693
migrations.individual.mssql.test\#%: $(GO_SOURCES) generate-ini-mssql
694-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mssql.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
694+
GITEA_TEST_CONF=tests/mssql.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
695695

696696
.PHONY: migrations.individual.sqlite.test
697697
migrations.individual.sqlite.test: $(GO_SOURCES) generate-ini-sqlite
698-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
698+
GITEA_TEST_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
699699

700700
.PHONY: migrations.individual.sqlite.test\#%
701701
migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite
702-
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
702+
GITEA_TEST_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
703703

704704
e2e.mysql.test: $(GO_SOURCES)
705705
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mysql.test
@@ -747,7 +747,7 @@ security-check:
747747

748748
$(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
749749
ifneq ($(and $(STATIC),$(findstring pam,$(TAGS))),)
750-
$(error pam support set via TAGS doesn't support static builds)
750+
$(error pam support set via TAGS does not support static builds)
751751
endif
752752
CGO_ENABLED="$(CGO_ENABLED)" CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(EXTLDFLAGS) $(LDFLAGS)' -o $@
753753

cmd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func NewMainApp(appVer AppVersion) *cli.Command {
149149
app.Commands = append(app.Commands, subCmdWithConfig...)
150150
app.Commands = append(app.Commands, subCmdStandalone...)
151151

152-
setting.InitGiteaEnvVars()
152+
setting.UnsetUnnecessaryEnvVars()
153153
return app
154154
}
155155

cmd/main_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ func TestCliCmd(t *testing.T) {
157157

158158
for _, c := range cases {
159159
t.Run(c.cmd, func(t *testing.T) {
160+
defer test.MockVariableValue(&setting.InstallLock, false)()
160161
app := newTestApp(cli.Command{
161162
Action: func(ctx context.Context, cmd *cli.Command) error {
162163
_, _ = fmt.Fprint(cmd.Root().Writer, makePathOutput(setting.AppWorkPath, setting.CustomPath, setting.CustomConf))
@@ -170,7 +171,10 @@ func TestCliCmd(t *testing.T) {
170171
r, err := runTestApp(app, args...)
171172
assert.NoError(t, err, c.cmd)
172173
assert.NotEmpty(t, c.exp, c.cmd)
173-
assert.Contains(t, r.Stdout, c.exp, c.cmd)
174+
if !assert.Contains(t, r.Stdout, c.exp, c.cmd) {
175+
t.Log("Full output:\n" + r.Stdout)
176+
t.Log("Expected:\n" + c.exp)
177+
}
174178
})
175179
}
176180
}

models/db/engine_init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func InitEngine(ctx context.Context) error {
5757
xe, err := newXORMEngine()
5858
if err != nil {
5959
if strings.Contains(err.Error(), "SQLite3 support") {
60-
return fmt.Errorf(`sqlite3 requires: -tags sqlite,sqlite_unlock_notify%s%w`, "\n", err)
60+
return fmt.Errorf("sqlite3 requires: -tags sqlite,sqlite_unlock_notify\n%w", err)
6161
}
6262
return fmt.Errorf("failed to connect to database: %w", err)
6363
}

models/migrations/base/db.go

Lines changed: 0 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,14 @@ package base
55

66
import (
77
"context"
8-
"database/sql"
98
"errors"
109
"fmt"
11-
"os"
12-
"path"
1310
"reflect"
1411
"regexp"
1512
"strings"
16-
"time"
1713

18-
"code.gitea.io/gitea/models/db"
19-
"code.gitea.io/gitea/models/unittest"
2014
"code.gitea.io/gitea/modules/log"
2115
"code.gitea.io/gitea/modules/setting"
22-
"code.gitea.io/gitea/modules/util"
2316

2417
"xorm.io/xorm"
2518
"xorm.io/xorm/schemas"
@@ -515,114 +508,3 @@ func ModifyColumn(x *xorm.Engine, tableName string, col *schemas.Column) error {
515508
}
516509
return nil
517510
}
518-
519-
func removeAllWithRetry(dir string) error {
520-
var err error
521-
for range 20 {
522-
err = os.RemoveAll(dir)
523-
if err == nil {
524-
break
525-
}
526-
time.Sleep(100 * time.Millisecond)
527-
}
528-
return err
529-
}
530-
531-
func newXORMEngine() (*xorm.Engine, error) {
532-
if err := db.InitEngine(context.Background()); err != nil {
533-
return nil, err
534-
}
535-
x := unittest.GetXORMEngine()
536-
return x, nil
537-
}
538-
539-
func deleteDB() error {
540-
switch {
541-
case setting.Database.Type.IsSQLite3():
542-
if err := util.Remove(setting.Database.Path); err != nil {
543-
return err
544-
}
545-
return os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm)
546-
547-
case setting.Database.Type.IsMySQL():
548-
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/",
549-
setting.Database.User, setting.Database.Passwd, setting.Database.Host))
550-
if err != nil {
551-
return err
552-
}
553-
defer db.Close()
554-
555-
if _, err = db.Exec("DROP DATABASE IF EXISTS " + setting.Database.Name); err != nil {
556-
return err
557-
}
558-
559-
if _, err = db.Exec("CREATE DATABASE IF NOT EXISTS " + setting.Database.Name); err != nil {
560-
return err
561-
}
562-
return nil
563-
case setting.Database.Type.IsPostgreSQL():
564-
db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
565-
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
566-
if err != nil {
567-
return err
568-
}
569-
defer db.Close()
570-
571-
if _, err = db.Exec("DROP DATABASE IF EXISTS " + setting.Database.Name); err != nil {
572-
return err
573-
}
574-
575-
if _, err = db.Exec("CREATE DATABASE " + setting.Database.Name); err != nil {
576-
return err
577-
}
578-
db.Close()
579-
580-
// Check if we need to setup a specific schema
581-
if len(setting.Database.Schema) != 0 {
582-
db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
583-
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
584-
if err != nil {
585-
return err
586-
}
587-
defer db.Close()
588-
589-
schrows, err := db.Query(fmt.Sprintf("SELECT 1 FROM information_schema.schemata WHERE schema_name = '%s'", setting.Database.Schema))
590-
if err != nil {
591-
return err
592-
}
593-
defer schrows.Close()
594-
595-
if !schrows.Next() {
596-
// Create and setup a DB schema
597-
_, err = db.Exec("CREATE SCHEMA " + setting.Database.Schema)
598-
if err != nil {
599-
return err
600-
}
601-
}
602-
603-
// Make the user's default search path the created schema; this will affect new connections
604-
_, err = db.Exec(fmt.Sprintf(`ALTER USER "%s" SET search_path = %s`, setting.Database.User, setting.Database.Schema))
605-
if err != nil {
606-
return err
607-
}
608-
return nil
609-
}
610-
case setting.Database.Type.IsMSSQL():
611-
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
612-
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
613-
host, port, "master", setting.Database.User, setting.Database.Passwd))
614-
if err != nil {
615-
return err
616-
}
617-
defer db.Close()
618-
619-
if _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS [%s]", setting.Database.Name)); err != nil {
620-
return err
621-
}
622-
if _, err = db.Exec(fmt.Sprintf("CREATE DATABASE [%s]", setting.Database.Name)); err != nil {
623-
return err
624-
}
625-
}
626-
627-
return nil
628-
}

0 commit comments

Comments
 (0)