Files
yinxin630--fiora/packages/bin/scripts/deleteMessages.ts
T
2026-07-13 12:27:50 +08:00

62 lines
1.9 KiB
TypeScript

import path from 'path';
import fs from 'fs';
import inquirer from 'inquirer';
import { promisify } from 'util';
import chalk from 'chalk';
import initMongoDB from '@fiora/database/mongoose/initMongoDB';
import Message from '@fiora/database/mongoose/models/message';
import History from '@fiora/database/mongoose/models/history';
export async function deleteMessages() {
const shouldDeleteAllMessages = await inquirer.prompt({
type: 'confirm',
name: 'result',
message: 'Confirm to delete all messages?',
});
if (!shouldDeleteAllMessages.result) {
return;
}
await initMongoDB();
const deleteResult = await Message.deleteMany({});
console.log('Delete result:', deleteResult);
const deleteHistoryResult = await History.deleteMany({});
console.log('Delete history result:', deleteHistoryResult);
const shouldDeleteAllFiles = await inquirer.prompt({
type: 'confirm',
name: 'result',
message: 'Confirm to delete all message files(Except OSS files)?',
});
if (!shouldDeleteAllFiles.result) {
return;
}
const files = await promisify(fs.readdir)(
path.resolve(__dirname, '../../server/public/'),
);
const iamgesAndFiles = files.filter(
(filename) =>
filename.startsWith('ImageMessage_') ||
filename.startsWith('FileMessage_'),
);
const unlinkAsync = promisify(fs.unlink);
await Promise.all(
iamgesAndFiles.map((file) =>
unlinkAsync(path.resolve(__dirname, '../../server/public/', file)),
),
);
console.log('Delete files:', chalk.green(iamgesAndFiles.length.toString()));
console.log(chalk.red(iamgesAndFiles.join('\n')));
console.log(chalk.green('Successfully deleted all messages'));
}
async function run() {
await deleteMessages();
process.exit(0);
}
export default run;