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