fix(workspaces): add filtering to workspace team query (#2586)

* chore(workspaces): add some tests for new filters

* fix(workspaces): args style
This commit is contained in:
Chuck Driesler
2024-08-08 06:15:55 +01:00
committed by GitHub
parent 72017c3f2f
commit 7bb40134eb
9 changed files with 179 additions and 45 deletions
@@ -168,9 +168,7 @@ export const upsertWorkspaceRoleFactory =
export const getWorkspaceCollaboratorsFactory =
({ db }: { db: Knex }): GetWorkspaceCollaborators =>
async (params: { workspaceId: string; role?: WorkspaceRoles }) => {
const { workspaceId, role } = params
async ({ workspaceId, filter = {} }) => {
const query = DbWorkspaceAcl.knex(db)
.select<Array<UserWithRole & { workspaceRole: WorkspaceRoles }>>([
...Users.cols,
@@ -182,6 +180,14 @@ export const getWorkspaceCollaboratorsFactory =
.innerJoin(ServerAcl.name, ServerAcl.col.userId, Users.col.id)
.groupBy(Users.col.id, DbWorkspaceAcl.col.role)
const { search, role } = filter || {}
if (search) {
query
.where(Users.col.name, 'ILIKE', `%${search}%`)
.orWhere(Users.col.email, 'ILIKE', `%${search}%`)
}
if (role) {
query.andWhere(DbWorkspaceAcl.col.role, role)
}