62 lines
1.8 KiB
JavaScript
62 lines
1.8 KiB
JavaScript
const { Pool } = require('pg');
|
|
require('dotenv').config({ path: '.env.local' });
|
|
|
|
const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000';
|
|
|
|
(async () => {
|
|
const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL });
|
|
const client = await pool.connect();
|
|
try {
|
|
const apiKeys = await client.query(`
|
|
SELECT id, user_id, provider, supplier_name, model_name, note, type, created_at
|
|
FROM user_api_keys
|
|
ORDER BY created_at DESC
|
|
LIMIT 200
|
|
`);
|
|
|
|
const modelCounts = await client.query(`
|
|
SELECT params->>'model' AS model, COUNT(*)::int AS count
|
|
FROM works
|
|
WHERE is_public = true
|
|
AND status = 'completed'
|
|
AND user_id = $1
|
|
GROUP BY params->>'model'
|
|
ORDER BY count DESC
|
|
`, [SYSTEM_USER_ID]);
|
|
|
|
const directMatches = await client.query(`
|
|
SELECT
|
|
w.params->>'model' AS work_model,
|
|
COUNT(*)::int AS work_count,
|
|
k.id AS api_key_id,
|
|
k.user_id,
|
|
p.email,
|
|
p.nickname,
|
|
k.provider,
|
|
k.supplier_name,
|
|
k.model_name,
|
|
k.note
|
|
FROM works w
|
|
JOIN user_api_keys k ON w.params->>'model' = CONCAT('custom:', k.id::text)
|
|
JOIN profiles p ON p.id = k.user_id
|
|
WHERE w.is_public = true
|
|
AND w.status = 'completed'
|
|
AND w.user_id = $1
|
|
GROUP BY w.params->>'model', k.id, k.user_id, p.email, p.nickname, k.provider, k.supplier_name, k.model_name, k.note
|
|
ORDER BY work_count DESC
|
|
`, [SYSTEM_USER_ID]);
|
|
|
|
console.log(JSON.stringify({
|
|
userApiKeys: apiKeys.rows,
|
|
anonymousGalleryModelCounts: modelCounts.rows,
|
|
directMatches: directMatches.rows,
|
|
}, null, 2));
|
|
} finally {
|
|
client.release();
|
|
await pool.end();
|
|
}
|
|
})().catch((error) => {
|
|
console.error(error);
|
|
process.exit(1);
|
|
});
|