convert_doc_to_file.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const minimist = require('minimist')
  2. const { waitForDb, ObjectId } = require('../app/src/infrastructure/mongodb')
  3. const ProjectEntityUpdateHandler = require('../app/src/Features/Project/ProjectEntityUpdateHandler')
  4. const Errors = require('../app/src/Features/Errors/Errors')
  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. main()
  35. .then(() => {
  36. console.log('Done.')
  37. process.exit(0)
  38. })
  39. .catch(err => {
  40. console.error(err)
  41. process.exit(1)
  42. })