Merge pull request #2947 from specklesystems/fabians/accessreq-ioc-10
chore(server): accessrequests IoC 10 - getPendingStreamRequestsFactory
This commit is contained in:
@@ -27,6 +27,11 @@ export type CreateNewRequest = <
|
||||
input: AccessRecordInput<T, I>
|
||||
) => Promise<ServerAccessRequestRecord<T, I>>
|
||||
|
||||
export type GetPendingAccessRequests = <T extends AccessRequestType>(
|
||||
resourceType: T,
|
||||
resourceId: string
|
||||
) => Promise<ServerAccessRequestRecord<T, string>[]>
|
||||
|
||||
export type GetUserProjectAccessRequest = (
|
||||
userId: string,
|
||||
projectId: string
|
||||
@@ -41,3 +46,7 @@ export type RequestProjectAccess = (
|
||||
userId: string,
|
||||
projectId: string
|
||||
) => Promise<StreamAccessRequestRecord>
|
||||
|
||||
export type GetPendingProjectRequests = (
|
||||
projectId: string
|
||||
) => Promise<StreamAccessRequestRecord[]>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 <T extends AccessRequestType>(resourceType: T, resourceId: string) => {
|
||||
if (!resourceId || !resourceType) {
|
||||
throw new InvalidArgumentError('Resource type and ID missing')
|
||||
|
||||
@@ -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<StreamAccessRequestRecord[]> {
|
||||
return await getPendingAccessRequestsFactory({ db })(
|
||||
AccessRequestType.Stream,
|
||||
projectId
|
||||
)
|
||||
}
|
||||
export const getPendingProjectRequestsFactory =
|
||||
(deps: {
|
||||
getPendingAccessRequests: GetPendingAccessRequests
|
||||
}): GetPendingProjectRequests =>
|
||||
async (projectId: string): Promise<StreamAccessRequestRecord[]> => {
|
||||
return await deps.getPendingAccessRequests(AccessRequestType.Stream, projectId)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pending stream access requests
|
||||
*/
|
||||
export async function getPendingStreamRequests(
|
||||
streamId: string
|
||||
): Promise<StreamAccessRequestGraphQLReturn[]> {
|
||||
const reqs = await getPendingProjectRequests(streamId)
|
||||
return reqs.map(buildStreamAccessRequestGraphQLReturn)
|
||||
}
|
||||
export const getPendingStreamRequestsFactory =
|
||||
(deps: { getPendingProjectRequests: GetPendingProjectRequests }) =>
|
||||
async (streamId: string): Promise<StreamAccessRequestGraphQLReturn[]> => {
|
||||
const reqs = await deps.getPendingProjectRequests(streamId)
|
||||
return reqs.map(buildStreamAccessRequestGraphQLReturn)
|
||||
}
|
||||
|
||||
/**
|
||||
* Accept or decline a pending access request
|
||||
|
||||
Reference in New Issue
Block a user