convert_doc_to_file.mjs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import minimist from 'minimist'
  2. import { waitForDb, ObjectId } from '../app/src/infrastructure/mongodb.js'
  3. import ProjectEntityUpdateHandler from '../app/src/Features/Project/ProjectEntityUpdateHandler.js'
  4. import Errors from '../app/src/Features/Errors/Errors.js'
  5. async function main() {
  6. const argv = minimist(process.argv.slice(2))
  7. const projectId = argv['project-id']
  8. const docId = argv['doc-id']
  9. const userId = argv['user-id']
  10. if ([projectId, docId, userId].some(it => !it || !ObjectId.isValid(it))) {
  11. throw new Error(
  12. 'provide a valid object id as --project-id, --doc-id and --user-id'
  13. )
  14. }
  15. console.log(`Converting doc ${projectId}/${docId} as user ${userId}`)
  16. await waitForDb()
  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 main()
  36. console.log('Done.')
  37. process.exit(0)
  38. } catch (error) {
  39. console.error(error)
  40. process.exit(1)
  41. }