Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 654fb1a

Browse files
committed
chore: do not run db migrations on all cli commands
1 parent 9c62547 commit 654fb1a

File tree

5 files changed

+20
-11
lines changed

5 files changed

+20
-11
lines changed

cli/server.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
697697
options.Database = dbmem.New()
698698
options.Pubsub = pubsub.NewInMemory()
699699
} else {
700-
sqlDB, dbURL, err := getPostgresDB(ctx, logger, vals.PostgresURL.String(), codersdk.PostgresAuth(vals.PostgresAuth), sqlDriver)
700+
sqlDB, dbURL, err := getAndMigratePostgresDB(ctx, logger, vals.PostgresURL.String(), codersdk.PostgresAuth(vals.PostgresAuth), sqlDriver)
701701
if err != nil {
702702
return xerrors.Errorf("connect to postgres: %w", err)
703703
}
@@ -2090,7 +2090,12 @@ func IsLocalhost(host string) bool {
20902090
return host == "localhost" || host == "127.0.0.1" || host == "::1"
20912091
}
20922092

2093-
func ConnectToPostgres(ctx context.Context, logger slog.Logger, driver string, dbURL string) (sqlDB *sql.DB, err error) {
2093+
// ConnectToPostgres takes a control flag "migrate". If true, `migrations.Up` will be applied
2094+
// to the database, potentially making schema changes.
2095+
// If set to false, no database changes will be applied, however the migration version
2096+
// will be checked. If the database is not fully up to date with its migrations, then
2097+
// an error will be returned.
2098+
func ConnectToPostgres(ctx context.Context, logger slog.Logger, migrate bool, driver string, dbURL string) (sqlDB *sql.DB, err error) {
20942099
logger.Debug(ctx, "connecting to postgresql")
20952100

20962101
// Try to connect for 30 seconds.
@@ -2155,7 +2160,11 @@ func ConnectToPostgres(ctx context.Context, logger slog.Logger, driver string, d
21552160
}
21562161
logger.Debug(ctx, "connected to postgresql", slog.F("version", versionNum))
21572162

2158-
err = migrations.Up(sqlDB)
2163+
if migrate {
2164+
err = migrations.Up(sqlDB)
2165+
} else {
2166+
err = migrations.EnsureClean(sqlDB)
2167+
}
21592168
if err != nil {
21602169
return nil, xerrors.Errorf("migrate up: %w", err)
21612170
}
@@ -2561,7 +2570,7 @@ func signalNotifyContext(ctx context.Context, inv *serpent.Invocation, sig ...os
25612570
return inv.SignalNotifyContext(ctx, sig...)
25622571
}
25632572

2564-
func getPostgresDB(ctx context.Context, logger slog.Logger, postgresURL string, auth codersdk.PostgresAuth, sqlDriver string) (*sql.DB, string, error) {
2573+
func getAndMigratePostgresDB(ctx context.Context, logger slog.Logger, postgresURL string, auth codersdk.PostgresAuth, sqlDriver string) (*sql.DB, string, error) {
25652574
dbURL, err := escapePostgresURLUserInfo(postgresURL)
25662575
if err != nil {
25672576
return nil, "", xerrors.Errorf("escaping postgres URL: %w", err)
@@ -2574,7 +2583,7 @@ func getPostgresDB(ctx context.Context, logger slog.Logger, postgresURL string,
25742583
}
25752584
}
25762585

2577-
sqlDB, err := ConnectToPostgres(ctx, logger, sqlDriver, dbURL)
2586+
sqlDB, err := ConnectToPostgres(ctx, logger, true, sqlDriver, dbURL)
25782587
if err != nil {
25792588
return nil, "", xerrors.Errorf("connect to postgres: %w", err)
25802589
}

cli/server_createadminuser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (r *RootCmd) newCreateAdminUserCommand() *serpent.Command {
7272
}
7373
}
7474

75-
sqlDB, err := ConnectToPostgres(ctx, logger, sqlDriver, newUserDBURL)
75+
sqlDB, err := ConnectToPostgres(ctx, logger, false, sqlDriver, newUserDBURL)
7676
if err != nil {
7777
return xerrors.Errorf("connect to postgres: %w", err)
7878
}

cli/server_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1836,7 +1836,7 @@ func TestConnectToPostgres(t *testing.T) {
18361836
dbURL, err := dbtestutil.Open(t)
18371837
require.NoError(t, err)
18381838

1839-
sqlDB, err := cli.ConnectToPostgres(ctx, log, "postgres", dbURL)
1839+
sqlDB, err := cli.ConnectToPostgres(ctx, log, true, "postgres", dbURL)
18401840
require.NoError(t, err)
18411841
t.Cleanup(func() {
18421842
_ = sqlDB.Close()

coderd/database/awsiamrds/awsiamrds_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestDriver(t *testing.T) {
3232
sqlDriver, err := awsiamrds.Register(ctx, "postgres")
3333
require.NoError(t, err)
3434

35-
db, err := cli.ConnectToPostgres(ctx, testutil.Logger(t), sqlDriver, url)
35+
db, err := cli.ConnectToPostgres(ctx, testutil.Logger(t), true, sqlDriver, url)
3636
require.NoError(t, err)
3737
defer func() {
3838
_ = db.Close()

enterprise/cli/server_dbcrypt.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (*RootCmd) dbcryptRotateCmd() *serpent.Command {
9898
}
9999
}
100100

101-
sqlDB, err := cli.ConnectToPostgres(inv.Context(), logger, sqlDriver, flags.PostgresURL)
101+
sqlDB, err := cli.ConnectToPostgres(inv.Context(), logger, false, sqlDriver, flags.PostgresURL)
102102
if err != nil {
103103
return xerrors.Errorf("connect to postgres: %w", err)
104104
}
@@ -163,7 +163,7 @@ func (*RootCmd) dbcryptDecryptCmd() *serpent.Command {
163163
}
164164
}
165165

166-
sqlDB, err := cli.ConnectToPostgres(inv.Context(), logger, sqlDriver, flags.PostgresURL)
166+
sqlDB, err := cli.ConnectToPostgres(inv.Context(), logger, false, sqlDriver, flags.PostgresURL)
167167
if err != nil {
168168
return xerrors.Errorf("connect to postgres: %w", err)
169169
}
@@ -219,7 +219,7 @@ Are you sure you want to continue?`
219219
}
220220
}
221221

222-
sqlDB, err := cli.ConnectToPostgres(inv.Context(), logger, sqlDriver, flags.PostgresURL)
222+
sqlDB, err := cli.ConnectToPostgres(inv.Context(), logger, false, sqlDriver, flags.PostgresURL)
223223
if err != nil {
224224
return xerrors.Errorf("connect to postgres: %w", err)
225225
}

0 commit comments

Comments
 (0)