Files
speckle-server/packages/server/modules/workspaces/repositories/workspaceJoinRequests.ts
T
Alessandro Magionami 37ede3b1b2 Alessandro/web 2360 request to join workspace (#3799)
* feat(workspaces): request to join workspace mutation

* feat(workspaces): random email in test

* feat(workspaces): update email

* feat(workspaces): code review changes

* chore(workspaces): fix tests
2025-01-14 12:49:21 +01:00

30 lines
1019 B
TypeScript

import {
CreateWorkspaceJoinRequest,
UpdateWorkspaceJoinRequestStatus
} from '@/modules/workspaces/domain/operations'
import { WorkspaceJoinRequest } from '@/modules/workspacesCore/domain/types'
import { WorkspaceJoinRequests } from '@/modules/workspacesCore/helpers/db'
import { Knex } from 'knex'
const tables = {
workspaceJoinRequests: (db: Knex) =>
db<WorkspaceJoinRequest>(WorkspaceJoinRequests.name)
}
export const createWorkspaceJoinRequestFactory =
({ db }: { db: Knex }): CreateWorkspaceJoinRequest =>
async ({ workspaceJoinRequest }) => {
const res = await tables.workspaceJoinRequests(db).insert(workspaceJoinRequest, '*')
return res[0]
}
export const updateWorkspaceJoinRequestStatusFactory =
({ db }: { db: Knex }): UpdateWorkspaceJoinRequestStatus =>
async ({ workspaceId, userId, status }) => {
return await tables
.workspaceJoinRequests(db)
.insert({ workspaceId, userId, status })
.onConflict(['workspaceId', 'userId'])
.merge(['status'])
}