count_files_in_projects.mjs 1.2 KB

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