UNPKG

service-activities2-node

Version:

Party activities tracking microservice in Node.js / ES2017 V2

71 lines (55 loc) 3.03 kB
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); } }