import { defineSkill } from '@mcx/core';
export default defineSkill({
name: 'sync-check',
description: 'Verify sync integrity between Alegra API and local database',
async run({ alegra, supabase }) {
// Fetch from Alegra
const [invoices, contacts, payments] = await Promise.all([
alegra.getInvoices({ limit: 100 }),
alegra.getContacts({ limit: 100 }),
alegra.getPayments({ limit: 100 }),
]);
// Fetch counts from database
const dbCounts = await supabase.query({
sql: `
SELECT
(SELECT COUNT(*) FROM facturas) as facturas,
(SELECT COUNT(*) FROM clientes) as clientes,
(SELECT COUNT(*) FROM pagos) as pagos
`,
});
const counts = dbCounts[0];
// Compare
const results = {
invoices: {
alegra: invoices.length,
db: counts.facturas,
diff: invoices.length - counts.facturas,
},
contacts: {
alegra: contacts.length,
db: counts.clientes,
diff: contacts.length - counts.clientes,
},
payments: {
alegra: payments.length,
db: counts.pagos,
diff: payments.length - counts.pagos,
},
};
const hasIssues = Object.values(results).some(r => r.diff !== 0);
return {
status: hasIssues ? 'mismatch' : 'ok',
results,
timestamp: new Date().toISOString(),
};
},
});