Files
dbmaker/supabase/migrations/006_design_templates.sql

163 lines
4.9 KiB
PL/PgSQL

-- 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();