Monorepo for Aesthetic.Computer aesthetic.computer
at main 56 lines 1.8 kB view raw
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();