54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
/**
|
||
* Delete users created today and their related data
|
||
*/
|
||
import chalk from 'chalk';
|
||
|
||
import inquirer from 'inquirer';
|
||
import initMongoDB from '@fiora/database/mongoose/initMongoDB';
|
||
import User from '@fiora/database/mongoose/models/user';
|
||
import { deleteUser } from './deleteUser';
|
||
|
||
export async function deleteTodayRegisteredUsers() {
|
||
await initMongoDB();
|
||
|
||
const now = new Date();
|
||
const time = new Date(
|
||
`${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} 00:00:00`,
|
||
);
|
||
const users = await User.find({
|
||
createTime: {
|
||
$gte: time,
|
||
},
|
||
});
|
||
console.log(
|
||
`There are ${chalk.green(
|
||
users.length.toString(),
|
||
)} newly registered users today`,
|
||
);
|
||
if (users.length === 0) {
|
||
return;
|
||
}
|
||
|
||
const shouldDeleteUsers = await inquirer.prompt({
|
||
type: 'confirm',
|
||
name: 'result',
|
||
message: 'Confirm to delete these users?',
|
||
});
|
||
if (!shouldDeleteUsers.result) {
|
||
return;
|
||
}
|
||
await Promise.all(
|
||
users.map((user) => deleteUser(user._id.toString(), false)),
|
||
);
|
||
|
||
console.log(
|
||
chalk.green('Successfully deleted today’s newly registered users'),
|
||
);
|
||
}
|
||
|
||
async function run() {
|
||
await deleteTodayRegisteredUsers();
|
||
process.exit(0);
|
||
}
|
||
export default run;
|