import { BaseEntity } from '@datahub/data-models/entity/base-entity'; import { IBaseEntity } from '@datahub/metadata-types/types/entity'; import { InstitutionalMemories, InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; import { set } from '@ember/object'; import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; export interface IPokemon extends IBaseEntity { urn: string; removed: boolean; name: string; type: string; } const getPokemonIMUrlByUrn = (urn: string): string => `/pokemons/${urn.replace(/:/g, 'h')}/institutionalmemory`; export class Pokemon extends BaseEntity { urn: string; get displayName(): string { return 'pokemons'; } async readInstitutionalMemory(): Promise { const { elements: institutionalMemories } = await getJSON<{ elements: Array }>({ url: getPokemonIMUrlByUrn(this.urn) }); const institutionalMemoriesMap = institutionalMemories.map(memory => new InstitutionalMemory(memory)); set(this, 'institutionalMemories', institutionalMemoriesMap); return institutionalMemoriesMap; } async writeInstitutionalMemory(): Promise { if (this.institutionalMemories) { await postJSON({ url: getPokemonIMUrlByUrn(this.urn), data: { elements: this.institutionalMemories.map(memory => memory.readWorkingCopy()) } }); } } constructor(urn: string) { super(urn); this.urn = urn; } }