--liquibase formatted sql -- PANELS · panels_platform (Postgres) · baseline -- -- Control plane SaaS: tenants, operadores de PANELS (platform_users) y -- configuración SMTP. Base de datos físicamente separada de panels_product -- (ver plan de migración) -- nada aquí se referencia desde iam/core con FK. -- -- Este baseline representa el ESTADO FINAL equivalente a los changesets -- SQLite 001..007 de la implementación anterior, no un replay literal -- (varios de esos changesets eran parches específicos de SQLite, p. ej. -- el rebuild de tabla en 004-tenant-status-expand.sql para ampliar un CHECK). --changeset panel:platform-001a-tenants endDelimiter:; --preconditions onFail:MARK_RAN --precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='public' AND table_name='tenants' CREATE TABLE tenants ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, code TEXT NOT NULL UNIQUE, name TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'activo' CHECK (status IN ('activo', 'suspendido', 'cancelado')), plan TEXT NOT NULL DEFAULT 'trial', valid_until DATE, notes TEXT NOT NULL DEFAULT '', contact_email TEXT NOT NULL DEFAULT '', contact_name TEXT NOT NULL DEFAULT '', access_sent_at TIMESTAMPTZ, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); --changeset panel:platform-001b-platform-users endDelimiter:; --preconditions onFail:MARK_RAN --precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='public' AND table_name='platform_users' CREATE TABLE platform_users ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, username TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, display_name TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'activo' CHECK (status IN ('activo', 'inactivo')), created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); --changeset panel:platform-001c-smtp-settings endDelimiter:; splitStatements:true --preconditions onFail:MARK_RAN --precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='public' AND table_name='smtp_settings' CREATE TABLE smtp_settings ( id INTEGER PRIMARY KEY CHECK (id = 1), host TEXT NOT NULL DEFAULT '', port INTEGER NOT NULL DEFAULT 587, username TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '', from_address TEXT NOT NULL DEFAULT '', enabled BOOLEAN NOT NULL DEFAULT false, updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); INSERT INTO smtp_settings (id, host, port, username, password, from_address, enabled) VALUES (1, '', 587, '', '', '', false); --changeset panel:platform-001d-seed-arctec-tenant context:dev endDelimiter:; splitStatements:true --comment: Datos de demostración -- nunca en staging/producción. id=1 fijo a -- propósito: los changesets de dev-seed de core/iam asumen este mismo id -- para tenant_id (no hay FK real entre bases, así que se sincroniza a mano). --preconditions onFail:MARK_RAN --precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM tenants WHERE code = 'ARCT2608' INSERT INTO tenants (id, code, name, status) OVERRIDING SYSTEM VALUE VALUES (1, 'ARCT2608', 'ARCTEC', 'activo'); SELECT setval(pg_get_serial_sequence('tenants', 'id'), (SELECT MAX(id) FROM tenants));