|
@@ -1,97 +0,0 @@
|
|
|
-const { DeletedProject } = require('../app/src/models/DeletedProject')
|
|
|
|
|
-const { DeletedUser } = require('../app/src/models/DeletedUser')
|
|
|
|
|
-const { db } = require('../app/src/infrastructure/mongojs')
|
|
|
|
|
-const pLimit = require('p-limit')
|
|
|
|
|
-
|
|
|
|
|
-const CONCURRENCY = 10
|
|
|
|
|
-
|
|
|
|
|
-function getCollectionContents(collection) {
|
|
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
|
|
- collection.find({}).toArray((error, contents) => {
|
|
|
|
|
- if (error) {
|
|
|
|
|
- reject(error)
|
|
|
|
|
- } else {
|
|
|
|
|
- resolve(contents)
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-function deleteCollectionItem(collection, id) {
|
|
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
|
|
- collection.remove({ _id: id }, error => {
|
|
|
|
|
- if (error) {
|
|
|
|
|
- reject(error)
|
|
|
|
|
- } else {
|
|
|
|
|
- resolve()
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-async function backfillUser(user) {
|
|
|
|
|
- await DeletedUser.create({
|
|
|
|
|
- user: user,
|
|
|
|
|
- deleterData: {
|
|
|
|
|
- deletedAt: new Date(),
|
|
|
|
|
- deletedUserId: user._id,
|
|
|
|
|
- deletedUserLastLoggedIn: user.lastLoggedIn,
|
|
|
|
|
- deletedUserSignUpDate: user.signUpDate,
|
|
|
|
|
- deletedUserLoginCount: user.loginCount,
|
|
|
|
|
- deletedUserReferralId: user.referal_id,
|
|
|
|
|
- deletedUserReferredUsers: user.refered_users,
|
|
|
|
|
- deletedUserReferredUserCount: user.refered_user_count,
|
|
|
|
|
- deletedUserOverleafId: user.overleaf ? user.overleaf.id : undefined
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- await deleteCollectionItem(db.usersDeletedByMigration, user._id)
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-async function backfillProject(project) {
|
|
|
|
|
- await DeletedProject.create({
|
|
|
|
|
- project: project,
|
|
|
|
|
- deleterData: {
|
|
|
|
|
- deletedAt: new Date(),
|
|
|
|
|
- deletedProjectId: project._id,
|
|
|
|
|
- deletedProjectOwnerId: project.owner_ref,
|
|
|
|
|
- deletedProjectCollaboratorIds: project.collaberator_refs,
|
|
|
|
|
- deletedProjectReadOnlyIds: project.readOnly_refs,
|
|
|
|
|
- deletedProjectReadWriteTokenAccessIds:
|
|
|
|
|
- project.tokenAccessReadAndWrite_refs,
|
|
|
|
|
- deletedProjectReadOnlyTokenAccessIds: project.tokenAccessReadOnly_refs,
|
|
|
|
|
- deletedProjectReadWriteToken: project.tokens
|
|
|
|
|
- ? project.tokens.readAndWrite
|
|
|
|
|
- : undefined,
|
|
|
|
|
- deletedProjectReadOnlyToken: project.tokens
|
|
|
|
|
- ? project.tokens.readOnly
|
|
|
|
|
- : undefined,
|
|
|
|
|
- deletedProjectLastUpdatedAt: project.lastUpdated
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- await deleteCollectionItem(db.projectsDeletedByMigration, project._id)
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-async function backfillUsers() {
|
|
|
|
|
- const limit = pLimit(CONCURRENCY)
|
|
|
|
|
-
|
|
|
|
|
- const migrationUsers = await getCollectionContents(db.usersDeletedByMigration)
|
|
|
|
|
- console.log('Found ' + migrationUsers.length + ' users')
|
|
|
|
|
- await Promise.all(migrationUsers.map(user => limit(() => backfillUser(user))))
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-async function backfillProjects() {
|
|
|
|
|
- const limit = pLimit(CONCURRENCY)
|
|
|
|
|
-
|
|
|
|
|
- const migrationProjects = await getCollectionContents(
|
|
|
|
|
- db.projectsDeletedByMigration
|
|
|
|
|
- )
|
|
|
|
|
- console.log('Found ' + migrationProjects.length + ' projects')
|
|
|
|
|
- await Promise.all(
|
|
|
|
|
- migrationProjects.map(project => limit(() => backfillProject(project)))
|
|
|
|
|
- )
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-Promise.all([backfillProjects(), backfillUsers()]).then(() => {
|
|
|
|
|
- console.log('Finished')
|
|
|
|
|
- process.exit(0)
|
|
|
|
|
-})
|
|
|