save progress
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
# 00-init-schema.sh
|
||||
# Initialize PostgreSQL with module schema for testing
|
||||
# Sprint: SPRINT_20260105_002_005_TEST_cross_cutting
|
||||
# Task: CCUT-008
|
||||
|
||||
set -e
|
||||
|
||||
echo "Initializing schema for module: ${STELLAOPS_MODULE}"
|
||||
echo "Schema version: ${STELLAOPS_SCHEMA_VERSION}"
|
||||
|
||||
# Create extensions
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
||||
CREATE EXTENSION IF NOT EXISTS "btree_gist";
|
||||
EOSQL
|
||||
|
||||
# Apply base schema if exists
|
||||
BASE_SCHEMA="/schemas/${STELLAOPS_MODULE}/base.sql"
|
||||
if [ -f "$BASE_SCHEMA" ]; then
|
||||
echo "Applying base schema: $BASE_SCHEMA"
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$BASE_SCHEMA"
|
||||
fi
|
||||
|
||||
# Apply versioned schema if exists
|
||||
VERSION_SCHEMA="/schemas/${STELLAOPS_MODULE}/${STELLAOPS_SCHEMA_VERSION}.sql"
|
||||
if [ -f "$VERSION_SCHEMA" ]; then
|
||||
echo "Applying version schema: $VERSION_SCHEMA"
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$VERSION_SCHEMA"
|
||||
fi
|
||||
|
||||
# Apply all migrations up to version
|
||||
MIGRATIONS_DIR="/schemas/${STELLAOPS_MODULE}/migrations"
|
||||
if [ -d "$MIGRATIONS_DIR" ]; then
|
||||
echo "Applying migrations from: $MIGRATIONS_DIR"
|
||||
|
||||
# Get version number for comparison
|
||||
VERSION_NUM=$(echo "$STELLAOPS_SCHEMA_VERSION" | sed 's/v//' | sed 's/\.//g')
|
||||
|
||||
for migration in $(ls -1 "$MIGRATIONS_DIR"/*.sql 2>/dev/null | sort -V); do
|
||||
MIGRATION_VERSION=$(basename "$migration" .sql | sed 's/[^0-9]//g')
|
||||
|
||||
if [ -n "$VERSION_NUM" ] && [ "$MIGRATION_VERSION" -gt "$VERSION_NUM" ]; then
|
||||
echo "Skipping migration $migration (version $MIGRATION_VERSION > $VERSION_NUM)"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Applying migration: $migration"
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$migration"
|
||||
done
|
||||
fi
|
||||
|
||||
# Record schema version in metadata table
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE TABLE IF NOT EXISTS _schema_metadata (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL,
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
INSERT INTO _schema_metadata (key, value)
|
||||
VALUES
|
||||
('module', '${STELLAOPS_MODULE}'),
|
||||
('schema_version', '${STELLAOPS_SCHEMA_VERSION}'),
|
||||
('initialized_at', NOW()::TEXT)
|
||||
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW();
|
||||
EOSQL
|
||||
|
||||
echo "Schema initialization complete for ${STELLAOPS_MODULE} version ${STELLAOPS_SCHEMA_VERSION}"
|
||||
Reference in New Issue
Block a user