count_files_in_projects.mjs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import readline from 'readline'
  2. import { waitForDb } from '../app/src/infrastructure/mongodb.js'
  3. import ProjectEntityHandler from '../app/src/Features/Project/ProjectEntityHandler.js'
  4. import ProjectGetter from '../app/src/Features/Project/ProjectGetter.js'
  5. import Errors from '../app/src/Features/Errors/Errors.js'
  6. async function countFiles() {
  7. const rl = readline.createInterface({
  8. input: process.stdin,
  9. })
  10. for await (const projectId of rl) {
  11. try {
  12. const project = await ProjectGetter.promises.getProject(projectId)
  13. if (!project) {
  14. throw new Errors.NotFoundError('project not found')
  15. }
  16. const { files, docs } =
  17. ProjectEntityHandler.getAllEntitiesFromProject(project)
  18. console.error(
  19. projectId,
  20. files.length,
  21. (project.deletedFiles && project.deletedFiles.length) || 0,
  22. docs.length,
  23. (project.deletedDocs && project.deletedDocs.length) || 0
  24. )
  25. } catch (err) {
  26. if (err instanceof Errors.NotFoundError) {
  27. console.error(projectId, 'NOTFOUND')
  28. } else {
  29. console.log(projectId, 'ERROR', err.name, err.message)
  30. }
  31. }
  32. }
  33. }
  34. try {
  35. await waitForDb()
  36. await countFiles()
  37. process.exit(0)
  38. } catch (error) {
  39. console.log('Aiee, something went wrong!', error)
  40. process.exit(1)
  41. }