import { Resource } from '@ngxp/rest'; import { Observable } from 'rxjs'; import { ApiSingleResourceStateService, SingleResourceStateService, StateService, } from '../ngrx/state.service'; import { ResourceServiceConfig } from './resource.model'; import { ResourceRepository } from './resource.repository'; import { ResourceService } from './resource.service'; import { StateResource } from './resource.util'; export class ApiResourceService<B extends Resource, T extends Resource> extends ResourceService< B, T > { protected apiResourceStateService: ApiSingleResourceStateService<B, T>; constructor( protected config: ResourceServiceConfig<B>, protected stateService: StateService, protected repository: ResourceRepository, ) { super(config, stateService); } protected initStateService(): void { this.apiResourceStateService = this.stateService.createApiSingleResourceService<B, T>( this.config, ); } protected getResourceStateService(): SingleResourceStateService<B, T> { return this.apiResourceStateService; } public save(toSave: unknown): Observable<StateResource<T>> { return this.apiResourceStateService.save(toSave); } }