Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions docker/dev/docker-start
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,17 @@ rm -f /tmp/.s.PGSQL.*
rm -f /var/log/api-umbrella/trafficserver/error.log

make

# Wait for PostgreSQL to be ready before running database setup.
echo "Waiting for PostgreSQL to be ready..."
until PGPASSWORD=dev_password psql -h postgres -U postgres -c '\q' 2>/dev/null; do
echo "PostgreSQL is unavailable - sleeping"
sleep 1
done
echo "PostgreSQL is ready"

# Run database setup as postgres superuser to create the database and roles.
# This is idempotent and safe to run on every startup.
DB_USERNAME=postgres DB_PASSWORD=dev_password api-umbrella db-setup

api-umbrella run
9 changes: 9 additions & 0 deletions src/api-umbrella/cli.lua
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ function _M.db_setup()
db_setup()
end

function _M.db_drop()
local db_drop = require "api-umbrella.cli.db_drop"
db_drop()
end

function _M.migrate()
local migrate = require "api-umbrella.cli.migrate"
migrate()
Expand Down Expand Up @@ -140,6 +145,10 @@ parser:command("db-setup")
:description("Run the initial database setup task.")
:action(_M.db_setup)

parser:command("db-drop")
:description("Drop the database.")
:action(_M.db_drop)

parser:command("migrate")
:description("Run the database migrations task.")
:action(_M.migrate)
Expand Down
11 changes: 11 additions & 0 deletions src/api-umbrella/cli/db_drop.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
local pg_utils = require "api-umbrella.utils.pg_utils"

return function()
local database = pg_utils.db_config["database"]

pg_utils.db_config["database"] = "postgres"
pg_utils.db_config["user"] = os.getenv("DB_USERNAME")
pg_utils.db_config["password"] = os.getenv("DB_PASSWORD")

pg_utils.query("DROP DATABASE IF EXISTS :database", { database = pg_utils.identifier(database) }, { verbose = true, fatal = true })
end
Loading