Browse Source

Add catalog repository and service

pull/1310/head
Hironsan 4 years ago
parent
commit
a3e5475f25
5 changed files with 60 additions and 0 deletions
  1. 13
      frontend/domain/models/upload/catalog.ts
  2. 6
      frontend/domain/models/upload/catalogRepository.ts
  3. 16
      frontend/repositories/upload/apiCatalogRepository.ts
  4. 13
      frontend/services/application/upload/catalogApplicationService.ts
  5. 12
      frontend/services/application/upload/catalogData.ts

13
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)
}
}

6
frontend/domain/models/upload/catalogRepository.ts

@ -0,0 +1,6 @@
import { Catalog } from './catalog'
export interface CatalogRepository {
list(projectId: string): Promise<Catalog[]>
}

16
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<Catalog[]> {
const url = `/projects/${projectId}/catalog`
const response = await this.request.get(url)
const responseItems: Catalog[] = response.data
return responseItems.map(item => Catalog.valueOf(item))
}
}

13
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<CatalogDTO[]> {
const items = await this.repository.list(projectId)
return items.map(item => new CatalogDTO(item))
}
}

12
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
}
}
Loading…
Cancel
Save