From 5afda5af05821dc1236e277682a2a68b4462080f Mon Sep 17 00:00:00 2001 From: Carlos Narro Date: Thu, 11 Jun 2026 17:38:38 +0200 Subject: [PATCH] =?UTF-8?q?Arregla=20p=C3=A9rdida=20de=20datos=20al=20desp?= =?UTF-8?q?legar:=20el=20seed=20solo=20siembra=20si=20la=20DB=20est=C3=A1?= =?UTF-8?q?=20vac=C3=ADa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El docker-entrypoint corre db:seed en cada arranque. El guard comprobaba si existía un tenant CONCRETO ("reformas-ejemplo"); si ese no estaba pero había otros (una empresa creada por el reformista), el seed ejecutaba TRUNCATE de todas las tablas y resembraba el demo → borraba los datos reales en cada deploy. Ahora el guard salta si existe CUALQUIER tenant, así que con datos reales el seed nunca toca la DB. SEED_FORCE=1 sigue forzando el reseed (borra todo) a propósito. Co-Authored-By: Claude Opus 4.8 --- mvp/b2c/src/db/seed.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mvp/b2c/src/db/seed.ts b/mvp/b2c/src/db/seed.ts index a14b46b..7fe8c07 100644 --- a/mvp/b2c/src/db/seed.ts +++ b/mvp/b2c/src/db/seed.ts @@ -291,13 +291,13 @@ const SEED_LEADS: SeedLead[] = [ const STAGE_ORDER = schema.pipelineStage.enumValues; async function main() { - const [existing] = await db - .select() - .from(schema.tenants) - .where(eq(schema.tenants.slug, 'reformas-ejemplo')) - .limit(1); + // Guard de seguridad: solo sembramos si la base de datos está VACÍA (sin ningún tenant). Antes se + // comprobaba un slug concreto ("reformas-ejemplo"); si ese tenant no estaba pero había otros + // (p. ej. una empresa creada por el reformista), el seed los TRUNCABA en cada deploy → pérdida de + // datos. Ahora cualquier tenant existente protege toda la DB. SEED_FORCE=1 fuerza el reseed (BORRA TODO). + const [existing] = await db.select({ id: schema.tenants.id }).from(schema.tenants).limit(1); if (existing && !process.env.SEED_FORCE) { - console.log('Ya hay datos (tenant "reformas-ejemplo"). Saltando seed. Usa SEED_FORCE=1 para forzar.'); + console.log('La base de datos ya tiene datos (existe al menos un tenant). Saltando seed para no borrar nada. Usa SEED_FORCE=1 para forzar (¡BORRA TODO!).'); await client.end(); return; }