Monorepo for Aesthetic.Computer
aesthetic.computer
1#!/usr/bin/env node
2
3// Check how many users have ATProto accounts
4
5import { connect } from '../../../system/backend/database.mjs';
6import { config } from 'dotenv';
7
8config({ path: '../../../system/.env' });
9
10const database = await connect();
11const users = database.db.collection('users');
12const moods = database.db.collection('moods');
13const paintings = database.db.collection('paintings');
14
15console.log('📊 ATProto Account Statistics\n');
16
17// Count users with ATProto accounts
18const totalUsers = await users.countDocuments();
19const usersWithAtproto = await users.countDocuments({
20 'atproto.did': { $exists: true, $ne: null }
21});
22
23console.log(`👥 Users:`);
24console.log(` Total: ${totalUsers}`);
25console.log(` With ATProto: ${usersWithAtproto}`);
26console.log(` Without ATProto: ${totalUsers - usersWithAtproto}`);
27
28// Sample some users with ATProto
29console.log('\n🔍 Sample users with ATProto accounts:');
30const sampleUsers = await users.find({
31 'atproto.did': { $exists: true, $ne: null }
32}).limit(5).toArray();
33
34for (const user of sampleUsers) {
35 console.log(` ${user._id} - DID: ${user.atproto.did}`);
36}
37
38// Count moods for users with ATProto
39const userIdsWithAtproto = sampleUsers.map(u => u._id);
40const moodsForAtprotoUsers = await moods.countDocuments({
41 user: { $in: userIdsWithAtproto },
42 deleted: { $ne: true },
43 'atproto.rkey': { $exists: false }
44});
45
46console.log(`\n🦋 Moods needing sync for sample ATProto users: ${moodsForAtprotoUsers}`);
47
48// Count paintings for users with ATProto
49const paintingsForAtprotoUsers = await paintings.countDocuments({
50 user: { $in: userIdsWithAtproto },
51 'atproto.rkey': { $exists: false }
52});
53
54console.log(`🎨 Paintings needing sync for sample ATProto users: ${paintingsForAtprotoUsers}`);
55
56await database.disconnect();