@@ -74,13 +74,14 @@ func ChangePassword(ctx context.Context, pg *pgx.Conn, username, password string
74
74
75
75
func CreateDatabaseWithOwner (ctx context.Context , pg * pgx.Conn , name , owner string ) error {
76
76
dbInfo , err := FindDatabase (ctx , pg , name )
77
- if err != nil && err != pgx . ErrNoRows {
77
+ if err != nil {
78
78
return err
79
79
}
80
- // Database already exists.
80
+
81
81
if dbInfo != nil {
82
82
return nil
83
83
}
84
+
84
85
sql := fmt .Sprintf ("CREATE DATABASE %s OWNER %s;" , name , owner )
85
86
_ , err = pg .Exec (ctx , sql )
86
87
@@ -89,7 +90,7 @@ func CreateDatabaseWithOwner(ctx context.Context, pg *pgx.Conn, name, owner stri
89
90
90
91
func CreateDatabase (ctx context.Context , pg * pgx.Conn , name string ) error {
91
92
dbInfo , err := FindDatabase (ctx , pg , name )
92
- if err != nil && err != pgx . ErrNoRows {
93
+ if err != nil {
93
94
return err
94
95
}
95
96
// Database already exists.
@@ -197,7 +198,7 @@ func ListDatabases(ctx context.Context, pg *pgx.Conn) ([]DbInfo, error) {
197
198
}
198
199
defer rows .Close ()
199
200
200
- values := []DbInfo {}
201
+ var values []DbInfo
201
202
202
203
for rows .Next () {
203
204
di := DbInfo {}
@@ -210,23 +211,19 @@ func ListDatabases(ctx context.Context, pg *pgx.Conn) ([]DbInfo, error) {
210
211
return values , nil
211
212
}
212
213
213
- func FindDatabase (ctx context.Context , pg * pgx.Conn , name string ) (* DbInfo , error ) {
214
- sql := `
215
- SELECT
216
- datname,
217
- (SELECT array_agg(u.usename::text order by u.usename) FROM pg_user u WHERE has_database_privilege(u.usename, d.datname, 'CONNECT')) as allowed_users
218
- FROM pg_database d WHERE d.datname='%s';
219
- `
220
-
221
- sql = fmt .Sprintf (sql , name )
222
- row := pg .QueryRow (ctx , sql )
223
-
224
- db := new (DbInfo )
225
- if err := row .Scan (& db .Name , & db .Users ); err != nil {
214
+ func FindDatabase (ctx context.Context , conn * pgx.Conn , name string ) (* DbInfo , error ) {
215
+ dbs , err := ListDatabases (ctx , conn )
216
+ if err != nil {
226
217
return nil , err
227
218
}
228
219
229
- return db , nil
220
+ for _ , db := range dbs {
221
+ if db .Name == name {
222
+ return & db , nil
223
+ }
224
+ }
225
+
226
+ return nil , nil
230
227
}
231
228
232
229
type UserInfo struct {
@@ -260,7 +257,7 @@ func ListUsers(ctx context.Context, pg *pgx.Conn) ([]UserInfo, error) {
260
257
}
261
258
defer rows .Close ()
262
259
263
- values := []UserInfo {}
260
+ var values []UserInfo
264
261
265
262
for rows .Next () {
266
263
ui := UserInfo {}
0 commit comments