Arregla pérdida de datos al desplegar: el seed solo siembra si la DB está vacía
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 <noreply@anthropic.com>
This commit is contained in:
@@ -291,13 +291,13 @@ const SEED_LEADS: SeedLead[] = [
|
|||||||
const STAGE_ORDER = schema.pipelineStage.enumValues;
|
const STAGE_ORDER = schema.pipelineStage.enumValues;
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const [existing] = await db
|
// Guard de seguridad: solo sembramos si la base de datos está VACÍA (sin ningún tenant). Antes se
|
||||||
.select()
|
// comprobaba un slug concreto ("reformas-ejemplo"); si ese tenant no estaba pero había otros
|
||||||
.from(schema.tenants)
|
// (p. ej. una empresa creada por el reformista), el seed los TRUNCABA en cada deploy → pérdida de
|
||||||
.where(eq(schema.tenants.slug, 'reformas-ejemplo'))
|
// datos. Ahora cualquier tenant existente protege toda la DB. SEED_FORCE=1 fuerza el reseed (BORRA TODO).
|
||||||
.limit(1);
|
const [existing] = await db.select({ id: schema.tenants.id }).from(schema.tenants).limit(1);
|
||||||
if (existing && !process.env.SEED_FORCE) {
|
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();
|
await client.end();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user