|
|
||
|---|---|---|
| .. | ||
| README.md | ||
| V20260120_001__migrate_auth_sessions_structure_DOWN.sql | ||
| V20260120_001__migrate_auth_sessions_structure.sql | ||
| V20260120_002__migrate_billing_subscriptions_DOWN.sql | ||
| V20260120_002__migrate_billing_subscriptions.sql | ||
| V20260120_003__migrate_audit_logs_DOWN.sql | ||
| V20260120_003__migrate_audit_logs.sql | ||
Database Migrations
This directory contains SQL migration scripts for schema changes.
Naming Convention
V{YYYYMMDD}_{NNN}__{description}.sql # UP migration
V{YYYYMMDD}_{NNN}__{description}_DOWN.sql # DOWN migration (rollback)
Example:
V20260120_001__migrate_auth_sessions_structure.sqlV20260120_001__migrate_auth_sessions_structure_DOWN.sql
Migration Order
Migrations should be applied in order by version number:
V20260120_001- auth.sessions structure changesV20260120_002- billing.subscriptions structure changesV20260120_003- audit.audit_logs structure changes
Running Migrations
Apply UP migration
psql -h localhost -U postgres -d template_saas -f migrations/V20260120_001__migrate_auth_sessions_structure.sql
Apply DOWN migration (rollback)
psql -h localhost -U postgres -d template_saas -f migrations/V20260120_001__migrate_auth_sessions_structure_DOWN.sql
Migration Details
V20260120_001 - Auth Sessions
Changes:
- Renames
session_token->token_hash(VARCHAR(64) -> VARCHAR(255)) - Converts
is_active(BOOLEAN) ->status(ENUM: active, expired, revoked) - Adds
device_name,browser,os,locationcolumns - Adds
revoked_at,revoked_reasoncolumns - Updates cleanup function to use status
V20260120_002 - Billing Subscriptions
Changes:
- Adds Stripe integration columns (
stripe_subscription_id,stripe_customer_id) - Adds billing
intervalcolumn (ENUM: month, year) - Adds trial/cancellation columns (
trial_start,cancel_at,cancel_reason) - Adds pricing columns (
price_amount,currency) - Renames
cancelled_at->canceled_at(American spelling) - Updates subscription_status enum:
trial->trialing
V20260120_003 - Audit Logs
Changes:
- Renames
entity_type->resource_type - Renames
entity_id->resource_id - Adds actor columns (
user_email,actor_type) - Adds
resource_name,severitycolumns - Adds context columns (
request_id,session_id) - Adds HTTP columns (
endpoint,http_method,response_status,duration_ms) - Splits
changesJSONB ->old_values,new_values,changed_fields - Updates
audit.log_event()function
Safety Notes
- Always backup before migrating
- Run in transaction - All migrations use BEGIN/COMMIT
- Test on staging first
- Idempotent checks - Migrations check if changes already exist
- DOWN migrations may lose data - VARCHAR truncation, column drops
Related Files
- DDL definitions:
../ddl/schemas/ - Enum definitions:
../ddl/02-enums.sql - Functions:
../ddl/03-functions.sql