mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 20:55:41 +02:00
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
"""Aggiunge la tabella tenant_settings per configurazione archiviazione sostitutiva
|
|
|
|
Revision ID: 0005
|
|
Revises: 0004
|
|
Create Date: 2026-03-19 00:00:00.000000
|
|
|
|
Aggiunge:
|
|
- tenant_settings (configurazione per-tenant: modalità archivio mock/produzione,
|
|
credenziali conservatore AgID cifrate)
|
|
"""
|
|
|
|
from alembic import op
|
|
|
|
revision = "0005"
|
|
down_revision = "0004"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute("""
|
|
CREATE TABLE tenant_settings (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
|
|
-- Archiviazione sostitutiva (Fase 6)
|
|
-- 'mock' → usa conservatore simulato in locale (default sicuro per dev)
|
|
-- 'production' → usa endpoint reale AgID conservatore
|
|
archival_mode VARCHAR(20) NOT NULL DEFAULT 'mock',
|
|
|
|
-- Identificativo del conservatore (es. 'aruba-cons', 'docuvision', 'mock')
|
|
conservatore_id VARCHAR(100) NOT NULL DEFAULT 'mock',
|
|
|
|
-- URL API conservatore (NULL in modalità mock)
|
|
conservatore_endpoint TEXT,
|
|
|
|
-- Credenziali cifrate AES-256-GCM (NULL in modalità mock)
|
|
conservatore_username_enc TEXT,
|
|
conservatore_password_enc TEXT,
|
|
|
|
-- Note operative libere
|
|
archival_notes TEXT,
|
|
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
CONSTRAINT uq_tenant_settings_tenant UNIQUE (tenant_id)
|
|
)
|
|
""")
|
|
op.execute("CREATE INDEX idx_tenant_settings_tenant ON tenant_settings (tenant_id)")
|
|
|
|
# Trigger updated_at
|
|
op.execute("""
|
|
CREATE TRIGGER trg_tenant_settings_updated_at
|
|
BEFORE UPDATE ON tenant_settings
|
|
FOR EACH ROW EXECUTE FUNCTION set_updated_at()
|
|
""")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute("DROP TABLE IF EXISTS tenant_settings CASCADE")
|