Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/utils/helpers/models/RowModelHelper.ts
T

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,
};