import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';

import 'rxjs/add/operator/map';

import { RPCService } from '@loafer/ng-rpc/service';

import { Infra } from '@overflow/commons-typescript/model/infra';
import { Page, PageParams } from 'app/commons/model';
import { Domain } from '@overflow/commons-typescript/model/domain';
import { Probe } from '@overflow/commons-typescript/model/probe';

@Injectable()
export class InfraService {

  public constructor(
    private rpcService: RPCService,
  ) {

  }

  public readAllByDomain(domain: Domain, pageParams: PageParams): Observable<Page> {
    return this.rpcService.call('InfraService.readAllByDomain', domain, pageParams);
  }

  public readAllByProbe(probe: Probe, pageParams: PageParams): Observable<Page> {
    return this.rpcService.call('InfraService.readAllByProbe', probe, pageParams);
  }

  public read(id: string): Observable<Infra> {
    return this.rpcService.call('InfraService.read', id);
  }
}
