Skip to content

Commit

Permalink
[_] chore: better finders (#463)
Browse files Browse the repository at this point in the history
  • Loading branch information
JoanVicens authored Feb 27, 2024
1 parent 2992059 commit 85b3881
Show file tree
Hide file tree
Showing 79 changed files with 959 additions and 440 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@
"detect-port": "^1.3.0",
"dotenv": "^10.0.0",
"dotenv-webpack": "^7.0.3",
"electron": "^25.8.4",
"electron": "^19.1.9",
"electron-builder": "^23.6.0",
"electron-devtools-installer": "^3.2.0",
"electron-notarize": "^1.1.1",
Expand Down
20 changes: 20 additions & 0 deletions release/app/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@
enabled "2.0.x"
kuler "^2.0.0"

"@gcas/fuse@^2.4.2":
version "2.4.2"
resolved "https://registry.yarnpkg.com/@gcas/fuse/-/fuse-2.4.2.tgz#149bd97ec8a60988f4868bacd719c7e8a1c41876"
integrity sha512-l/vVd2eXAuzKG4QilN1VRa8za5glndSK+jxcLrzMiXRrvbbCJthwqcBZUE3VzoRL0T/l7197tW+MKR9YeQCtZQ==
dependencies:
nanoresource "^1.3.0"
napi-macros "^2.0.0"

"@ioredis/commands@^1.1.1":
version "1.2.0"
resolved "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz"
Expand Down Expand Up @@ -664,11 +672,23 @@ mz@^2.4.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"

nanoresource@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/nanoresource/-/nanoresource-1.3.0.tgz#823945d9667ab3e81a8b2591ab8d734552878cd0"
integrity sha512-OI5dswqipmlYfyL3k/YMm7mbERlh4Bd1KuKdMHpeoVD1iVxqxaTMKleB4qaA2mbQZ6/zMNSxCXv9M9P/YbqTuQ==
dependencies:
inherits "^2.0.4"

napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==

napi-macros@^2.0.0:
version "2.2.2"
resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044"
integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==

node-abi@^3.3.0:
version "3.51.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.51.0.tgz#970bf595ef5a26a271307f8a4befa02823d4e87d"
Expand Down
7 changes: 4 additions & 3 deletions src/apps/fuse/callbacks/GetAttributesCallback.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,10 @@ export class GetAttributesCallback extends FuseCallback<GetAttributesCallbackDat
});
}

const folder = await this.virtualDriveContainer.folderSearcher.run({
path,
});
const folder =
await this.virtualDriveContainer.singleFolderMatchingSearcher.run({
path,
});

