diff --git a/packages/server/modules/accessrequests/domain/operations.ts b/packages/server/modules/accessrequests/domain/operations.ts index 592a418ba..32b573666 100644 --- a/packages/server/modules/accessrequests/domain/operations.ts +++ b/packages/server/modules/accessrequests/domain/operations.ts @@ -27,6 +27,11 @@ export type CreateNewRequest = < input: AccessRecordInput ) => Promise> +export type GetPendingAccessRequests = ( + resourceType: T, + resourceId: string +) => Promise[]> + export type GetUserProjectAccessRequest = ( userId: string, projectId: string @@ -41,3 +46,7 @@ export type RequestProjectAccess = ( userId: string, projectId: string ) => Promise + +export type GetPendingProjectRequests = ( + projectId: string +) => Promise diff --git a/packages/server/modules/accessrequests/graph/resolvers/index.ts b/packages/server/modules/accessrequests/graph/resolvers/index.ts index 4a83669ff..43e09bb52 100644 --- a/packages/server/modules/accessrequests/graph/resolvers/index.ts +++ b/packages/server/modules/accessrequests/graph/resolvers/index.ts @@ -3,11 +3,12 @@ import { AccessRequestsEmitter } from '@/modules/accessrequests/events/emitter' import { AccessRequestType, createNewRequestFactory, + getPendingAccessRequestsFactory, getUsersPendingAccessRequestFactory } from '@/modules/accessrequests/repositories' import { - getPendingProjectRequests, - getPendingStreamRequests, + getPendingProjectRequestsFactory, + getPendingStreamRequestsFactory, getUserProjectAccessRequestFactory, getUserStreamAccessRequestFactory, processPendingProjectRequest, @@ -41,6 +42,14 @@ const requestStreamAccess = requestStreamAccessFactory({ requestProjectAccess }) +const getPendingProjectRequests = getPendingProjectRequestsFactory({ + getPendingAccessRequests: getPendingAccessRequestsFactory({ db }) +}) + +const getPendingStreamRequests = getPendingStreamRequestsFactory({ + getPendingProjectRequests +}) + const resolvers: Resolvers = { Mutation: { async streamAccessRequestUse(_parent, args, ctx) { diff --git a/packages/server/modules/accessrequests/repositories/index.ts b/packages/server/modules/accessrequests/repositories/index.ts index 1784f6ed4..6ca96527d 100644 --- a/packages/server/modules/accessrequests/repositories/index.ts +++ b/packages/server/modules/accessrequests/repositories/index.ts @@ -1,6 +1,7 @@ import { AccessRecordInput, CreateNewRequest, + GetPendingAccessRequests, GetUsersPendingAccessRequest } from '@/modules/accessrequests/domain/operations' import { ServerAccessRequests, Streams } from '@/modules/core/dbSchema' @@ -70,7 +71,7 @@ const baseQueryFactory = export const generateId = () => cryptoRandomString({ length: 10 }) export const getPendingAccessRequestsFactory = - (deps: { db: Knex }) => + (deps: { db: Knex }): GetPendingAccessRequests => async (resourceType: T, resourceId: string) => { if (!resourceId || !resourceType) { throw new InvalidArgumentError('Resource type and ID missing') diff --git a/packages/server/modules/accessrequests/services/stream.ts b/packages/server/modules/accessrequests/services/stream.ts index e8add5435..891080f61 100644 --- a/packages/server/modules/accessrequests/services/stream.ts +++ b/packages/server/modules/accessrequests/services/stream.ts @@ -9,7 +9,6 @@ import { deleteRequestByIdFactory, generateId, getPendingAccessRequestFactory, - getPendingAccessRequestsFactory, ServerAccessRequestRecord, StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' @@ -26,6 +25,8 @@ import { MaybeNullOrUndefined, Nullable } from '@/modules/shared/helpers/typeHel import { db } from '@/db/knex' import { CreateNewRequest, + GetPendingAccessRequests, + GetPendingProjectRequests, GetUserProjectAccessRequest, GetUsersPendingAccessRequest, GetUserStreamAccessRequest, @@ -137,24 +138,23 @@ export const requestStreamAccessFactory = /** * Get pending project access requests */ -export async function getPendingProjectRequests( - projectId: string -): Promise { - return await getPendingAccessRequestsFactory({ db })( - AccessRequestType.Stream, - projectId - ) -} +export const getPendingProjectRequestsFactory = + (deps: { + getPendingAccessRequests: GetPendingAccessRequests + }): GetPendingProjectRequests => + async (projectId: string): Promise => { + return await deps.getPendingAccessRequests(AccessRequestType.Stream, projectId) + } /** * Get pending stream access requests */ -export async function getPendingStreamRequests( - streamId: string -): Promise { - const reqs = await getPendingProjectRequests(streamId) - return reqs.map(buildStreamAccessRequestGraphQLReturn) -} +export const getPendingStreamRequestsFactory = + (deps: { getPendingProjectRequests: GetPendingProjectRequests }) => + async (streamId: string): Promise => { + const reqs = await deps.getPendingProjectRequests(streamId) + return reqs.map(buildStreamAccessRequestGraphQLReturn) + } /** * Accept or decline a pending access request