import "dotenv/config" import { ConvexHttpClient } from "convex/browser" import { createPrismaClient } from "./utils/prisma-client.mjs" const prisma = createPrismaClient() const tenantId = process.env.SYNC_TENANT_ID || "tenant-atlas" const convexUrl = process.env.NEXT_PUBLIC_CONVEX_URL || "http://127.0.0.1:3210" const secret = process.env.CONVEX_SYNC_SECRET if (!secret) { console.error("CONVEX_SYNC_SECRET não configurado. Configure-o para executar o prune.") process.exit(1) } async function main() { const client = new ConvexHttpClient(convexUrl) const prismaCompanies = await prisma.company.findMany({ where: { tenantId }, select: { slug: true }, }) const validSlugs = new Set(prismaCompanies.map((company) => company.slug)) const snapshot = await client.query("migrations:exportTenantSnapshot", { tenantId, secret, }) const extraCompanies = snapshot.companies.filter((company) => !validSlugs.has(company.slug)) if (extraCompanies.length === 0) { console.log("Nenhuma empresa extra encontrada no Convex.") return } console.log(`Removendo ${extraCompanies.length} empresa(s) do Convex: ${extraCompanies.map((c) => c.slug).join(", ")}`) for (const company of extraCompanies) { await client.mutation("companies:removeBySlug", { tenantId, slug: company.slug, }) } console.log("Concluído.") } main() .catch((error) => { console.error("Falha ao remover empresas extras do Convex", error) process.exitCode = 1 }) .finally(async () => { await prisma.$disconnect() })