57 lines
1.8 KiB
SQL
57 lines
1.8 KiB
SQL
-- =====================================================
|
|
-- SCRIPT DE CRIAÇÃO DAS TABELAS - LIBERI KIDS ESTOQUE
|
|
-- VERSÃO SEGURA (SEM CONFLITOS)
|
|
-- =====================================================
|
|
|
|
-- 9. TABELA DE CONFIGURAÇÕES (NOVA)
|
|
CREATE TABLE IF NOT EXISTS configuracoes (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tipo TEXT NOT NULL UNIQUE,
|
|
configuracao JSONB NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- =====================================================
|
|
-- ÍNDICES PARA A NOVA TABELA
|
|
-- =====================================================
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_configuracoes_tipo ON configuracoes(tipo);
|
|
|
|
-- =====================================================
|
|
-- TRIGGER PARA UPDATED_AT (APENAS PARA NOVA TABELA)
|
|
-- =====================================================
|
|
|
|
-- Criar trigger apenas se não existir
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_trigger
|
|
WHERE tgname = 'update_configuracoes_updated_at'
|
|
) THEN
|
|
CREATE TRIGGER update_configuracoes_updated_at
|
|
BEFORE UPDATE ON configuracoes
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
END IF;
|
|
END $$;
|
|
|
|
-- =====================================================
|
|
-- RLS PARA A NOVA TABELA
|
|
-- =====================================================
|
|
|
|
-- Habilitar RLS
|
|
ALTER TABLE configuracoes ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Criar política apenas se não existir
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_policies
|
|
WHERE tablename = 'configuracoes'
|
|
AND policyname = 'Enable all operations for authenticated users'
|
|
) THEN
|
|
CREATE POLICY "Enable all operations for authenticated users"
|
|
ON configuracoes FOR ALL USING (true);
|
|
END IF;
|
|
END $$;
|