163 lines
4.9 KiB
PL/PgSQL
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();
|