chore(activitystream): getActivity refactor

This commit is contained in:
Alessandro Magionami 2024-09-17 18:16:13 +02:00
Родитель b03a8c38bd
Коммит c3c8b8b10f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: EC367516F896CBA4
3 изменённых файлов: 35 добавлений и 14 удалений

Просмотреть файл

@ -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
}
})
)