Files
amayo/scripts/debugFeatureFlags.ts

89 lines
2.8 KiB
TypeScript
Raw Normal View History

/**
* 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();