chore(activitystream): getActivity refactor

This commit is contained in:
Alessandro Magionami
2024-09-17 18:16:13 +02:00
parent b03a8c38bd
commit c3c8b8b10f
3 changed files with 35 additions and 14 deletions
@@ -0,0 +1,8 @@
import { StreamScopeActivity } from '@/modules/activitystream/helpers/types'
export type GetActivity = (
streamId: string,
start: Date,
end: Date,
filteredUser: string | null
) => Promise<StreamScopeActivity[]>
@@ -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<StreamScopeActivity[]> => {
let query = StreamActivity.knex<StreamScopeActivity[]>()
.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: <T extends object = StreamActivityRecord>(db: Knex) =>
db<T>(StreamActivity.name)
}
export const getActivityFactory =
({ db }: { db: Knex }) =>
async (
streamId: string,
start: Date,
end: Date,
filteredUser: string | null = null
): Promise<StreamScopeActivity[]> => {
let query = tables
.streamActivity<StreamScopeActivity>(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
@@ -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
}
})
)