import mongoose from 'mongoose'; import {config} from './config'; import {guildModel} from './models/Guild'; import {autoroleMsgModel} from './models/AutoroleMsg'; import {giveawayMsgModel} from './models/GiveawayMsg'; import {imageModel} from './models/Image'; import {aliasModel} from './models/Alias'; async function resetMongo(): Promise { try{ await guildModel.deleteMany({}); await autoroleMsgModel.deleteMany({}); await giveawayMsgModel.deleteMany({}); await imageModel.deleteMany({}); await aliasModel.deleteMany({}); }catch(err: unknown){ throw new Error(`MongoDB reset failed. ${err}`); } } async function initializeMongo(): Promise { try{ if(config.mongodb.reset === 'true') await resetMongo(); }catch(err: unknown){ throw new Error(`MongoDB initialize failed. ${err}`); } } export async function runMongo(): Promise { try { mongoose.set('strictQuery', false); const auth: string = `${config.mongodb.user}:${config.mongodb.pass}`; const server: string = `${config.mongodb.host}:${config.mongodb.port}` const uri: string = `mongodb://${auth}@${server}/${config.mongodb.db}`; await mongoose.connect(uri); } catch(err: unknown) { throw new Error(`MongoDB connection failed. ${err}`); } try { await initializeMongo(); } catch(err: unknown) { throw new Error(`Initialize MongoDB data failed. ${err}`); } }