From c3c8b8b10fc5aebed488e979ae608a39fe40a292 Mon Sep 17 00:00:00 2001 From: Alessandro Magionami Date: Tue, 17 Sep 2024 18:16:13 +0200 Subject: [PATCH] chore(activitystream): getActivity refactor --- .../activitystream/domain/operations.ts | 8 +++++ .../activitystream/repositories/index.ts | 36 ++++++++++++------- .../activitystream/services/summary.ts | 5 +-- 3 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 packages/server/modules/activitystream/domain/operations.ts diff --git a/packages/server/modules/activitystream/domain/operations.ts b/packages/server/modules/activitystream/domain/operations.ts new file mode 100644 index 000000000..355a31ee0 --- /dev/null +++ b/packages/server/modules/activitystream/domain/operations.ts @@ -0,0 +1,8 @@ +import { StreamScopeActivity } from '@/modules/activitystream/helpers/types' + +export type GetActivity = ( + streamId: string, + start: Date, + end: Date, + filteredUser: string | null +) => Promise diff --git a/packages/server/modules/activitystream/repositories/index.ts b/packages/server/modules/activitystream/repositories/index.ts index 2b5192d83..baca9e63f 100644 --- a/packages/server/modules/activitystream/repositories/index.ts +++ b/packages/server/modules/activitystream/repositories/index.ts @@ -1,21 +1,33 @@ import knex from '@/db/knex' -import { StreamScopeActivity } from '@/modules/activitystream/helpers/types' +import { + StreamActivityRecord, + StreamScopeActivity +} from '@/modules/activitystream/helpers/types' import { StreamActivity } from '@/modules/core/dbSchema' import { Roles } from '@/modules/core/helpers/mainConstants' +import { Knex } from 'knex' -export const getActivity = async ( - streamId: string, - start: Date, - end: Date, - filteredUser: string | null = null -): Promise => { - let query = StreamActivity.knex() - .where(StreamActivity.col.streamId, '=', streamId) - .whereBetween(StreamActivity.col.time, [start, end]) - if (filteredUser) query = query.andWhereNot(StreamActivity.col.userId, filteredUser) - return await query +const tables = { + streamActivity: (db: Knex) => + db(StreamActivity.name) } +export const getActivityFactory = + ({ db }: { db: Knex }) => + async ( + streamId: string, + start: Date, + end: Date, + filteredUser: string | null = null + ): Promise => { + let query = tables + .streamActivity(db) + .where(StreamActivity.col.streamId, '=', streamId) + .whereBetween(StreamActivity.col.time, [start, end]) + if (filteredUser) query = query.andWhereNot(StreamActivity.col.userId, filteredUser) + return await query + } + export const getActiveUserStreams = async ( start: Date, end: Date diff --git a/packages/server/modules/activitystream/services/summary.ts b/packages/server/modules/activitystream/services/summary.ts index e47eec8ab..5e0246796 100644 --- a/packages/server/modules/activitystream/services/summary.ts +++ b/packages/server/modules/activitystream/services/summary.ts @@ -1,5 +1,5 @@ import { - getActivity, + getActivityFactory, getActiveUserStreams, UserStreams } from '@/modules/activitystream/repositories' @@ -11,6 +11,7 @@ import { import { StreamRecord, UserRecord } from '@/modules/core/helpers/types' import { getUser } from '@/modules/core/repositories/users' import { getStream } from '@/modules/core/services/streams' +import { db } from '@/db/knex' export type StreamActivitySummary = { stream: StreamRecord | null @@ -33,7 +34,7 @@ export const createActivitySummary = async ( streamIds.map(async (streamId) => { return { stream: (await getStream({ streamId, userId })) ?? null, - activity: await getActivity(streamId, start, end, null) //userId is null for now, to not filter out any activity + activity: await getActivityFactory({ db })(streamId, start, end, null) //userId is null for now, to not filter out any activity } }) )