Files
amane-tanikaze-dcbot/mongo.ts
2024-10-13 14:50:19 +00:00

46 lines
1.4 KiB
TypeScript

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<void> {
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<void> {
try{
if(config.mongodb.reset === 'true') await resetMongo();
}catch(err: unknown){
throw new Error(`MongoDB initialize failed. ${err}`);
}
}
export async function runMongo(): Promise<void> {
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}`);
}
}