const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://appwrite.almeira.com.co/v1') .setProject('69b84df5003bd8957c5c') .setKey('standard_cce3cdb866ea6433888d40cedd24dc45987372308fdc3dd0697de08648c0e5c7e04b02c3bcee271403fd656b00a5820f04c08b51631284a6e8a3582d8aed2aa33234f3c29cc777e9b162eb54810b789251b0d006a9a3b081ebc2da53b9baa94614b124b3508ad849fd9a4187cc6094f506d4b57f409b69d9562a74df594f3ec3'); const dbs = new sdk.Databases(client); const DB_ID = 'sneakers_multistore_db'; async function main() { console.log('=== [1] ELIMINANDO PRODUCTOS BASURA DE LOS GRUPOS IGNORADOS ==='); let offset = 0; const limit = 100; const toDelete = []; while (true) { const res = await dbs.listDocuments(DB_ID, 'products', [ sdk.Query.limit(limit), sdk.Query.offset(offset) ]); if (!res.documents || res.documents.length === 0) break; for (const doc of res.documents) { const sup = (doc.supplierName || '').toLowerCase(); const name = (doc.name || '').toLowerCase(); const raw = JSON.stringify(doc).toLowerCase(); if ( sup.includes('emporio') || sup.includes('black diamonds') || raw.includes('120363400148850031') || raw.includes('120363420942364759') || name.includes('hoy 🚨') || name.includes('liderea con') ) { // Asegurar que no borramos productos legítimos de Jovic o CC Mío if (sup.includes('jovic') || sup.includes('cc mío') || sup.includes('exclusive')) { continue; } toDelete.push({ id: doc['$id'], name: doc.name, supplier: doc.supplierName }); } } offset += limit; if (offset >= res.total) break; } console.log(`Encontrados ${toDelete.length} productos para eliminar:`); for (const p of toDelete) { try { await dbs.deleteDocument(DB_ID, 'products', p.id); console.log(` ✓ Eliminado producto: ${p.id} - ${p.name} (${p.supplier})`); } catch (e) { console.error(` ✗ Error eliminando ${p.id}:`, e.message); } } console.log('\n=== [2] SANITIZANDO COLECCIÓN MONITORED_GROUPS EN APPWRITE ==='); const groupsRes = await dbs.listDocuments(DB_ID, 'monitored_groups', [sdk.Query.limit(100)]); console.log(`Total grupos en Appwrite: ${groupsRes.total}`); const blacklistedJids = [ '120363400148850031@g.us', // SOMOS BLACK DIAMONDS '120363420942364759@g.us', // TEAM EMPORIO ]; // Agrupar por JID para eliminar duplicados const groupsByJid = new Map(); for (const doc of groupsRes.documents) { const jid = doc.jid; if (!groupsByJid.has(jid)) { groupsByJid.set(jid, []); } groupsByJid.get(jid).push(doc); } for (const [jid, docs] of groupsByJid.entries()) { const isBlacklisted = blacklistedJids.includes(jid) || docs.some(d => /black diamonds|team emporio|emporio/i.test(d.name || '')); // Mantener 1 documento canónico y eliminar duplicados const canonicalDoc = docs[0]; const duplicates = docs.slice(1); for (const dup of duplicates) { try { await dbs.deleteDocument(DB_ID, 'monitored_groups', dup['$id']); console.log(` ✓ Eliminado documento duplicado: ${dup['$id']} (${jid})`); } catch (e) { console.error(` ✗ Error eliminando duplicado ${dup['$id']}:`, e.message); } } if (isBlacklisted) { try { await dbs.updateDocument(DB_ID, 'monitored_groups', canonicalDoc['$id'], { isMonitored: 0, autoPublish: 0, notes: 'IGNORADO EXPLICITAMENTE - NO PUBLICAR NI MONITOREAR', }); console.log(` 🛑 Grupo marcado como IGNORADO permanentemente: ${canonicalDoc.name} (${jid})`); } catch (e) { console.error(` ✗ Error actualizando grupo ${canonicalDoc['$id']}:`, e.message); } } } console.log('\n=== [3] VERIFICACIÓN FINAL DE GRUPOS EN APPWRITE ==='); const finalRes = await dbs.listDocuments(DB_ID, 'monitored_groups', [sdk.Query.limit(100)]); finalRes.documents.forEach((d) => { console.log(`ID: ${d['$id']} | JID: ${d.jid} | isMonitored: ${d.isMonitored} | Name: ${d.name}`); }); } main().catch(console.error);