mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-12-28 10:59:46 +08:00
migration finished
This commit is contained in:
parent
15eac03028
commit
6014620596
1 changed files with 101 additions and 2 deletions
|
|
@ -3,6 +3,7 @@ const path = require("path");
|
|||
config({ path: path.join(__dirname, ".env") });
|
||||
const { mongoDB } = require("./init/mongodb");
|
||||
const { connectDB } = require("./init/mongodb");
|
||||
const { ObjectID } = require("mongodb");
|
||||
|
||||
console.log(config());
|
||||
|
||||
|
|
@ -19,6 +20,7 @@ admin.initializeApp({
|
|||
});
|
||||
|
||||
var db = admin.firestore();
|
||||
var auth = admin.auth();
|
||||
|
||||
// Database should be completely clear before this is ran in order to prevent overlapping documents
|
||||
// Migrate users
|
||||
|
|
@ -31,7 +33,104 @@ async function migrateUsers() {
|
|||
// console.log('start of foreach');
|
||||
querySnapshot.forEach(async (userDoc) => {
|
||||
let userData = userDoc.data();
|
||||
console.log(userData);
|
||||
let uid = userDoc.id;
|
||||
try {
|
||||
let userAuth = await auth.getUser(uid);
|
||||
let email = userAuth.email;
|
||||
let userCreatedAt = new Date(
|
||||
userAuth.metadata.creationTime
|
||||
).getTime();
|
||||
|
||||
let mongoUser = {
|
||||
name: userData.name,
|
||||
email: email,
|
||||
addedAt: userCreatedAt,
|
||||
uid: uid,
|
||||
};
|
||||
|
||||
if (userData.completedTests)
|
||||
mongoUser.completedTests = userData.completedTests;
|
||||
if (userData.startedTests)
|
||||
mongoUser.startedTests = userData.startedTests;
|
||||
if (userData.timeTyping) mongoUser.timeTyping = userData.timeTyping;
|
||||
|
||||
if (userData.personalBests)
|
||||
mongoUser.personalBests = userData.personalBests;
|
||||
|
||||
let tagPairs = {};
|
||||
|
||||
let mongoUserTags = [];
|
||||
|
||||
let tagsSnapshot = await db.collection(`users/${uid}/tags`).get();
|
||||
tagsSnapshot.forEach((tagDoc) => {
|
||||
let tagData = tagDoc.data();
|
||||
let tagId = tagDoc.id;
|
||||
console.log(tagData);
|
||||
let new_id = ObjectID();
|
||||
tagPairs[tagId] = new_id;
|
||||
let tagtopush = { _id: new_id, name: tagData.name };
|
||||
if (tagData.personalBests)
|
||||
tagtopush.personalBests = tagData.personalBests;
|
||||
mongoUserTags.push(tagtopush);
|
||||
});
|
||||
|
||||
mongoUser.tags = mongoUserTags;
|
||||
|
||||
await mongoDB().collection("users").updateOne(
|
||||
{ uid: uid },
|
||||
{
|
||||
$set: mongoUser,
|
||||
},
|
||||
{ upsert: true }
|
||||
);
|
||||
|
||||
if (userData.config) {
|
||||
await mongoDB()
|
||||
.collection("configs")
|
||||
.updateOne(
|
||||
{ uid: uid },
|
||||
{
|
||||
$set: {
|
||||
uid: uid,
|
||||
config: userData.config,
|
||||
},
|
||||
},
|
||||
{ upsert: true }
|
||||
);
|
||||
}
|
||||
|
||||
let presetsSnapshot = await db
|
||||
.collection(`users/${uid}/presets`)
|
||||
.get();
|
||||
presetsSnapshot.forEach(async (presetDoc) => {
|
||||
let presetData = presetDoc.data();
|
||||
let newpreset = {
|
||||
uid: uid,
|
||||
name: presetData.name,
|
||||
};
|
||||
if (presetData.config) newpreset.config = presetData.config;
|
||||
await mongoDB().collection("presets").insertOne(newpreset);
|
||||
});
|
||||
|
||||
let resultsSnapshot = await db
|
||||
.collection(`users/${uid}/results`)
|
||||
.get();
|
||||
resultsSnapshot.forEach(async (resultDoc) => {
|
||||
let resultData = resultDoc.data();
|
||||
resultData.uid = uid;
|
||||
if (resultData.tags && resultData.tags.length > 0) {
|
||||
resultData.tags = resultData.tags.map((tag) => tagPairs[tag]);
|
||||
}
|
||||
await mongoDB().collection("results").insertOne(resultData);
|
||||
});
|
||||
|
||||
console.log(`${uid} migrated`);
|
||||
} catch (err) {
|
||||
console.log(`${uid} failed`);
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
// console.log(userData);
|
||||
// let newUser;
|
||||
// try{
|
||||
// let data = userDoc.data();
|
||||
|
|
@ -132,7 +231,7 @@ async function init() {
|
|||
await connectDB();
|
||||
// await migratePublicStats();
|
||||
await migrateUsers();
|
||||
process.exit(1);
|
||||
// process.exit(1);
|
||||
}
|
||||
|
||||
init();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue