refactor: move include head to opts

This commit is contained in:
Methapon2001 2024-12-06 15:44:52 +07:00
parent 1124a040c8
commit 57397cc894
2 changed files with 8 additions and 4 deletions

View file

@ -157,7 +157,7 @@ export class BranchController extends Controller {
async getStats(@Request() req: RequestWithUser, @Query() headOfficeId?: string) { async getStats(@Request() req: RequestWithUser, @Query() headOfficeId?: string) {
const where = { const where = {
AND: { AND: {
OR: permissionCond(req.user, true), OR: permissionCond(req.user, { alwaysIncludeHead: true }),
}, },
}; };
@ -255,7 +255,7 @@ export class BranchController extends Controller {
...filterStatus(status), ...filterStatus(status),
headOfficeId: headOfficeId ?? (filter === "head" || tree ? null : undefined), headOfficeId: headOfficeId ?? (filter === "head" || tree ? null : undefined),
NOT: { headOfficeId: filter === "sub" && !headOfficeId ? null : undefined }, NOT: { headOfficeId: filter === "sub" && !headOfficeId ? null : undefined },
OR: permissionCond(req.user, withHead), OR: permissionCond(req.user, { alwaysIncludeHead: withHead }),
}, },
OR: queryOrNot<Prisma.BranchWhereInput[]>(query, [ OR: queryOrNot<Prisma.BranchWhereInput[]>(query, [
{ code: { contains: query, mode: "insensitive" } }, { code: { contains: query, mode: "insensitive" } },

View file

@ -1,3 +1,4 @@
import { Prisma } from "@prisma/client";
import prisma from "../db"; import prisma from "../db";
import HttpError from "../interfaces/http-error"; import HttpError from "../interfaces/http-error";
import HttpStatus from "../interfaces/http-status"; import HttpStatus from "../interfaces/http-status";
@ -18,7 +19,10 @@ export function branchRelationPermInclude(user: RequestWithUser["user"]) {
} }
export function createPermCondition(globalAllow: (user: RequestWithUser["user"]) => boolean) { export function createPermCondition(globalAllow: (user: RequestWithUser["user"]) => boolean) {
return (user: RequestWithUser["user"], alwaysIncludeHead?: boolean) => return (
user: RequestWithUser["user"],
opts?: { alwaysIncludeHead?: boolean; includeInActive?: boolean },
) =>
isSystem(user) isSystem(user)
? undefined ? undefined
: [ : [
@ -27,7 +31,7 @@ export function createPermCondition(globalAllow: (user: RequestWithUser["user"])
}, },
{ {
branch: branch:
alwaysIncludeHead || globalAllow(user) opts?.alwaysIncludeHead || globalAllow(user)
? { some: { user: { some: { userId: user.sub } } } } ? { some: { user: { some: { userId: user.sub } } } }
: undefined, : undefined,
}, },