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

Skip to content

Commit 1b284ec

Browse files
committed
reuse ConnectToPostgres
1 parent 86f26f0 commit 1b284ec

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

cli/resetpassword.go

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,27 @@
33
package cli
44

55
import (
6-
"database/sql"
76
"fmt"
87

98
"golang.org/x/xerrors"
109

10+
"cdr.dev/slog"
11+
"cdr.dev/slog/sloggers/sloghuman"
12+
"github.com/coder/coder/v2/coderd/database/awsiamrds"
13+
"github.com/coder/coder/v2/codersdk"
1114
"github.com/coder/pretty"
1215
"github.com/coder/serpent"
1316

1417
"github.com/coder/coder/v2/cli/cliui"
1518
"github.com/coder/coder/v2/coderd/database"
16-
"github.com/coder/coder/v2/coderd/database/migrations"
1719
"github.com/coder/coder/v2/coderd/userpassword"
1820
)
1921

2022
func (*RootCmd) resetPassword() *serpent.Command {
21-
var postgresURL string
23+
var (
24+
postgresURL string
25+
postgresAuth string
26+
)
2227

2328
root := &serpent.Command{
2429
Use: "reset-password <username>",
@@ -27,20 +32,25 @@ func (*RootCmd) resetPassword() *serpent.Command {
2732
Handler: func(inv *serpent.Invocation) error {
2833
username := inv.Args[0]
2934

30-
sqlDB, err := sql.Open("postgres", postgresURL)
31-
if err != nil {
32-
return xerrors.Errorf("dial postgres: %w", err)
35+
logger := slog.Make(sloghuman.Sink(inv.Stdout))
36+
if ok, _ := inv.ParsedFlags().GetBool("verbose"); ok {
37+
logger = logger.Leveled(slog.LevelDebug)
3338
}
34-
defer sqlDB.Close()
35-
err = sqlDB.Ping()
36-
if err != nil {
37-
return xerrors.Errorf("ping postgres: %w", err)
39+
40+
sqlDriver := "postgres"
41+
if codersdk.PostgresAuth(postgresAuth) == codersdk.PostgresAuthAWSIAMRDS {
42+
var err error
43+
sqlDriver, err = awsiamrds.Register(inv.Context(), sqlDriver)
44+
if err != nil {
45+
return xerrors.Errorf("register aws rds iam auth: %w", err)
46+
}
3847
}
3948

40-
err = migrations.EnsureClean(sqlDB)
49+
sqlDB, err := ConnectToPostgres(inv.Context(), logger, false, sqlDriver, postgresURL)
4150
if err != nil {
42-
return xerrors.Errorf("database needs migration: %w", err)
51+
return xerrors.Errorf("dial postgres: %w", err)
4352
}
53+
4454
db := database.New(sqlDB)
4555

4656
user, err := db.GetUserByEmailOrUsername(inv.Context(), database.GetUserByEmailOrUsernameParams{
@@ -97,6 +107,14 @@ func (*RootCmd) resetPassword() *serpent.Command {
97107
Env: "CODER_PG_CONNECTION_URL",
98108
Value: serpent.StringOf(&postgresURL),
99109
},
110+
serpent.Option{
111+
Name: "Postgres Connection Auth",
112+
Description: "Type of auth to use when connecting to postgres.",
113+
Flag: "postgres-connection-auth",
114+
Env: "CODER_PG_CONNECTION_AUTH",
115+
Default: "password",
116+
Value: serpent.EnumOf(&postgresAuth, codersdk.PostgresAuthDrivers...),
117+
},
100118
}
101119

102120
return root

0 commit comments

Comments
 (0)