-- Migration para sistema de captura web de provas -- NÃO RESETAR O BANCO DE DADOS - apenas adicionar nova tabela -- Criar tabela para sessões de captura web CREATE TABLE IF NOT EXISTS "web_proof_sessions" ( "id" TEXT NOT NULL, "sessionId" TEXT NOT NULL UNIQUE, "targetUrl" TEXT NOT NULL, "description" TEXT, "status" TEXT NOT NULL DEFAULT 'PENDENTE', "metadata" JSONB, "environment" JSONB, "screenshots" TEXT[], "sessionHash" TEXT, "contentHash" TEXT, "pageHash" TEXT, "reportPath" TEXT, "networkData" JSONB, "trustedTimestamp" TEXT, "error" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "processedAt" TIMESTAMP(3), CONSTRAINT "web_proof_sessions_pkey" PRIMARY KEY ("id") ); -- Criar índices para otimização de consultas CREATE INDEX IF NOT EXISTS "web_proof_sessions_sessionId_idx" ON "web_proof_sessions"("sessionId"); CREATE INDEX IF NOT EXISTS "web_proof_sessions_status_idx" ON "web_proof_sessions"("status"); CREATE INDEX IF NOT EXISTS "web_proof_sessions_createdAt_idx" ON "web_proof_sessions"("createdAt"); CREATE INDEX IF NOT EXISTS "web_proof_sessions_contentHash_idx" ON "web_proof_sessions"("contentHash"); -- Adicionar trigger para atualizar updatedAt automaticamente CREATE OR REPLACE FUNCTION update_web_proof_sessions_updated_at() RETURNS TRIGGER AS $$ BEGIN NEW."updatedAt" = CURRENT_TIMESTAMP; RETURN NEW; END; $$ language 'plpgsql'; CREATE TRIGGER update_web_proof_sessions_updated_at BEFORE UPDATE ON "web_proof_sessions" FOR EACH ROW EXECUTE FUNCTION update_web_proof_sessions_updated_at(); -- Adicionar comentários para documentação COMMENT ON TABLE "web_proof_sessions" IS 'Tabela para armazenar sessões de captura de provas web forenses'; COMMENT ON COLUMN "web_proof_sessions"."sessionId" IS 'Identificador único da sessão de captura'; COMMENT ON COLUMN "web_proof_sessions"."targetUrl" IS 'URL alvo que foi capturada'; COMMENT ON COLUMN "web_proof_sessions"."metadata" IS 'Metadados técnicos coletados durante a captura'; COMMENT ON COLUMN "web_proof_sessions"."environment" IS 'Informações do ambiente isolado de captura'; COMMENT ON COLUMN "web_proof_sessions"."sessionHash" IS 'Hash SHA-256 da sessão para verificação de integridade'; COMMENT ON COLUMN "web_proof_sessions"."contentHash" IS 'Hash SHA-256 do conteúdo capturado'; COMMENT ON COLUMN "web_proof_sessions"."pageHash" IS 'Hash SHA-512 da página específica'; COMMENT ON COLUMN "web_proof_sessions"."trustedTimestamp" IS 'Timestamp de autoridade certificadora confiável';