44 lines
1.3 KiB
SQL
44 lines
1.3 KiB
SQL
-- Limpar migrações anteriores
|
|
DELETE FROM "_prisma_migrations"
|
|
WHERE migration_name LIKE '%add_audiencia_report%';
|
|
|
|
-- Atualizar tabela de audiências de forma segura
|
|
DO $$
|
|
BEGIN
|
|
-- Adicionar novas colunas se não existirem
|
|
BEGIN
|
|
ALTER TABLE "audiencias"
|
|
ADD COLUMN IF NOT EXISTS "relatorio" TEXT,
|
|
ADD COLUMN IF NOT EXISTS "dataFinalizacao" TIMESTAMP WITH TIME ZONE;
|
|
EXCEPTION
|
|
WHEN duplicate_column THEN
|
|
NULL;
|
|
END;
|
|
|
|
-- Atualizar tipo da coluna status
|
|
ALTER TABLE "audiencias"
|
|
ALTER COLUMN "status" TYPE VARCHAR(20);
|
|
|
|
-- Remover constraint antiga se existir
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.constraint_column_usage
|
|
WHERE constraint_name = 'audiencias_status_check'
|
|
) THEN
|
|
ALTER TABLE "audiencias"
|
|
DROP CONSTRAINT "audiencias_status_check";
|
|
END IF;
|
|
|
|
-- Adicionar nova constraint
|
|
ALTER TABLE "audiencias"
|
|
ADD CONSTRAINT "audiencias_status_check"
|
|
CHECK (status IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA'));
|
|
|
|
-- Atualizar registros existentes
|
|
UPDATE "audiencias"
|
|
SET status = 'AGENDADA'
|
|
WHERE status NOT IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA')
|
|
OR status IS NULL;
|
|
|
|
END $$;
|