(db *sql.DB, database string)
| 169 | } |
| 170 | |
| 171 | func createDB(db *sql.DB, database string) error { |
| 172 | if database == "" { |
| 173 | return errors.New("database name can't be empty") |
| 174 | } |
| 175 | |
| 176 | rows, err := db.Query(`SELECT 1 FROM pg_database WHERE datname = $1`, database) |
| 177 | if err != nil { |
| 178 | return err |
| 179 | } |
| 180 | defer rows.Close() |
| 181 | if rows.Next() { |
| 182 | return nil // database is already created |
| 183 | } |
| 184 | |
| 185 | // Verify database only has runes we expect |
| 186 | if !validDatabaseName(database) { |
| 187 | return fmt.Errorf("Invalid postgres database name: %q", database) |
| 188 | } |
| 189 | _, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s", database)) |
| 190 | if err != nil { |
| 191 | return err |
| 192 | } |
| 193 | return err |
| 194 | } |
no test coverage detected