From 783cbe20e84bc601d19d9e1d30ad4de9811db2bb Mon Sep 17 00:00:00 2001 From: yukkop Date: Sat, 22 Nov 2025 11:50:42 +0000 Subject: [PATCH] fix(package): `migrator`: init migration --- package/migrator/migrator.sh | 116 ++++++++++++------- test/package/migrator/test/migrate-up/run.sh | 24 ++-- 2 files changed, 84 insertions(+), 56 deletions(-) diff --git a/package/migrator/migrator.sh b/package/migrator/migrator.sh index 1a10846..9c11ec2 100644 --- a/package/migrator/migrator.sh +++ b/package/migrator/migrator.sh @@ -1,5 +1,7 @@ #!/bin/dash +#version="$(psql "$DB_URL" -c "SELECT version FROM hectic.version WHERE name = 'migrator';")" + # error codes # 1 - generic error # 2 - ambiguous, when you try to use something that cannot be used in same time @@ -31,7 +33,7 @@ sha256sum() { } while [ $# -gt 0 ]; do - log debug "$1" + log debug "arg: $1" case $1 in migrate|create|fetch|list|init) [ "${SUBCOMMAND+x}" ] && { @@ -124,47 +126,70 @@ error_handler_no_db_url() { init_sql() { local sql - sql="$(printf '%s\n' \ - "BEGIN;" \ - '' \ - 'CREATE SCHEMA IF NOT EXISTS hectic;' \ - '' \ - "CREATE DOMAIN hectic.migration_name AS TEXT CHECK (VALUE ~ '^[0-9]{15}-.*$');" \ - '' \ - "CREATE DOMAIN hectic.sha256 AS CHAR(64) CHECK (VALUE ~ '^[0-9a-f]{64}$');" \ - '' \ - 'CREATE FUNCTION hectic.sha256_lower() RETURNS trigger AS $$' \ - 'BEGIN' \ - ' NEW.hash = lower(NEW.hash);' \ - ' RETURN NEW;' \ - 'END;' \ - '$$ LANGUAGE plpgsql;' \ - '' \ - 'CREATE TABLE IF NOT EXISTS hectic.version (' \ - ' name TEXT PRIMARY KEY,' \ - ' version TEXT NOT NULL,' \ - ' installed_at TIMESTAMPTZ NOT NULL DEFAULT NOW()' \ - ');' \ - '' \ - "INSERT INTO hectic.version (name, version) VALUES ('migrator', '$VERSION')" \ - '' \ - 'CREATE TABLE IF NOT EXISTS hectic.migration (' \ - ' id SERIAL PRIMARY KEY,' \ - ' name hectic.migration_name UNIQUE NOT NULL,' \ - ' hash hectic.sha256 UNIQUE NOT NULL,' \ - ' applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()' \ - ')')" - [ ${INHERITS_LIST+x} ] && sql="$(printf '%s INHERITS(%s)' "$sql" "$INHERITS_LIST")" + inherits= + [ ${INHERITS_LIST+x} ] && inherits="$(printf 'INHERITS(%s)' "$INHERITS_LIST")" - sql="$(printf '%s;\n' "$sql")" + sql="$(cat <