if (folder) {
return this.right({
Expand Down
7 changes: 5 additions & 2 deletions src/apps/fuse/callbacks/ReaddirCallback.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { FolderPath } from '../../../context/virtual-drive/folders/domain/FolderPath';
import { VirtualDriveDependencyContainer } from '../dependency-injection/virtual-drive/VirtualDriveDependencyContainer';
import { FuseCallback } from './FuseCallback';

Expand All @@ -7,11 +8,13 @@ export class ReaddirCallback extends FuseCallback<Array<string>> {
}

async execute(path: string) {
const folderPath = new FolderPath(path);

const filesNamesPromise =
this.container.filesByFolderPathNameLister.run(path);
this.container.filesByFolderPathNameLister.run(folderPath);

const folderNamesPromise =
this.container.foldersByParentPathLister.run(path);
this.container.foldersByParentPathLister.run(folderPath);

const [filesNames, foldersNames] = await Promise.all([
filesNamesPromise,
Expand Down
6 changes: 5 additions & 1 deletion src/apps/fuse/callbacks/RenameOrMoveFolder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { FolderPath } from '../../../context/virtual-drive/folders/domain/Folder
import { VirtualDriveDependencyContainer } from '../dependency-injection/virtual-drive/VirtualDriveDependencyContainer';
import { FuseError, FuseUnknownError } from './FuseErrors';
import { Either, left, right } from '../../../context/shared/domain/Either';
import { FolderStatuses } from '../../../context/virtual-drive/folders/domain/FolderStatus';

type RenameOrMoveRight = 'no-op' | 'success';

Expand All @@ -16,7 +17,10 @@ export class RenameOrMoveFolder {
src: string,
dest: string
): Promise<Either<FuseError, RenameOrMoveRight>> {
const folder = await this.container.folderSearcher.run({ path: src });
const folder = await this.container.singleFolderMatchingSearcher.run({
path: src,
status: FolderStatuses.EXISTS,
});

if (!folder) {
return right(RenameOrMoveFolder.NO_OP);
Expand Down
13 changes: 6 additions & 7 deletions src/apps/fuse/callbacks/TrashFolderCallback.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { FolderStatuses } from '../../../context/virtual-drive/folders/domain/FolderStatus';
import { VirtualDriveDependencyContainer } from '../dependency-injection/virtual-drive/VirtualDriveDependencyContainer';
import { NotifyFuseCallback } from './FuseCallback';
import { FuseNoSuchFileOrDirectoryError } from './FuseErrors';
import { basename } from 'path';

export class TrashFolderCallback extends NotifyFuseCallback {
Expand All @@ -9,13 +9,12 @@ export class TrashFolderCallback extends NotifyFuseCallback {
}

async execute(path: string) {
const folder = await this.container.folderSearcher.run({ path });

if (!folder) {
return this.left(new FuseNoSuchFileOrDirectoryError());
}

try {
const folder = await this.container.singleFolderMatchingFinder.run({
path,
status: FolderStatuses.EXISTS,
});

await this.container.folderDeleter.run(folder.uuid);

return this.right();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { FilesSearcher } from '../../../../../context/virtual-drive/files/application/FilesSearcher';
import { FirstsFileSearcher } from '../../../../../context/virtual-drive/files/application/FirstsFileSearcher';
import { FilesByFolderPathSearcher } from '../../../../../context/virtual-drive/files/application/FilesByFolderPathSearcher';
import { FilePathUpdater } from '../../../../../context/virtual-drive/files/application/FilePathUpdater';
import { FileCreator } from '../../../../../context/virtual-drive/files/application/FileCreator';
Expand All @@ -10,7 +10,7 @@ import { SyncFileMessenger } from '../../../../../context/virtual-drive/files/do

export interface FilesContainer {
filesByFolderPathNameLister: FilesByFolderPathSearcher;
filesSearcher: FilesSearcher;
filesSearcher: FirstsFileSearcher;
filePathUpdater: FilePathUpdater;
fileCreator: FileCreator;
fileDeleter: FileDeleter;
Expand Down
16 changes: 10 additions & 6 deletions src/apps/fuse/dependency-injection/virtual-drive/files/builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { FileCreator } from '../../../../../context/virtual-drive/files/applicat
import { FileDeleter } from '../../../../../context/virtual-drive/files/application/FileDeleter';
import { FilePathUpdater } from '../../../../../context/virtual-drive/files/application/FilePathUpdater';
import { FilesByFolderPathSearcher } from '../../../../../context/virtual-drive/files/application/FilesByFolderPathSearcher';
import { FilesSearcher } from '../../../../../context/virtual-drive/files/application/FilesSearcher';
import { FirstsFileSearcher } from '../../../../../context/virtual-drive/files/application/FirstsFileSearcher';
import { FileRepositoryInitializer } from '../../../../../context/virtual-drive/files/application/FileRepositoryInitializer';
import { SameFileWasMoved } from '../../../../../context/virtual-drive/files/application/SameFileWasMoved';
import { File } from '../../../../../context/virtual-drive/files/domain/File';
Expand All @@ -20,6 +20,7 @@ import { FoldersContainer } from '../folders/FoldersContainer';
import { SharedContainer } from '../shared/SharedContainer';
import { FilesContainer } from './FilesContainer';
import { InMemoryFileRepositorySingleton } from '../../../../shared/dependency-injection/virtual-drive/files/InMemoryFileRepositorySingleton';
import { SingleFileMatchingSearcher } from '../../../../../context/virtual-drive/files/application/SingleFileMatchingSearcher';

export async function buildFilesContainer(
initialFiles: Array<File>,
Expand All @@ -41,10 +42,10 @@ export async function buildFilesContainer(

const filesByFolderPathNameLister = new FilesByFolderPathSearcher(
repository,
folderContainer.folderFinder
folderContainer.parentFolderFinder
);

const filesSearcher = new FilesSearcher(repository);
const filesSearcher = new FirstsFileSearcher(repository);

const remoteFileSystem = new SDKRemoteFileSystem(
sdk,
Expand All @@ -56,16 +57,19 @@ export async function buildFilesContainer(
sharedContainer.relativePathToAbsoluteConverter
);

const singleFileMatchingSearcher = new SingleFileMatchingSearcher(repository);

const filePathUpdater = new FilePathUpdater(
remoteFileSystem,
localFileSystem,
repository,
folderContainer.folderFinder,
singleFileMatchingSearcher,
folderContainer.parentFolderFinder,
eventBus
);

const sameFileWasMoved = new SameFileWasMoved(
repository,
singleFileMatchingSearcher,
localFileSystem,
eventRepository
);
Expand All @@ -81,7 +85,7 @@ export async function buildFilesContainer(
const fileCreator = new FileCreator(
remoteFileSystem,
repository,
folderContainer.folderFinder,
folderContainer.parentFolderFinder,
fileDeleter,
eventBus,
syncFileMessenger
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ import { AllParentFoldersStatusIsExists } from '../../../../../context/virtual-d
import { FolderCreator } from '../../../../../context/virtual-drive/folders/application/FolderCreator';
import { FolderCreatorFromOfflineFolder } from '../../../../../context/virtual-drive/folders/application/FolderCreatorFromOfflineFolder';
import { FolderDeleter } from '../../../../../context/virtual-drive/folders/application/FolderDeleter';
import { FolderFinder } from '../../../../../context/virtual-drive/folders/application/FolderFinder';
import { FolderPathUpdater } from '../../../../../context/virtual-drive/folders/application/FolderPathUpdater';
import { FolderRepositoryInitializer } from '../../../../../context/virtual-drive/folders/application/FolderRepositoryInitializer';
import { FolderSearcher } from '../../../../../context/virtual-drive/folders/application/FolderSearcher';
import { FoldersByParentPathLister } from '../../../../../context/virtual-drive/folders/application/FoldersByParentPathLister';
import { ParentFolderFinder } from '../../../../../context/virtual-drive/folders/application/ParentFolderFinder';
import { SingleFolderMatchingFinder } from '../../../../../context/virtual-drive/folders/application/SingleFolderMatchingFinder';
import { SingleFolderMatchingSearcher } from '../../../../../context/virtual-drive/folders/application/SingleFolderMatchingSearcher';
import { SyncFolderMessenger } from '../../../../../context/virtual-drive/folders/domain/SyncFolderMessenger';

export interface FoldersContainer {
folderFinder: FolderFinder;
folderSearcher: FolderSearcher;
parentFolderFinder: ParentFolderFinder;
foldersByParentPathLister: FoldersByParentPathLister;
folderPathUpdater: FolderPathUpdater;
allParentFoldersStatusIsExists: AllParentFoldersStatusIsExists;
Expand All @@ -20,4 +20,6 @@ export interface FoldersContainer {
folderDeleter: FolderDeleter;
folderRepositoryInitiator: FolderRepositoryInitializer;
syncFolderMessenger: SyncFolderMessenger;
singleFolderMatchingFinder: SingleFolderMatchingFinder;
singleFolderMatchingSearcher: SingleFolderMatchingSearcher;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@ import { AllParentFoldersStatusIsExists } from '../../../../../context/virtual-d
import { FolderCreator } from '../../../../../context/virtual-drive/folders/application/FolderCreator';
import { FolderCreatorFromOfflineFolder } from '../../../../../context/virtual-drive/folders/application/FolderCreatorFromOfflineFolder';
import { FolderDeleter } from '../../../../../context/virtual-drive/folders/application/FolderDeleter';
import { FolderFinder } from '../../../../../context/virtual-drive/folders/application/FolderFinder';
import { ParentFolderFinder } from '../../../../../context/virtual-drive/folders/application/ParentFolderFinder';
import { FolderMover } from '../../../../../context/virtual-drive/folders/application/FolderMover';
import { FolderPathUpdater } from '../../../../../context/virtual-drive/folders/application/FolderPathUpdater';
import { FolderRenamer } from '../../../../../context/virtual-drive/folders/application/FolderRenamer';
import { FolderRepositoryInitializer } from '../../../../../context/virtual-drive/folders/application/FolderRepositoryInitializer';
import { FolderSearcher } from '../../../../../context/virtual-drive/folders/application/FolderSearcher';
import { FoldersByParentPathLister } from '../../../../../context/virtual-drive/folders/application/FoldersByParentPathLister';
import { Folder } from '../../../../../context/virtual-drive/folders/domain/Folder';
import { FuseLocalFileSystem } from '../../../../../context/virtual-drive/folders/infrastructure/FuseLocalFileSystem';
Expand All @@ -18,6 +17,8 @@ import { DependencyInjectionHttpClientsProvider } from '../../common/clients';
import { DependencyInjectionEventBus } from '../../common/eventBus';

import { FoldersContainer } from './FoldersContainer';
import { SingleFolderMatchingFinder } from '../../../../../context/virtual-drive/folders/application/SingleFolderMatchingFinder';
import { SingleFolderMatchingSearcher } from '../../../../../context/virtual-drive/folders/application/SingleFolderMatchingSearcher';

export async function buildFoldersContainer(
initialFolders: Array<Folder>
Expand All @@ -41,19 +42,21 @@ export async function buildFoldersContainer(

await folderRepositoryInitiator.run(initialFolders);

const folderFinder = new FolderFinder(repository);

const folderSearcher = new FolderSearcher(repository);
const parentFolderFinder = new ParentFolderFinder(repository);
const singleFolderMatchingFinder = new SingleFolderMatchingFinder(repository);
const singleFolderMatchingSearcher = new SingleFolderMatchingSearcher(
repository
);

const foldersByParentPathSearcher = new FoldersByParentPathLister(
folderFinder,
parentFolderFinder,
repository
);

const folderMover = new FolderMover(
repository,
remoteFileSystem,
folderFinder
parentFolderFinder
);

const folderRenamer = new FolderRenamer(
Expand Down Expand Up @@ -82,6 +85,7 @@ export async function buildFoldersContainer(

const folderCreator = new FolderCreator(
repository,
parentFolderFinder,
remoteFileSystem,
eventBus
);
Expand All @@ -94,8 +98,7 @@ export async function buildFoldersContainer(
);

return {
folderFinder,
folderSearcher,
parentFolderFinder,
foldersByParentPathLister: foldersByParentPathSearcher,
folderPathUpdater,
allParentFoldersStatusIsExists,
Expand All @@ -104,5 +107,7 @@ export async function buildFoldersContainer(
folderDeleter,
syncFolderMessenger,
folderRepositoryInitiator,
singleFolderMatchingFinder,
singleFolderMatchingSearcher,
};
}
10 changes: 6 additions & 4 deletions src/apps/hydration-api/controllers/files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ export function buildFilesControllers(container: DependencyContainer) {
const getAll = async (_req: Request, res: Response) => {
const files = await container.retrieveAllFiles.run();

res.status(200).send({ files });
const result = files.map((file) => file.attributes());

res.status(200).send({ files: result });
};

const getByPartial = async (req: Request, res: Response) => {
const filter = async (req: Request, res: Response) => {
const filter = Object.entries(req.query)

.map(([key, param]) => {
Expand All @@ -29,8 +31,8 @@ export function buildFilesControllers(container: DependencyContainer) {
return;
}

res.status(200).send({ file });
res.status(200).send({ file: file.attributes() });
};

return { getAll, getByPartial };
return { getAll, getByPartial: filter };
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { FilesSearcher } from '../../../../context/virtual-drive/files/application/FilesSearcher';
import { FirstsFileSearcher } from '../../../../context/virtual-drive/files/application/FirstsFileSearcher';
import { FilesByFolderPathSearcher } from '../../../../context/virtual-drive/files/application/FilesByFolderPathSearcher';
import { RetrieveAllFiles } from '../../../../context/virtual-drive/files/application/RetrieveAllFiles';

export interface FilesContainer {
filesByFolderPathNameLister: FilesByFolderPathSearcher;
filesSearcher: FilesSearcher;
filesSearcher: FirstsFileSearcher;
retrieveAllFiles: RetrieveAllFiles;
}
6 changes: 3 additions & 3 deletions src/apps/hydration-api/dependency-injection/files/builder.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FilesByFolderPathSearcher } from '../../../../context/virtual-drive/files/application/FilesByFolderPathSearcher';
import { FilesSearcher } from '../../../../context/virtual-drive/files/application/FilesSearcher';
import { FirstsFileSearcher } from '../../../../context/virtual-drive/files/application/FirstsFileSearcher';
import { RetrieveAllFiles } from '../../../../context/virtual-drive/files/application/RetrieveAllFiles';
import { InMemoryFileRepositorySingleton } from '../../../shared/dependency-injection/virtual-drive/files/InMemoryFileRepositorySingleton';
import { FoldersContainer } from '../folders/FoldersContainer';
Expand All @@ -12,10 +12,10 @@ export async function buildFilesContainer(

const filesByFolderPathNameLister = new FilesByFolderPathSearcher(
repository,
folderContainer.folderFinder
folderContainer.parentFolderFinder
);

const filesSearcher = new FilesSearcher(repository);
const filesSearcher = new FirstsFileSearcher(repository);

const retrieveAllFiles = new RetrieveAllFiles(repository);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { FolderFinder } from '../../../../context/virtual-drive/folders/application/FolderFinder';
import { FolderSearcher } from '../../../../context/virtual-drive/folders/application/FolderSearcher';
import { ParentFolderFinder } from '../../../../context/virtual-drive/folders/application/ParentFolderFinder';
import { FoldersByParentPathLister } from '../../../../context/virtual-drive/folders/application/FoldersByParentPathLister';

export interface FoldersContainer {
folderFinder: FolderFinder;
folderSearcher: FolderSearcher;
parentFolderFinder: ParentFolderFinder;
foldersByParentPathSearcher: FoldersByParentPathLister;
}
Loading

0 comments on commit 85b3881

Please sign in to comment.