UNPKG

service-activities2-node

Version:

Party activities tracking microservice in Node.js / ES2017 V2

119 lines (97 loc) 4.27 kB
const services = require('../../../../src/protos/activities_v1_grpc_pb'); const messages = require('../../../../src/protos/activities_v1_pb'); import { Context } from 'pip-services4-components-node'; import { Descriptor } from 'pip-services4-components-node'; import { IReferences } from 'pip-services4-components-node'; import { FilterParams } from 'pip-services4-data-node'; import { GrpcController } from 'pip-services4-grpc-node'; import { IActivitiesService } from '../../services/IActivitiesService'; import { ActivitiesGrpcConverterV1 } from './ActivitiesGrpcConverterV1'; export class ActivitiesGrpcControllerV1 extends GrpcController { private _service: IActivitiesService; public constructor() { super(services.ActivitiesService); this._dependencyResolver.put('service', new Descriptor("activities", "service", "default", "*", "*")); } public setReferences(references: IReferences): void { super.setReferences(references); this._service = this._dependencyResolver.getOneRequired<IActivitiesService>('service'); } private async getPartyActivities(call: any): Promise<any> { let traceId = call.request.getTraceId(); let filter = new FilterParams(); ActivitiesGrpcConverterV1.setMap(filter, call.request.getFilterMap()); let paging = ActivitiesGrpcConverterV1.toPagingParams(call.request.getPaging()); let response = new messages.PartyActivityPageReply(); try { let result = await this._service.getPartyActivities(Context.fromTraceId(traceId), filter, paging); let page = ActivitiesGrpcConverterV1.fromPartyActivityPage(result); response.setPage(page); } catch (err) { let error = ActivitiesGrpcConverterV1.fromError(err); response.setError(error); } return response; } private async logPartyActivity(call: any): Promise<any> { let traceId = call.request.getTraceId(); let activity = ActivitiesGrpcConverterV1.toPartyActivity(call.request.getActivity()); let response = new messages.PartyActivityObjectReply(); try { let result = await this._service.logPartyActivity(Context.fromTraceId(traceId), activity); activity = ActivitiesGrpcConverterV1.fromPartyActivity(result); if (result) response.setPartyActivity(activity); } catch (err) { let error = ActivitiesGrpcConverterV1.fromError(err); response.setError(error); } return response; } private async batchPartyActivities(call: any): Promise<any> { let traceId = call.request.getTraceId(); let activities = ActivitiesGrpcConverterV1.toPartyActivities(call.request.getActivitiesList()); let response = new messages.PartyActivityOnlyErrorReply(); try { await this._service.batchPartyActivities(Context.fromTraceId(traceId), activities); } catch (err) { let error = ActivitiesGrpcConverterV1.fromError(err); response.setError(error); } return response; } private async deletePartyActivities(call: any): Promise<any> { let traceId = call.request.getTraceId(); let filter = FilterParams.fromValue(call.request.filterMap); let response = new messages.PartyActivityOnlyErrorReply(); try { await this._service.deletePartyActivities(Context.fromTraceId(traceId), filter); } catch (err) { let error = ActivitiesGrpcConverterV1.fromError(err); response.setError(error); } return response; } public register() { this.registerMethod( 'get_party_activities', null, this.getPartyActivities ); this.registerMethod( 'log_party_activity', null, this.logPartyActivity ); this.registerMethod( 'batch_party_activities', null, this.batchPartyActivities ); this.registerMethod( 'delete_party_activities', null, this.deletePartyActivities ); } }