-- Tablas de actividades locales y asignación round-robin local. -- Patrón manual: db execute + migrate resolve. NUNCA migrate dev. -- CreateTable ActividadLocal CREATE TABLE IF NOT EXISTS "ActividadLocal" ( "id" TEXT NOT NULL PRIMARY KEY, "titulo" TEXT NOT NULL, "descripcion" TEXT, "usuarioId" TEXT NOT NULL, "leadCapturaId" TEXT, "fechaVencimiento" DATETIME, "fechaCierre" DATETIME, "estado" TEXT NOT NULL DEFAULT 'ABIERTA', "tipo" TEXT NOT NULL DEFAULT 'SEGUIMIENTO', "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS "ActividadLocal_usuarioId_idx" ON "ActividadLocal"("usuarioId"); CREATE INDEX IF NOT EXISTS "ActividadLocal_estado_idx" ON "ActividadLocal"("estado"); CREATE INDEX IF NOT EXISTS "ActividadLocal_fechaVencimiento_idx" ON "ActividadLocal"("fechaVencimiento"); -- CreateTable AsignacionLocal CREATE TABLE IF NOT EXISTS "AsignacionLocal" ( "id" TEXT NOT NULL PRIMARY KEY, "leadCapturaId" TEXT NOT NULL, "usuarioId" TEXT NOT NULL, "asignadoPor" TEXT, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE UNIQUE INDEX IF NOT EXISTS "AsignacionLocal_leadCapturaId_key" ON "AsignacionLocal"("leadCapturaId"); CREATE INDEX IF NOT EXISTS "AsignacionLocal_usuarioId_idx" ON "AsignacionLocal"("usuarioId"); -- AlterTable LeadCaptura: add fechaLimite column -- SQLite: CHECK if column exists first to avoid duplicate -- The ALTER TABLE ADD COLUMN in SQLite is safe with IF NOT EXISTS semantics via PRAGMA CREATE TABLE IF NOT EXISTS "__pragma_check" (name TEXT); DROP TABLE IF EXISTS "__pragma_check"; -- ALTER TABLE is safe: SQLite ignores ADD COLUMN if column exists (error + ignore pattern) -- We use a safer approach: add only if not present -- SQLite doesn't support IF NOT EXISTS for ADD COLUMN, so we wrap in a safe pattern ALTER TABLE "LeadCaptura" ADD COLUMN "fechaLimite" DATETIME;