import { Injectable } from '@angular/core'; import { NatsService } from 'app/core/nats/services/nats.service'; import * as nats from 'nats.ws'; import { Error } from 'app/modules/proto/protobuf/rpc_pb'; import { ListSitesRequest, ListSitesResponse, CreateSiteRequest, CreateSiteResponse, UpdateSiteRequest, UpdateSiteResponse, DeleteSiteRequest, DeleteSiteResponse, } from 'app/modules/proto/c2se/site_pb'; import { SUBJECT_LIST_SITES, SUBJECT_CREATE_SITE, SUBJECT_UPDATE_SITE, SUBJECT_DELETE_SITE, } from 'app/modules/proto/c2se/backend/site_pb'; @Injectable({ providedIn: 'root', }) export class SiteService { /** * Constructor */ constructor(private __natsService: NatsService) {} // ----------------------------------------------------------------------------------------------------- // @ Accessors // ----------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------- // @ Public methods // ----------------------------------------------------------------------------------------------------- listSites(): Promise { return new Promise((resolve, reject) => { let req = new ListSitesRequest(); this.__natsService .request( SUBJECT_LIST_SITES, req.serializeBinary(), ListSitesResponse.deserializeBinary ) .then((result) => { console.log('success', result, result.getSitesList()); return resolve(result); }) .catch((e: Error) => { console.log('failed', e); reject(e); }); }); } createSite(): Promise { return new Promise((resolve, reject) => { let req = new CreateSiteRequest(); this.__natsService .request( SUBJECT_CREATE_SITE, req.serializeBinary(), CreateSiteResponse.deserializeBinary ) .then((result) => { console.log('success', result, result.getSite()); return resolve(result); }) .catch((e: Error) => { console.log('failed', e); return reject(e); }); }); } }