115 lines
4.1 KiB
JavaScript
115 lines
4.1 KiB
JavaScript
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);
|