From 47b99f249f004b435fa4403595dd6592bbf90007 Mon Sep 17 00:00:00 2001 From: Jesse Wicks <33884732+jwicks31@users.noreply.github.com> Date: Tue, 23 Oct 2018 18:57:29 -0500 Subject: [PATCH] feat: Metrics - WorkClaim Counts (#627) --- src/API/Router.ts | 9 +++++++++ src/API/WorkController.ts | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/src/API/Router.ts b/src/API/Router.ts index d05e2d02..9503834b 100644 --- a/src/API/Router.ts +++ b/src/API/Router.ts @@ -68,6 +68,7 @@ export class Router { this.koaRouter.get('/works', RequestValidationMiddleware(getWorksSchema), this.getWorks) this.koaRouter.post('/works', this.postWork) this.koaRouter.get('/health', this.getHealth) + this.koaRouter.get('/metrics', this.getWorkCounts) this.koa.use(helmet(SecurityHeaders)) this.koa.use(KoaCors({ expose: ['X-Total-Count'] })) @@ -113,6 +114,14 @@ export class Router { context.body = works } + private getWorkCounts = async (context: KoaRouter.IRouterContext, next: () => Promise) => { + this.logger.trace('/metrics') + const TotalWorkClaims = await this.workController.getWorksCountByFilters({ + ...context.query, + }) + context.body = { TotalWorkClaims } + } + private postWork = async (context: KoaRouter.IRouterContext, next: () => Promise) => { const { body } = context.request diff --git a/src/API/WorkController.ts b/src/API/WorkController.ts index 980bb1b2..0e473443 100644 --- a/src/API/WorkController.ts +++ b/src/API/WorkController.ts @@ -62,6 +62,12 @@ export class WorkController { return { count, works } } + async getWorksCountByFilters(worksFilters: WorksFilters = {}): Promise { + this.logger.trace({ method: 'getWorksCountByFilters', worksFilters }, 'Getting Work Counts by Filters from DB') + const count = await this.collection.find(worksFilters, { projection: { _id: false } }).count() + return count + } + async create(work: Work): Promise { this.logger.trace({ method: 'create', work }, 'Creating Work') // TODO: verify id, publicKey, signature and createdDate