import { CounterDocument, FolderDocument, GoalDocument, IIDXBPIData, IIDXEamusementScoreDocument, ImportDocument, TierlistParent, InviteCodeDocument, TierlistDataDocument, USCAuthDocument, MilestoneDocument, NotificationDocument, FolderChartLookup, ImportTimingsDocument, PrivateUserDocument, PublicAPIKeyDocument, ScoreDocument, KaiAuthDocument, SessionDocument, AnySongDocument, AnyChartDocument, UserGameStats, UserGoalDocument, PBScoreDocument, UserMilestoneDocument, } from "kamaitachi-common"; import monk from "monk"; import CreateLogCtx from "../common/logger"; const logger = CreateLogCtx("db.ts"); const base = process.env.MONGO_BASE_URL ?? "127.0.0.1"; const url = process.env.NODE_ENV === "test" ? `${base}:27017/testingdb` : `${base}:27017/ktblackdb`; let dbtime: [number, number] = [0, 0]; if (process.env.NODE_ENV !== "test") { logger.info(`Connecting to database ${url}...`); dbtime = process.hrtime(); } export let monkDB = monk(url); monkDB .then(() => { if (process.env.NODE_ENV !== "test") { const time = process.hrtime(dbtime); const elapsed = time[0] + time[1] / 1e6; logger.info(`Database connection successful: took ${elapsed}ms`); } }) .catch((err) => { logger.crit(err); process.exit(1); }); export async function ReopenMongoConnection() { monkDB = monk(url); await monkDB.then(); } export async function CloseMongoConnection() { await monkDB.close(); } const songs = { bms: monkDB.get(`songs-bms`), chunithm: monkDB.get(`songs-chunithm`), ddr: monkDB.get(`songs-ddr`), gitadora: monkDB.get(`songs-gitadora`), iidx: monkDB.get(`songs-iidx`), jubeat: monkDB.get(`songs-jubeat`), maimai: monkDB.get(`songs-maimai`), museca: monkDB.get(`songs-museca`), popn: monkDB.get(`songs-popn`), sdvx: monkDB.get(`songs-sdvx`), usc: monkDB.get(`songs-usc`), }; const charts = { bms: monkDB.get(`charts-bms`), chunithm: monkDB.get(`charts-chunithm`), ddr: monkDB.get(`charts-ddr`), gitadora: monkDB.get(`charts-gitadora`), iidx: monkDB.get(`charts-iidx`), jubeat: monkDB.get(`charts-jubeat`), maimai: monkDB.get(`charts-maimai`), museca: monkDB.get(`charts-museca`), popn: monkDB.get(`charts-popn`), sdvx: monkDB.get(`charts-sdvx`), usc: monkDB.get(`charts-usc`), }; const db = { // i have to handwrite this out for TS... :( // dont worry, it was all macro'd songs, charts, scores: monkDB.get("scores"), tierlists: monkDB.get("tierlists"), "tierlist-data": monkDB.get>("tierlist-data"), "score-pbs": monkDB.get("score-pbs"), folders: monkDB.get("folders"), "folder-chart-lookup": monkDB.get("folder-chart-lookup"), goals: monkDB.get("goals"), "user-goals": monkDB.get("user-goals"), milestones: monkDB.get("milestones"), "user-milestones": monkDB.get("user-milestones"), users: monkDB.get("users"), imports: monkDB.get("imports"), "import-timings": monkDB.get("import-timings"), notifications: monkDB.get("notifications"), sessions: monkDB.get("sessions"), "iidx-bpi-data": monkDB.get("iidx-bpi-data"), "public-api-keys": monkDB.get("public-api-keys"), invites: monkDB.get("invites"), counters: monkDB.get("counters"), "iidx-eam-scores": monkDB.get("iidx-eam-scores"), "game-stats": monkDB.get("game-stats"), "kai-auth-tokens": monkDB.get("kai-auth-tokens"), "usc-auth-tokens": monkDB.get("usc-auth-tokens"), }; export default db;