diff --git a/frontend/src/lib/container.ts b/frontend/src/lib/container.ts index 078015c..1d2822f 100644 --- a/frontend/src/lib/container.ts +++ b/frontend/src/lib/container.ts @@ -31,6 +31,8 @@ import { CreatePostUseCase } from '$lib/post/application/useCase/createPostUseCa import { GetAllPostsUseCase } from '$lib/post/application/useCase/getAllPostsUseCase'; import { GetPostUseCase } from '$lib/post/application/useCase/getPostUseCase'; import { PostApiServiceImpl } from '$lib/post/framework/api/postApiServiceImpl'; +import { GetLabelUseCase } from '$lib/label/application/useCase/getLabelUseCase'; +import { LabelLoadedStore } from '$lib/label/adapter/presenter/labelLoadedStore'; export class Container { private useCases: UseCases; @@ -65,6 +67,10 @@ export class Container { return new LabelsListedStore(this.useCases.getAllLabelsUseCase, initialData); } + createLabelLoadedStore(initialData?: LabelViewModel): LabelLoadedStore { + return new LabelLoadedStore(this.useCases.getLabelUseCase, initialData); + } + createLabelCreatedStore(): LabelCreatedStore { return new LabelCreatedStore(this.useCases.createLabelUseCase); } @@ -145,6 +151,7 @@ class UseCases { private _getPostUseCase?: GetPostUseCase; private _createPostUseCase?: CreatePostUseCase; private _getAllLabelsUseCase?: GetAllLabelsUseCase; + private _getLabelUseCase?: GetLabelUseCase; private _createLabelUseCase?: CreateLabelUseCase; constructor(repositories: Repositories) { @@ -181,6 +188,11 @@ class UseCases { return this._getAllLabelsUseCase; } + get getLabelUseCase(): GetLabelUseCase { + this._getLabelUseCase ??= new GetLabelUseCase(this.repositories.labelRepository); + return this._getLabelUseCase; + } + get createLabelUseCase(): CreateLabelUseCase { this._createLabelUseCase ??= new CreateLabelUseCase(this.repositories.labelRepository); return this._createLabelUseCase; diff --git a/frontend/src/lib/label/adapter/gateway/labelApiService.ts b/frontend/src/lib/label/adapter/gateway/labelApiService.ts index e17b297..68d79e5 100644 --- a/frontend/src/lib/label/adapter/gateway/labelApiService.ts +++ b/frontend/src/lib/label/adapter/gateway/labelApiService.ts @@ -3,5 +3,6 @@ import type { LabelResponseDto } from '$lib/label/adapter/gateway/labelResponseD export interface LabelApiService { getAllLabels(): Promise; + getLabelById(id: number): Promise; createLabel(payload: CreateLabelRequestDto): Promise; } diff --git a/frontend/src/lib/label/adapter/gateway/labelRepositoryImpl.ts b/frontend/src/lib/label/adapter/gateway/labelRepositoryImpl.ts index 8c8bc8d..8ff3642 100644 --- a/frontend/src/lib/label/adapter/gateway/labelRepositoryImpl.ts +++ b/frontend/src/lib/label/adapter/gateway/labelRepositoryImpl.ts @@ -14,6 +14,11 @@ export class LabelRepositoryImpl implements LabelRepository { return dtos.map((dto) => dto.toEntity()); } + async getLabelById(id: number): Promise