5180 fichiers 38.5 Mo 0 téléchargements 57 vues mis à jour il y a 3 heures ui
nitro-v36-with-renderer-v36 / scripts / catalog-stats.mjs
catalog-stats.mjs 2 Ko Télécharger le fichier
import mysql from 'mysql2/promise';

const c = await mysql.createConnection({
    host: 'localhost',
    user: 'habbo',
    password: 'habbo',
    database: 'next'
});

const [[{ pages }]] = await c.query('SELECT COUNT(*) AS pages FROM catalog_pages');
const [[{ items }]] = await c.query('SELECT COUNT(*) AS items FROM catalog_items');
const [[{ visible }]] = await c.query("SELECT COUNT(*) AS visible FROM catalog_pages WHERE visible = '1'");
const [topPages] = await c.query(
    'SELECT page_id, COUNT(*) AS offers FROM catalog_items GROUP BY page_id ORDER BY offers DESC LIMIT 10'
);
const [topParents] = await c.query(
    'SELECT parent_id, COUNT(*) AS children FROM catalog_pages GROUP BY parent_id ORDER BY children DESC LIMIT 5'
);

// Estimate index packet: each node ~ (visible, icon, id, parent, name, caption, offerCount + offerIds + childCount)
let offerIdTotal = 0;
const [offerCounts] = await c.query(`
    SELECT cp.id, COUNT(ci.id) AS offer_count
    FROM catalog_pages cp
    LEFT JOIN catalog_items ci ON ci.page_id = cp.id
    WHERE cp.visible = '1'
    GROUP BY cp.id
`);
for (const row of offerCounts) offerIdTotal += Number(row.offer_count);

const [layouts] = await c.query(
    "SELECT page_layout, COUNT(*) AS cnt FROM catalog_pages WHERE visible = '1' GROUP BY page_layout ORDER BY cnt DESC LIMIT 12"
);
const [[avgRow]] = await c.query(
    'SELECT AVG(oc) AS avg_offers, MAX(oc) AS max_offers FROM (SELECT COUNT(*) AS oc FROM catalog_items GROUP BY page_id) t'
);
const [[over100]] = await c.query(
    'SELECT COUNT(*) AS c FROM (SELECT page_id FROM catalog_items GROUP BY page_id HAVING COUNT(*) > 100) x'
);
const [[over500]] = await c.query(
    'SELECT COUNT(*) AS c FROM (SELECT page_id FROM catalog_items GROUP BY page_id HAVING COUNT(*) > 500) x'
);
const estIndexKB = Math.round((Number(pages) * 80 + offerIdTotal * 4) / 1024);

console.log(
    JSON.stringify(
        { pages, items, visible, offerIdTotal, estIndexKB, topPages, topParents, layouts, avgRow, over100, over500 },
        null,
        2
    )
);
await c.end();
15Sujets
1Dépôts
20Membres
6En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser