54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
const { db } = require("../../src/services/db");
|
|
|
|
function getProfileStats({ userId }) {
|
|
if (!userId) {
|
|
return { stats: [] };
|
|
}
|
|
const row = db
|
|
.prepare("SELECT created_count FROM auto_vc_stats WHERE user_id = ?")
|
|
.get(userId);
|
|
if (!row) {
|
|
return { stats: [] };
|
|
}
|
|
return {
|
|
stats: [
|
|
{
|
|
label: "Rooms created",
|
|
value: row.created_count
|
|
}
|
|
]
|
|
};
|
|
}
|
|
|
|
function getLeaderboards({ limit = 10 }) {
|
|
const rows = db
|
|
.prepare(
|
|
"SELECT auto_vc_stats.user_id AS user_id, " +
|
|
"auto_vc_stats.created_count AS total, " +
|
|
"user_profiles.internal_username AS username " +
|
|
"FROM auto_vc_stats " +
|
|
"LEFT JOIN user_profiles ON user_profiles.id = auto_vc_stats.user_id " +
|
|
"ORDER BY auto_vc_stats.created_count DESC LIMIT ?"
|
|
)
|
|
.all(limit);
|
|
|
|
return {
|
|
boards: [
|
|
{
|
|
id: "rooms-created",
|
|
title: "Most rooms created",
|
|
valueLabel: "Rooms",
|
|
rows: rows.map((row) => ({
|
|
username: row.username || row.user_id,
|
|
value: row.total
|
|
}))
|
|
}
|
|
]
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
getProfileStats,
|
|
getLeaderboards
|
|
};
|