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 ;