Skip to content

Commit 907b661

Browse files
committed
adjust activity payload
1 parent c187362 commit 907b661

File tree

4 files changed

+29
-5
lines changed

4 files changed

+29
-5
lines changed

packages/core/src/lib/cache-layer/cacheLayerRefresher.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { inject, injectable, multiInject } from 'inversify';
55
import { TYPES } from '@vulcan-sql/core/types';
66
import {
77
APISchema,
8+
ActivityLogContentOptions,
9+
ActivityLogType,
810
CacheLayerInfo,
911
IActivityLogger,
1012
} from '@vulcan-sql/core/models';
@@ -111,11 +113,12 @@ export class CacheLayerRefresher implements ICacheLayerRefresher {
111113
} finally {
112114
// send activity log
113115
const content = {
116+
isSuccess: refreshResult === RefreshResult.SUCCESS ? true : false,
117+
activityLogType: ActivityLogType.CACHE_REFRESH,
114118
logTime: now,
115119
urlPath,
116120
sql,
117-
refreshResult,
118-
};
121+
} as ActivityLogContentOptions;
119122
const activityLoggers = this.getActivityLoggers();
120123
for (const activityLogger of activityLoggers)
121124
activityLogger.log(content).catch((err: any) => {

packages/core/src/models/extensions/logger.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ export enum ActivityLoggerType {
77
HTTP_LOGGER = 'http-logger',
88
}
99

10+
export enum ActivityLogType {
11+
CACHE_REFRESH = 'cache-refresh',
12+
API_REQUEST = 'api-request',
13+
}
14+
export interface ActivityLogContentOptions {
15+
isSuccess: boolean;
16+
activityLogType: ActivityLogType;
17+
}
1018
export interface IActivityLogger {
1119
isEnabled(): boolean;
1220
log(content: any): Promise<void>;

packages/serve/src/lib/middleware/activityLogMiddleware.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import {
44
VulcanInternalExtension,
55
IActivityLoggerOptions,
66
getLogger,
7+
ActivityLogType,
8+
ActivityLogContentOptions,
79
} from '@vulcan-sql/core';
810
import { Next, KoaContext, BuiltInMiddleware } from '@vulcan-sql/serve/models';
911
import { inject, multiInject } from 'inversify';
@@ -42,7 +44,10 @@ export class ActivityLogMiddleware extends BuiltInMiddleware<IActivityLoggerOpti
4244
const body = context.response.body as any;
4345
const error = body?.message;
4446
const user = context.state.user;
47+
const status = context.response.status || context.status;
4548
const activityLog = {
49+
activityLogType: ActivityLogType.API_REQUEST,
50+
isSuccess: status.toString().startsWith('2') ? true : false,
4651
logTime,
4752
duration,
4853
method: context.request.method,
@@ -51,10 +56,10 @@ export class ActivityLogMiddleware extends BuiltInMiddleware<IActivityLoggerOpti
5156
header: context.request.header,
5257
params: context.params,
5358
query: context.request.query,
54-
status: context.response.status || context.status,
59+
status,
5560
error,
5661
user,
57-
};
62+
} as ActivityLogContentOptions;
5863
for (const activityLogger of Object.values(this.activityLoggerMap)) {
5964
activityLogger.log(activityLog).catch((e) => {
6065
logger.debug(`Error when logging activity: ${e}`);

packages/serve/test/middlewares/built-in-middlewares/activityLogMiddleware.spec.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { IncomingHttpHeaders } from 'http';
55
import { ParsedUrlQuery } from 'querystring';
66
import { KoaContext } from '@vulcan-sql/serve/models';
77

8-
import { HttpLogger } from '@vulcan-sql/core';
8+
import { ActivityLogType, HttpLogger } from '@vulcan-sql/core';
99
import { ActivityLogMiddleware } from '@vulcan-sql/serve/middleware/activityLogMiddleware';
1010

1111
jest.mock('../../../../core/src/lib/loggers/httpLogger', () => {
@@ -76,6 +76,8 @@ describe('Test activity log middlewares', () => {
7676
};
7777

7878
const expected = {
79+
isSuccess: true,
80+
activityLogType: ActivityLogType.API_REQUEST,
7981
method: ctx.request.method,
8082
url: ctx.request.originalUrl,
8183
status: ctx.response.status,
@@ -95,6 +97,8 @@ describe('Test activity log middlewares', () => {
9597
// Assert
9698
const logMock = mockLogger.log as jest.Mock;
9799
const actual = logMock.mock.calls[0];
100+
expect(actual[0].isSuccess).toEqual(expected.isSuccess);
101+
expect(actual[0].activityLogType).toEqual(expected.activityLogType);
98102
expect(actual[0].method).toEqual(expected.method);
99103
expect(actual[0].url).toEqual(expected.url);
100104
expect(actual[0].status).toEqual(expected.status);
@@ -146,6 +150,8 @@ describe('Test activity log middlewares', () => {
146150
};
147151
const body = ctx.response.body as any;
148152
const expected = {
153+
isSucess: false,
154+
activityLogType: ActivityLogType.API_REQUEST,
149155
method: ctx.request.method,
150156
url: ctx.request.originalUrl,
151157
status: ctx.response.status,
@@ -165,6 +171,8 @@ describe('Test activity log middlewares', () => {
165171
// Assert
166172
const logMock = mockLogger.log as jest.Mock;
167173
const actual = logMock.mock.calls[0];
174+
expect(actual[0].isSuccess).toEqual(expected.isSucess);
175+
expect(actual[0].activityLogType).toEqual(expected.activityLogType);
168176
expect(actual[0].method).toEqual(expected.method);
169177
expect(actual[0].url).toEqual(expected.url);
170178
expect(actual[0].status).toEqual(expected.status);

0 commit comments

Comments
 (0)