Я нашел решение самостоятельно:
- создать сервис:
export class StatisticService
{
constructor(
@repository(StatisticRecordRepository) public statisticsRepository: StatisticRecordRepository
) {}
async increment(key: string, addend = 1): Promise<void>
{
const existing = await this.statisticsRepository.findOne({where: {StatsKey: key}});
if(existing !== null)
{
// @ts-ignore
existing.Counter = existing.Counter + addend;
existing.UpdateTs = (new Date()).toISOString();
await this.statisticsRepository.update(existing);
}
else
{
await this.statisticsRepository.create(new StatisticRecord({
StatsKey: key,
Counter: addend
}));
}
}
}
export const StatisticsServiceBindings = {
VALUE: BindingKey.create<StatisticService>("services.StatisticsService")
};
привязать сервис в конструкторе приложений:
this.bind(StatisticsServiceBindings.VALUE).toClass(StatisticService);
получить и использовать Сервис в Log-Interceptor:
const stats = await invocationCtx.get(StatisticsServiceBindings.VALUE);
stats.increment(invocationCtx.targetClass.name + '::' + invocationCtx.methodName + ' [' + res.statusCode + ']');