is-name-unique-in-folder.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { findInTreeOrThrow } from '../util/find-in-tree'
  2. import { Folder } from '../../../../../types/folder'
  3. import { Doc } from '../../../../../types/doc'
  4. import { FileRef } from '../../../../../types/file-ref'
  5. export function isNameUniqueInFolder(
  6. tree: Folder,
  7. parentFolderId: string,
  8. name: string
  9. ): boolean {
  10. return !(
  11. findFileByNameInFolder(tree, parentFolderId, name) ||
  12. findFolderByNameInFolder(tree, parentFolderId, name)
  13. )
  14. }
  15. export function findFileByNameInFolder(
  16. tree: Folder,
  17. parentFolderId: string,
  18. name: string
  19. ): Doc | FileRef | undefined {
  20. if (tree._id !== parentFolderId) {
  21. tree = findInTreeOrThrow(tree, parentFolderId).entity as Folder
  22. }
  23. return (
  24. tree.docs.find(entity => entity.name === name) ||
  25. tree.fileRefs.find(entity => entity.name === name)
  26. )
  27. }
  28. export function findFolderByNameInFolder(
  29. tree: Folder,
  30. parentFolderId: string,
  31. name: string
  32. ): Folder | undefined {
  33. if (tree._id !== parentFolderId) {
  34. tree = findInTreeOrThrow(tree, parentFolderId).entity as Folder
  35. }
  36. return tree.folders.find(entity => entity.name === name)
  37. }