service-activities2-node
Version:
Party activities tracking microservice in Node.js / ES2017 V2
119 lines (97 loc) • 4.27 kB
text/typescript
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
);
}
}