37ede3b1b2
* 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
30 lines
1019 B
TypeScript
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'])
|
|
}
|