89 lines
2.8 KiB
TypeScript
89 lines
2.8 KiB
TypeScript
|
|
/**
|
|||
|
|
* Debug del sistema de Feature Flags
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
import { PrismaClient } from "@prisma/client";
|
|||
|
|
|
|||
|
|
const prisma = new PrismaClient();
|
|||
|
|
|
|||
|
|
async function debugFeatureFlags() {
|
|||
|
|
console.log("🔍 Debugging Feature Flags...\n");
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
// Listar todos los flags
|
|||
|
|
const flags = await prisma.featureFlag.findMany();
|
|||
|
|
console.log(`📊 Total de flags en DB: ${flags.length}\n`);
|
|||
|
|
|
|||
|
|
if (flags.length === 0) {
|
|||
|
|
console.log("ℹ️ No hay flags en la base de datos");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Mostrar cada flag
|
|||
|
|
for (const flag of flags) {
|
|||
|
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|||
|
|
console.log(`🎯 Flag: ${flag.name}`);
|
|||
|
|
console.log(` ID: ${flag.id}`);
|
|||
|
|
console.log(` Status: ${flag.status}`);
|
|||
|
|
console.log(` Target: ${flag.target}`);
|
|||
|
|
console.log(` Description: ${flag.description || "N/A"}`);
|
|||
|
|
console.log(` Rollout Strategy: ${flag.rolloutStrategy || "N/A"}`);
|
|||
|
|
console.log(` Rollout Config: ${flag.rolloutConfig || "N/A"}`);
|
|||
|
|
console.log(` Start Date: ${flag.startDate || "N/A"}`);
|
|||
|
|
console.log(` End Date: ${flag.endDate || "N/A"}`);
|
|||
|
|
console.log(` Created: ${flag.createdAt}`);
|
|||
|
|
console.log(` Updated: ${flag.updatedAt}`);
|
|||
|
|
|
|||
|
|
// Verificar si hay problemas con los datos
|
|||
|
|
if (flag.rolloutConfig) {
|
|||
|
|
try {
|
|||
|
|
const parsed = JSON.parse(flag.rolloutConfig);
|
|||
|
|
console.log(` ✅ Rollout Config parseable:`, parsed);
|
|||
|
|
} catch (e: any) {
|
|||
|
|
console.log(` ❌ ERROR parseando Rollout Config: ${e.message}`);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (flag.metadata) {
|
|||
|
|
try {
|
|||
|
|
const parsed = JSON.parse(flag.metadata);
|
|||
|
|
console.log(` ✅ Metadata parseable:`, parsed);
|
|||
|
|
} catch (e: any) {
|
|||
|
|
console.log(` ❌ ERROR parseando Metadata: ${e.message}`);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
|
|||
|
|
|
|||
|
|
// Test de creación
|
|||
|
|
console.log("🧪 Test: Crear flag temporal...");
|
|||
|
|
const testFlag = await prisma.featureFlag.create({
|
|||
|
|
data: {
|
|||
|
|
name: `test_flag_${Date.now()}`,
|
|||
|
|
description: "Flag de test temporal",
|
|||
|
|
status: "disabled",
|
|||
|
|
target: "global",
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
console.log(`✅ Flag creado: ${testFlag.name}`);
|
|||
|
|
|
|||
|
|
// Limpiar
|
|||
|
|
await prisma.featureFlag.delete({
|
|||
|
|
where: { name: testFlag.name },
|
|||
|
|
});
|
|||
|
|
console.log(`🗑️ Flag eliminado: ${testFlag.name}\n`);
|
|||
|
|
|
|||
|
|
console.log("✅ Sistema funcionando correctamente");
|
|||
|
|
} catch (error: any) {
|
|||
|
|
console.error("❌ ERROR:", error.message);
|
|||
|
|
console.error("Stack:", error.stack);
|
|||
|
|
console.error("Code:", error.code);
|
|||
|
|
console.error("Meta:", error.meta);
|
|||
|
|
} finally {
|
|||
|
|
await prisma.$disconnect();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
debugFeatureFlags();
|