53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
const fs = require('fs');
|
|
const { pool } = require('./src/db');
|
|
|
|
(async () => {
|
|
var sql = fs.readFileSync('/tmp/cleanup-final.sql', 'utf8').split(';').filter(Boolean);
|
|
|
|
for (var i = 0; i < sql.length; i++) {
|
|
if (!sql[i].trim()) continue;
|
|
try {
|
|
const r = await pool.query(sql[i].trim());
|
|
if (r.rowCount > 0) console.log('Deleted', r.rowCount, 'matching:', sql[i].trim().substring(0, 50));
|
|
} catch(e) {
|
|
console.warn('Failed query:', e.message.substring(0, 60));
|
|
}
|
|
}
|
|
|
|
var c = await pool.query('SELECT COUNT(*) FROM casinos');
|
|
console.log('\nTotal remaining:', c.rows[0].count);
|
|
|
|
// Show a clean sample to verify quality after cleanup
|
|
const s = await pool.query(
|
|
'SELECT DISTINCT casino_name FROM casinos WHERE LENGTH(TRIM(casino_name)) BETWEEN 3 AND 40 ORDER BY casino_name LIMIT 60'
|
|
);
|
|
|
|
console.log('\n=== Sample after final cleanup ===\n');
|
|
var goodN = 0, badN = 0;
|
|
|
|
for (var j = 0; j < s.rows.length; j++) {
|
|
var name = s.rows[j].casino_name || '';
|
|
|
|
if (!name.match(/^[a-zA-Z]/)) continue;
|
|
|
|
var ok =
|
|
name.length >= 3 && name.length <= 40 &&
|
|
/[a-zA-Z]/.test(name[0]) &&
|
|
(name.match(/[a-zA-Z]/g) || []).length / name.length > 0.5 &&
|
|
!/(about|home|menu|nav|terms|privacy|contact|help)/i.test(name) &&
|
|
!(name.length < 4);
|
|
|
|
if (ok) {
|
|
console.log('✅', name.replace(/[^a-zA-Z0-9\s&]/g, '').trim());
|
|
goodN++;
|
|
} else {
|
|
console.log('❌', JSON.stringify(name));
|
|
badN++;
|
|
}
|
|
}
|
|
|
|
console.log('\nGood: ' + goodN + ', Bad: ' + badN);
|
|
|
|
await pool.end();
|
|
})();
|