From a3e5475f2500154765fdf6c83fdf295fa5a7a7f7 Mon Sep 17 00:00:00 2001 From: Hironsan Date: Thu, 8 Apr 2021 13:43:34 +0900 Subject: [PATCH] Add catalog repository and service --- frontend/domain/models/upload/catalog.ts | 13 +++++++++++++ .../domain/models/upload/catalogRepository.ts | 6 ++++++ .../repositories/upload/apiCatalogRepository.ts | 16 ++++++++++++++++ .../upload/catalogApplicationService.ts | 13 +++++++++++++ .../services/application/upload/catalogData.ts | 12 ++++++++++++ 5 files changed, 60 insertions(+) create mode 100644 frontend/domain/models/upload/catalog.ts create mode 100644 frontend/domain/models/upload/catalogRepository.ts create mode 100644 frontend/repositories/upload/apiCatalogRepository.ts create mode 100644 frontend/services/application/upload/catalogApplicationService.ts create mode 100644 frontend/services/application/upload/catalogData.ts diff --git a/frontend/domain/models/upload/catalog.ts b/frontend/domain/models/upload/catalog.ts new file mode 100644 index 00000000..076e9a02 --- /dev/null +++ b/frontend/domain/models/upload/catalog.ts @@ -0,0 +1,13 @@ +export class Catalog { + constructor( + public name: string, + public properties: object + ) {} + + static valueOf( + { name, properties }: + { name: string, properties: object } + ): Catalog { + return new Catalog(name, properties) + } +} diff --git a/frontend/domain/models/upload/catalogRepository.ts b/frontend/domain/models/upload/catalogRepository.ts new file mode 100644 index 00000000..42c01f60 --- /dev/null +++ b/frontend/domain/models/upload/catalogRepository.ts @@ -0,0 +1,6 @@ +import { Catalog } from './catalog' + + +export interface CatalogRepository { + list(projectId: string): Promise +} diff --git a/frontend/repositories/upload/apiCatalogRepository.ts b/frontend/repositories/upload/apiCatalogRepository.ts new file mode 100644 index 00000000..10078c55 --- /dev/null +++ b/frontend/repositories/upload/apiCatalogRepository.ts @@ -0,0 +1,16 @@ +import ApiService from '@/services/api.service' +import { CatalogRepository } from '@/domain/models/upload/catalogRepository' +import { Catalog } from '~/domain/models/upload/catalog' + +export class APICatalogRepository implements CatalogRepository { + constructor( + private readonly request = ApiService + ) {} + + async list(projectId: string): Promise { + const url = `/projects/${projectId}/catalog` + const response = await this.request.get(url) + const responseItems: Catalog[] = response.data + return responseItems.map(item => Catalog.valueOf(item)) + } +} diff --git a/frontend/services/application/upload/catalogApplicationService.ts b/frontend/services/application/upload/catalogApplicationService.ts new file mode 100644 index 00000000..20216319 --- /dev/null +++ b/frontend/services/application/upload/catalogApplicationService.ts @@ -0,0 +1,13 @@ +import { CatalogDTO } from './catalogData' +import { CatalogRepository } from '~/domain/models/upload/catalogRepository' + +export class CatalogApplicationService { + constructor( + private readonly repository: CatalogRepository + ) {} + + public async list(projectId: string): Promise { + const items = await this.repository.list(projectId) + return items.map(item => new CatalogDTO(item)) + } +} diff --git a/frontend/services/application/upload/catalogData.ts b/frontend/services/application/upload/catalogData.ts new file mode 100644 index 00000000..f3ba06a6 --- /dev/null +++ b/frontend/services/application/upload/catalogData.ts @@ -0,0 +1,12 @@ +import { Catalog } from '~/domain/models/upload/catalog' + + +export class CatalogDTO { + name: string + properties: object + + constructor(item: Catalog) { + this.name = item.name + this.properties = item.properties + } +}