From a70a0a36a173ebf7feb388d4a1122b0567569a7b Mon Sep 17 00:00:00 2001 From: zkldi Date: Tue, 20 Apr 2021 23:40:51 +0100 Subject: [PATCH] kt db migration groundwrok --- .../scripts/__KT_DATABASE_MIGRATION/_README | 5 ++ .../scripts/__KT_DATABASE_MIGRATION/old-db.ts | 3 + .../scripts/__KT_DATABASE_MIGRATION/scores.ts | 56 +++++++++++++++++++ .../scripts/__KT_DATABASE_MIGRATION/users.ts | 40 +++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 server/src/scripts/__KT_DATABASE_MIGRATION/_README create mode 100644 server/src/scripts/__KT_DATABASE_MIGRATION/old-db.ts create mode 100644 server/src/scripts/__KT_DATABASE_MIGRATION/scores.ts create mode 100644 server/src/scripts/__KT_DATABASE_MIGRATION/users.ts diff --git a/server/src/scripts/__KT_DATABASE_MIGRATION/_README b/server/src/scripts/__KT_DATABASE_MIGRATION/_README new file mode 100644 index 000000000..d4d4c6d4f --- /dev/null +++ b/server/src/scripts/__KT_DATABASE_MIGRATION/_README @@ -0,0 +1,5 @@ +This folder is for porting documents from the old KamaitachiDB to the newer formats. + +The scripts here should NOT be ran unless you know *exactly* what the hell you're doing. + +And, even then - basically only I know, so. Please be careful. \ No newline at end of file diff --git a/server/src/scripts/__KT_DATABASE_MIGRATION/old-db.ts b/server/src/scripts/__KT_DATABASE_MIGRATION/old-db.ts new file mode 100644 index 000000000..6d45e4cfb --- /dev/null +++ b/server/src/scripts/__KT_DATABASE_MIGRATION/old-db.ts @@ -0,0 +1,3 @@ +import monk from "monk"; + +export const oldKTDB = monk("127.0.0.1:27017/kamaitachidb"); diff --git a/server/src/scripts/__KT_DATABASE_MIGRATION/scores.ts b/server/src/scripts/__KT_DATABASE_MIGRATION/scores.ts new file mode 100644 index 000000000..cb7a67e40 --- /dev/null +++ b/server/src/scripts/__KT_DATABASE_MIGRATION/scores.ts @@ -0,0 +1,56 @@ +import { PrivateUserDocument, ScoreDocument } from "kamaitachi-common"; +import { grades } from "kamaitachi-common/js/config"; +import db from "../../db/db"; +import MigrateRecords from "./migrate"; + +// HERE. WE. GO! + +function ConvertFn(c: any): ScoreDocument { + let base: Partial = { + userID: c.userID, + songID: c.songID, + playtype: c.scoreData.playtype, + difficulty: c.scoreData.difficulty, + chartID: c.chartID, + game: c.game, + timeAdded: c.timeAdded, + timeAchieved: c.timeAchieved, + isScorePB: c.isScorePB, + isLampPB: c.isLampPB, + comment: c.comment ?? null, + highlight: c.highlight ?? false, + service: c.service, + importType: null, + calculatedData: c.calculatedData, + scoreData: { + esd: c.scoreData.esd ?? null, + grade: c.scoreData.grade, + // @ts-expect-error shut + gradeIndex: grades[c.game].indexOf(c.scoreData.grade), + lamp: c.scoreData.lamp, + // @ts-expect-error shut + lampIndex: lamps[c.game].indexOf(c.scoreData.lamp), + percent: c.scoreData.percent, + score: c.scoreData.score, + hitData: c.scoreData.hitData, + hitMeta: c.scoreData.hitMeta, + }, + scoreMeta: {}, + }; + + switch (base.game) { + case "bms": + break; + + default: + break; + } + + return base; +} + +(async () => { + await MigrateRecords(db.users, "users", ConvertFn); + + process.exit(0); +})(); diff --git a/server/src/scripts/__KT_DATABASE_MIGRATION/users.ts b/server/src/scripts/__KT_DATABASE_MIGRATION/users.ts new file mode 100644 index 000000000..f5b65ea6e --- /dev/null +++ b/server/src/scripts/__KT_DATABASE_MIGRATION/users.ts @@ -0,0 +1,40 @@ +import { PrivateUserDocument } from "kamaitachi-common"; +import db from "../../db/db"; +import MigrateRecords from "./migrate"; + +function ConvertFn(c: any): PrivateUserDocument { + const newUserDoc: PrivateUserDocument = { + username: c.username, + usernameLowercase: c.username.toLowerCase(), + about: c.about, + clan: c.clan, + customBanner: c.custombanner, + customPfp: c.custompfp, + email: c.email, + friends: c.friends, + id: c.id, + lastSeen: c.lastSeen, + password: c.password, + permissions: {}, + settings: { + invisible: !!c.settings.invisible, + nsfwSplashes: !!c.settings.nsfwsplashes, + }, + socialMedia: { + discord: c.socialmedia.discord || null, + twitter: c.socialmedia.twitter || null, + youtube: c.socialmedia.youtube || null, + twitch: c.socialmedia.twitch || null, + github: c.socialmedia.github || null, + steam: c.socialmedia.steam || null, + }, + }; + + return newUserDoc; +} + +(async () => { + await MigrateRecords(db.users, "users", ConvertFn); + + process.exit(0); +})();