db prov
This commit is contained in:
parent
1293ef678e
commit
6e99f1c057
1 changed files with 8 additions and 7 deletions
|
|
@ -46,14 +46,15 @@ END $$;`, sqlQuoteLiteral(p.DBUser), sqlQuoteIdent(p.DBUser), sqlQuoteLiteral(p.
|
|||
return fmt.Errorf("create/alter role failed: %w", err)
|
||||
}
|
||||
|
||||
if _, err := adminDB.ExecContext(ctx, fmt.Sprintf(`DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = %s) THEN
|
||||
CREATE DATABASE %s OWNER %s;
|
||||
END IF;
|
||||
END $$;`, sqlQuoteLiteral(p.DBName), sqlQuoteIdent(p.DBName), sqlQuoteIdent(p.DBUser))); err != nil {
|
||||
var dbExists bool
|
||||
if err := adminDB.QueryRowContext(ctx, `SELECT EXISTS (SELECT 1 FROM pg_database WHERE datname = $1)`, p.DBName).Scan(&dbExists); err != nil {
|
||||
return fmt.Errorf("check database existence failed: %w", err)
|
||||
}
|
||||
if !dbExists {
|
||||
if _, err := adminDB.ExecContext(ctx, fmt.Sprintf(`CREATE DATABASE %s OWNER %s`, sqlQuoteIdent(p.DBName), sqlQuoteIdent(p.DBUser))); err != nil {
|
||||
return fmt.Errorf("create database failed: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := a.db.ExecContext(ctx, `UPDATE projects SET db_name=$1, db_user=$2, db_password=$3 WHERE id=$4`, p.DBName, p.DBUser, p.DBPassword, p.ID); err != nil {
|
||||
return fmt.Errorf("persist db credentials failed: %w", err)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue