172 lines
4.5 KiB
TypeScript
172 lines
4.5 KiB
TypeScript
import UserModelHelper from "./UserModelHelper";
|
|
|
|
const includeParentRows = {
|
|
parent: {
|
|
include: {
|
|
createdByUser: { select: UserModelHelper.selectSimpleUserProperties },
|
|
createdByApiKey: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
};
|
|
const includeChildRowsNested = {
|
|
child: {
|
|
include: {
|
|
createdByUser: { select: UserModelHelper.selectSimpleUserProperties },
|
|
createdByApiKey: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
parentRows: {
|
|
include: {
|
|
parent: {
|
|
include: {
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
childRows: {
|
|
include: {
|
|
child: {
|
|
include: {
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
const includeRowDetails = {
|
|
...UserModelHelper.includeSimpleCreatedByUser,
|
|
createdByApiKey: true,
|
|
tenant: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
tags: { include: { tag: true } },
|
|
parentRows: {
|
|
include: includeParentRows,
|
|
},
|
|
childRows: {
|
|
include: includeChildRowsNested,
|
|
},
|
|
permissions: true,
|
|
sampleCustomEntity: true,
|
|
};
|
|
|
|
const includeParentRowsNested = {
|
|
parent: {
|
|
include: {
|
|
createdByUser: { select: UserModelHelper.selectSimpleUserProperties },
|
|
createdByApiKey: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
parentRows: {
|
|
include: {
|
|
parent: {
|
|
include: {
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
childRows: {
|
|
include: {
|
|
child: {
|
|
include: {
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
const includeRowDetailsNested = {
|
|
...UserModelHelper.includeSimpleCreatedByUser,
|
|
createdByApiKey: true,
|
|
tenant: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
tags: { include: { tag: true } },
|
|
parentRows: {
|
|
include: includeParentRowsNested,
|
|
},
|
|
childRows: {
|
|
include: includeChildRowsNested,
|
|
},
|
|
permissions: true,
|
|
sampleCustomEntity: true,
|
|
};
|
|
|
|
function createScopedNestedParentRowsInclude(tenantId: string | null) {
|
|
return {
|
|
where: { parent: { tenantId, deletedAt: null } },
|
|
include: {
|
|
parent: {
|
|
include: {
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
},
|
|
} as const;
|
|
}
|
|
|
|
function createScopedNestedChildRowsInclude(tenantId: string | null) {
|
|
return {
|
|
where: { child: { tenantId, deletedAt: null } },
|
|
include: {
|
|
child: {
|
|
include: {
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
},
|
|
},
|
|
},
|
|
} as const;
|
|
}
|
|
|
|
function createScopedIncludeRowDetails(tenantId: string | null) {
|
|
const scopedNestedParentRows = createScopedNestedParentRowsInclude(tenantId);
|
|
const scopedNestedChildRows = createScopedNestedChildRowsInclude(tenantId);
|
|
|
|
return {
|
|
...UserModelHelper.includeSimpleCreatedByUser,
|
|
createdByApiKey: true,
|
|
tenant: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
tags: { include: { tag: true } },
|
|
parentRows: {
|
|
where: { parent: { tenantId, deletedAt: null } },
|
|
include: {
|
|
parent: {
|
|
include: {
|
|
createdByUser: { select: UserModelHelper.selectSimpleUserProperties },
|
|
createdByApiKey: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
parentRows: scopedNestedParentRows,
|
|
childRows: scopedNestedChildRows,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
childRows: {
|
|
where: { child: { tenantId, deletedAt: null } },
|
|
include: {
|
|
child: {
|
|
include: {
|
|
createdByUser: { select: UserModelHelper.selectSimpleUserProperties },
|
|
createdByApiKey: true,
|
|
values: { include: { media: true, multiple: true, range: true } },
|
|
parentRows: scopedNestedParentRows,
|
|
childRows: scopedNestedChildRows,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
permissions: true,
|
|
sampleCustomEntity: true,
|
|
} as const;
|
|
}
|
|
|
|
export default {
|
|
includeRowDetails,
|
|
includeRowDetailsNested,
|
|
createScopedIncludeRowDetails,
|
|
};
|