diff --git a/packages/runtime/src/cross/model-meta.ts b/packages/runtime/src/cross/model-meta.ts index efa4d1a03..a90b20685 100644 --- a/packages/runtime/src/cross/model-meta.ts +++ b/packages/runtime/src/cross/model-meta.ts @@ -118,7 +118,7 @@ export type ModelInfo = { name: string; /** - * Base types + * Base types (not including abstract base models). */ baseTypes?: string[]; diff --git a/packages/runtime/src/cross/query-analyzer.ts b/packages/runtime/src/cross/query-analyzer.ts index bf501f020..9277688d5 100644 --- a/packages/runtime/src/cross/query-analyzer.ts +++ b/packages/runtime/src/cross/query-analyzer.ts @@ -4,6 +4,7 @@ import type { ModelMeta } from './model-meta'; import { NestedReadVisitor } from './nested-read-visitor'; import { NestedWriteVisitor } from './nested-write-visitor'; import type { PrismaWriteActionType } from './types'; +import { getModelInfo } from './utils'; /** * Gets models read (including nested ones) given a query args. @@ -71,6 +72,11 @@ export async function getMutatedModels( await visitor.visit(model, operation, mutationArgs); } + // include delegate base models recursively + result.forEach((m) => { + getBaseRecursively(m, modelMeta, result); + }); + return [...result]; } @@ -92,3 +98,13 @@ function collectDeleteCascades(model: string, modelMeta: ModelMeta, result: Set< collectDeleteCascades(m, modelMeta, result, visited); }); } + +function getBaseRecursively(model: string, modelMeta: ModelMeta, result: Set) { + const bases = getModelInfo(modelMeta, model)?.baseTypes; + if (bases) { + bases.forEach((base) => { + result.add(base); + getBaseRecursively(base, modelMeta, result); + }); + } +} diff --git a/packages/runtime/src/enhancements/create-enhancement.ts b/packages/runtime/src/enhancements/create-enhancement.ts index 1b9796970..be2fc4579 100644 --- a/packages/runtime/src/enhancements/create-enhancement.ts +++ b/packages/runtime/src/enhancements/create-enhancement.ts @@ -5,7 +5,6 @@ import { isDelegateModel, type ModelMeta } from '../cross'; import type { AuthUser } from '../types'; import { withDefaultAuth } from './default-auth'; import { withDelegate } from './delegate'; -import { Logger } from './logger'; import { withOmit } from './omit'; import { withPassword } from './password'; import { withPolicy } from './policy'; @@ -130,9 +129,6 @@ export function createEnhancement( ); } - const logger = new Logger(prisma); - logger.info(`Enabled ZenStack enhancements: ${options.kinds?.join(', ')}`); - let result = prisma; if (