/** @file * @author Edouard DUPIN * @copyright 2018, Edouard DUPIN, all right reserved * @license PROPRIETARY (see license file) */ import { Injectable } from '@angular/core'; import { SessionService } from 'common/service'; import { Artist, ArtistResource, UUID } from 'app/back-api'; import { RESTConfig } from 'app/back-api/rest-tools'; import { DataStore } from 'common/utils/data-store'; import { environment } from 'environments/environment'; import { GenericDataService } from './GenericDataService'; @Injectable() export class ArtistService extends GenericDataService { getRestConfig(): RESTConfig { return { server: environment.server.karusic, token: this.session.getToken() } } private lambdaGets(): Promise { return ArtistResource.gets({ restConfig: this.getRestConfig() }); } constructor(private session: SessionService) { super(); const self = this; this.setStore(new DataStore(() => self.lambdaGets())); } insert(data: Artist): Promise { const self = this; return new Promise((resolve, reject) => { ArtistResource.post({ restConfig: this.getRestConfig(), data }).then((value: Artist) => { self.dataStore.updateValue(value); resolve(value); }).catch((error) => { reject(error); }); }); } patch(id: number, data: Artist): Promise { const self = this; return new Promise((resolve, reject) => { ArtistResource.patch({ restConfig: this.getRestConfig(), params: { id }, data }).then((value: Artist) => { self.dataStore.updateValue(value); resolve(value); }).catch((error) => { reject(error); }); }); } delete(id: number): Promise { const self = this; return new Promise((resolve, reject) => { ArtistResource.remove({ restConfig: this.getRestConfig(), params: { id } }).then(() => { self.dataStore.delete(id); resolve(); }).catch((error) => { reject(error); }); }); } deleteCover(id: number, coverId: UUID): Promise { let self = this; return new Promise((resolve, reject) => { ArtistResource.removeCover({ restConfig: this.getRestConfig(), params: { id, coverId } }).then((value) => { self.dataStore.updateValue(value); resolve(value); }).catch((error) => { reject(error); }); }); } uploadCover(id: number, file: File, progress: any = null): Promise { let self = this; return new Promise((resolve, reject) => { ArtistResource.uploadCover({ restConfig: this.getRestConfig(), params: { id, }, data: { file, fileName: file.name } }).then((value) => { self.dataStore.updateValue(value); resolve(value); }).catch((error) => { reject(error); }); }); } }