func ping(db *postgres.DB, w http.ResponseWriter) { if _, err := db.Exec("SELECT 1"); err != nil { log.Println(err) w.WriteHeader(500) return } w.WriteHeader(200) }
func createDatabase(db *postgres.DB, r render.Render) { username, password, database := randomID(), randomID(), randomID() if _, err := db.Exec(fmt.Sprintf(`CREATE USER "%s" WITH PASSWORD '%s'`, username, password)); err != nil { log.Println(err) r.JSON(500, struct{}{}) return } if _, err := db.Exec(fmt.Sprintf(`CREATE DATABASE "%s" WITH OWNER = "%s"`, database, username)); err != nil { db.Exec(fmt.Sprintf(`DROP USER "%s"`, username)) log.Println(err) r.JSON(500, struct{}{}) return } r.JSON(200, &resource{ ID: fmt.Sprintf("/databases/%s:%s", username, database), Env: map[string]string{ "FLYNN_POSTGRES": serviceName, "PGUSER": username, "PGPASSWORD": password, "PGDATABASE": database, }, }) }