service-activities2-node
Version:
Party activities tracking microservice in Node.js / ES2017 V2
71 lines (55 loc) • 3.03 kB
text/typescript
import { DateTimeConverter } from 'pip-services4-commons-node';
import { ConfigParams } from 'pip-services4-components-node';
import { DependencyResolver } from 'pip-services4-components-node';
import { IConfigurable } from 'pip-services4-components-node';
import { IContext } from 'pip-services4-components-node';
import { IReferenceable } from 'pip-services4-components-node';
import { IReferences } from 'pip-services4-components-node';
import { DataPage } from 'pip-services4-data-node';
import { FilterParams } from 'pip-services4-data-node';
import { PagingParams } from 'pip-services4-data-node';
import { ICommandable } from 'pip-services4-rpc-node';
import { CommandSet } from 'pip-services4-rpc-node';
import { PartyActivityV1 } from '../data/version1/PartyActivityV1';
import { IActivitiesPersistence } from '../persistence/IActivitiesPersistence';
import { IActivitiesService } from './IActivitiesService';
import { ActivitiesCommandSet } from './ActivitiesCommandSet';
export class ActivitiesService implements IConfigurable, IReferenceable, ICommandable, IActivitiesService {
private static _defaultConfig: ConfigParams = ConfigParams.fromTuples(
'dependencies.persistence', 'activities:persistence:*:*:1.0'
);
private _dependencyResolver: DependencyResolver = new DependencyResolver(ActivitiesService._defaultConfig);
private _persistence: IActivitiesPersistence;
private _commandSet: ActivitiesCommandSet;
public configure(config: ConfigParams): void {
this._dependencyResolver.configure(config);
}
public setReferences(references: IReferences): void {
this._dependencyResolver.setReferences(references);
this._persistence = this._dependencyResolver.getOneRequired<IActivitiesPersistence>('persistence');
}
public getCommandSet(): CommandSet {
if (this._commandSet == null)
this._commandSet = new ActivitiesCommandSet(this);
return this._commandSet;
}
public async getPartyActivities(ctx: IContext, filter: FilterParams, paging: PagingParams): Promise<DataPage<PartyActivityV1>> {
return await this._persistence.getPageByFilter(ctx, filter, paging);
}
public async logPartyActivity(ctx: IContext, activity: PartyActivityV1): Promise<PartyActivityV1> {
activity.time = DateTimeConverter.toNullableDateTime(activity.time);
activity.time = activity.time || new Date();
return await this._persistence.create(ctx, activity);
}
public async batchPartyActivities(ctx: IContext, activities: PartyActivityV1[]): Promise<void> {
let tasks = new Array<Promise<PartyActivityV1>>();
for (let activity of activities)
tasks.push(
this._persistence.create(ctx, activity)
);
await Promise.all(tasks);
}
public async deletePartyActivities(ctx: IContext, filter: FilterParams): Promise<void> {
await this._persistence.deleteByFilter(ctx, filter);
}
}