46 lines
1.4 KiB
TypeScript
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}`);
|
|
}
|
|
}
|