convert_doc_to_file.mjs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import minimist from 'minimist'
  2. import { ObjectId } from '../app/src/infrastructure/mongodb.js'
  3. import ProjectEntityUpdateHandler from '../app/src/Features/Project/ProjectEntityUpdateHandler.mjs'
  4. import Errors from '../app/src/Features/Errors/Errors.js'
  5. import { scriptRunner } from './lib/ScriptRunner.mjs'
  6. async function main() {
  7. const argv = minimist(process.argv.slice(2))
  8. const projectId = argv['project-id']
  9. const docId = argv['doc-id']
  10. const userId = argv['user-id']
  11. if ([projectId, docId, userId].some(it => !it || !ObjectId.isValid(it))) {
  12. throw new Error(
  13. 'provide a valid object id as --project-id, --doc-id and --user-id'
  14. )
  15. }
  16. console.log(`Converting doc ${projectId}/${docId} as user ${userId}`)
  17. try {
  18. await ProjectEntityUpdateHandler.promises.convertDocToFile(
  19. projectId,
  20. docId,
  21. userId,
  22. null
  23. )
  24. } catch (err) {
  25. if (err instanceof Errors.NotFoundError) {
  26. throw new Error('Document not found')
  27. } else if (err instanceof Errors.DocHasRangesError) {
  28. throw new Error('Document has comments or tracked changes')
  29. } else {
  30. throw err
  31. }
  32. }
  33. }
  34. try {
  35. await scriptRunner(main)
  36. console.log('Done.')
  37. process.exit(0)
  38. } catch (error) {
  39. console.error(error)
  40. process.exit(1)
  41. }