-- Criar tabela de templates de design CREATE TABLE IF NOT EXISTS design_templates ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), nome VARCHAR(255) NOT NULL, descricao TEXT, tipo VARCHAR(50) NOT NULL CHECK (tipo IN ('capa', 'indice', 'divisora', 'cabecalho', 'rodape', 'guia_estilo')), config JSONB NOT NULL DEFAULT '{}', ativo BOOLEAN DEFAULT TRUE, criado_por UUID REFERENCES auth.users(id) ON DELETE SET NULL, criado_em TIMESTAMP DEFAULT NOW(), atualizado_em TIMESTAMP DEFAULT NOW(), UNIQUE(nome) ); -- Criar índices CREATE INDEX idx_design_templates_tipo ON design_templates(tipo); CREATE INDEX idx_design_templates_ativo ON design_templates(ativo); CREATE INDEX idx_design_templates_criado_por ON design_templates(criado_por); -- Desabilitar RLS para desenvolvimento ALTER TABLE design_templates DISABLE ROW LEVEL SECURITY; -- Inserir templates padrão INSERT INTO design_templates (nome, descricao, tipo, config) VALUES ( 'Capa Padrão', 'Template padrão para capa frontal do databook', 'capa', '{ "corPrimaria": "#1a365d", "corSecundaria": "#2b6cb0", "titulo": "BUZIOS 7 PRODUCTION SYSTEM DEVELOPMENT", "subtitulo": "AR HEAD FABRICATION LONG", "cliente": "SAIPEM", "numeroDocumento": "DB-B97-01_S1_VENDOR_DATABOOK", "contrato": "OC 1472739", "fornecedor": "ENGEMETAL" }' ), ( 'Índice Bilíngue', 'Template de índice com suporte a português e inglês', 'indice', '{ "corTitulo": "#1a365d", "corLinha": "#2b6cb0", "bilingue": true, "titulo": "ÍNDICE / TABLE OF CONTENTS" }' ), ( 'Divisora Minimalista', 'Template minimalista para divisoras de seção', 'divisora', '{ "estilo": "minimalista", "corPrimaria": "#1a365d", "corSecundaria": "#2b6cb0", "bilingue": true, "icone": "📑" }' ), ( 'Divisora Lateral', 'Template com barra lateral para divisoras', 'divisora', '{ "estilo": "lateral", "corPrimaria": "#1a365d", "corSecundaria": "#2b6cb0", "bilingue": true, "icone": "📑" }' ), ( 'Divisora Corporativa', 'Template corporativo para divisoras', 'divisora', '{ "estilo": "corporativa", "corPrimaria": "#1a365d", "corSecundaria": "#2b6cb0", "bilingue": true, "icone": "📑" }' ), ( 'Cabeçalho Padrão', 'Template padrão para cabeçalho de página', 'cabecalho', '{ "corBorda": "#2b6cb0", "altura": 60, "estilo": "simples" }' ), ( 'Rodapé Padrão', 'Template padrão para rodapé de página', 'rodape', '{ "corBorda": "#cbd5e0", "altura": 40, "estilo": "simples", "mostrarPagina": true }' ), ( 'Guia de Estilo Padrão', 'Template de guia de estilo completo', 'guia_estilo', '{ "corPrimaria": "#1a365d", "corSecundaria": "#2b6cb0", "corDestaque": "#4299e1", "fontePrincipal": "Roboto", "fonteSecundaria": "Open Sans", "incluirPaleta": true, "incluirTipografia": true }' ) ON CONFLICT (nome) DO NOTHING; -- Criar tabela de aplicação de templates a databooks CREATE TABLE IF NOT EXISTS databook_design_aplicacoes ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), databook_id UUID NOT NULL REFERENCES projetos(id) ON DELETE CASCADE, template_capa_id UUID REFERENCES design_templates(id) ON DELETE SET NULL, template_indice_id UUID REFERENCES design_templates(id) ON DELETE SET NULL, template_divisora_id UUID REFERENCES design_templates(id) ON DELETE SET NULL, template_cabecalho_id UUID REFERENCES design_templates(id) ON DELETE SET NULL, template_rodape_id UUID REFERENCES design_templates(id) ON DELETE SET NULL, template_guia_estilo_id UUID REFERENCES design_templates(id) ON DELETE SET NULL, aplicado_em TIMESTAMP DEFAULT NOW(), atualizado_em TIMESTAMP DEFAULT NOW(), UNIQUE(databook_id) ); -- Criar índices CREATE INDEX idx_databook_design_aplicacoes_databook ON databook_design_aplicacoes(databook_id); -- Desabilitar RLS ALTER TABLE databook_design_aplicacoes DISABLE ROW LEVEL SECURITY; -- Criar trigger para atualizar atualizado_em CREATE OR REPLACE FUNCTION update_design_templates_updated_at() RETURNS TRIGGER AS $$ BEGIN NEW.atualizado_em = NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER update_design_templates_updated_at_trigger BEFORE UPDATE ON design_templates FOR EACH ROW EXECUTE FUNCTION update_design_templates_updated_at(); CREATE TRIGGER update_databook_design_aplicacoes_updated_at_trigger BEFORE UPDATE ON databook_design_aplicacoes FOR EACH ROW EXECUTE FUNCTION update_design_templates_updated_at();