transfer-all-projects-to-user.mjs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { ObjectId } from '../../../app/src/infrastructure/mongodb.js'
  2. import minimist from 'minimist'
  3. import OwnershipTransferHandler from '../../../app/src/Features/Collaborators/OwnershipTransferHandler.js'
  4. import UserGetter from '../../../app/src/Features/User/UserGetter.js'
  5. import EmailHelper from '../../../app/src/Features/Helpers/EmailHelper.js'
  6. const args = minimist(process.argv.slice(2), {
  7. string: ['from-user', 'to-user'],
  8. })
  9. /**
  10. * @param {string} flag
  11. * @return {Promise<string>}
  12. */
  13. async function resolveUser(flag) {
  14. const raw = args[flag]
  15. if (!raw) throw new Error(`missing parameter --${flag}`)
  16. if (ObjectId.isValid(raw)) return raw
  17. const email = EmailHelper.parseEmail(raw)
  18. if (!email) throw new Error(`invalid email --${flag}=${raw}`)
  19. const user = await UserGetter.promises.getUser({ email }, { _id: 1 })
  20. if (!user)
  21. throw new Error(`user with email --${flag}=${email} does not exist`)
  22. return user._id.toString()
  23. }
  24. async function main() {
  25. const fromUserId = await resolveUser('from-user')
  26. const toUserId = await resolveUser('to-user')
  27. await OwnershipTransferHandler.promises.transferAllProjectsToUser({
  28. fromUserId,
  29. toUserId,
  30. ipAddress: '0.0.0.0',
  31. })
  32. }
  33. main()
  34. .then(() => {
  35. console.error('Done.')
  36. process.exit(0)
  37. })
  38. .catch(err => {
  39. console.error('---')
  40. console.error(err)
  41. process.exit(1)
  42. })