Compare commits

...

3 commits

16
main.js
View file

@ -8,6 +8,8 @@ if (!USER_TOKEN) {
process.exit(1); process.exit(1);
} }
const PERIOD = process.env.PERIOD; // Time in days: int
const INSTANCE_URL = process.env.INSTANCE_URL; const INSTANCE_URL = process.env.INSTANCE_URL;
const API_BASE = `${INSTANCE_URL}/api`; const API_BASE = `${INSTANCE_URL}/api`;
@ -49,17 +51,19 @@ async function main() {
const users = response.data; const users = response.data;
const now = new Date(); const now = new Date();
const fiveDaysAgo = new Date(now - 5 * 24 * 60 * 60 * 1000); const timeAgo = new Date(now - PERIOD * 24 * 60 * 60 * 1000);
const usersToDelete = users.filter(user => { const usersToDelete = users.filter(user => {
const createdAt = new Date(user.createdAt); const createdAt = new Date(user.createdAt);
const updatedAt = new Date(user.updatedAt); const updatedAt = new Date(user.updatedAt);
return user.notesCount === 0 && const excludedUsers = ['instance.actor', 'relay.actor'];
createdAt < fiveDaysAgo && return user.notesCount === 0 &&
updatedAt < fiveDaysAgo; createdAt < timeAgo &&
updatedAt < timeAgo &&
!excludedUsers.includes(user.username)
}); });
console.log(`Found ${usersToDelete.length} users matching criteria (no posts, not updated, and older than 5 days)`); console.log(`Found ${usersToDelete.length} users matching criteria (no posts, not updated, and older than ${PERIOD} days)`);
console.log('\nUsers to be deleted:'); console.log('\nUsers to be deleted:');
usersToDelete.forEach(user => { usersToDelete.forEach(user => {
@ -71,7 +75,7 @@ async function main() {
console.log(); console.log();
const confirmed = await askForConfirmation(`Are you sure you want to delete ${usersToDelete.length} users?`); const confirmed = await askForConfirmation(`Are you sure you want to delete ${usersToDelete.length} users?`);
if (!confirmed) { if (!confirmed) {
console.log('Operation cancelled by user'); console.log('Operation cancelled by user');
rl.close(); rl.close();