diff --git a/packages/schema/src/plugins/enhancer/policy/utils.ts b/packages/schema/src/plugins/enhancer/policy/utils.ts index 93212e386..fee0cc15a 100644 --- a/packages/schema/src/plugins/enhancer/policy/utils.ts +++ b/packages/schema/src/plugins/enhancer/policy/utils.ts @@ -8,6 +8,7 @@ import { getAttributeArg, getAuthDecl, getDataModelAndTypeDefs, + getDataModels, getEntityCheckerFunctionName, getIdFields, getLiteral, @@ -537,16 +538,19 @@ export function generateNormalizedAuthRef( * Check if the given enum is referenced in the model */ export function isEnumReferenced(model: Model, decl: Enum): unknown { - return streamAllContents(model).some((node) => { - if (isDataModelField(node) && node.type.reference?.ref === decl) { - // referenced as field type - return true; - } - if (isEnumFieldReference(node) && node.target.ref?.$container === decl) { - // enum field is referenced - return true; - } - return false; + const dataModels = getDataModels(model); + return dataModels.some((dm) => { + return streamAllContents(dm).some((node) => { + if (isDataModelField(node) && node.type.reference?.ref === decl) { + // referenced as field type + return true; + } + if (isEnumFieldReference(node) && node.target.ref?.$container === decl) { + // enum field is referenced + return true; + } + return false; + }); }); } diff --git a/tests/regression/tests/issue-1835.test.ts b/tests/regression/tests/issue-1835.test.ts new file mode 100644 index 000000000..f29efcbbb --- /dev/null +++ b/tests/regression/tests/issue-1835.test.ts @@ -0,0 +1,28 @@ +import { loadSchema } from '@zenstackhq/testtools'; + +describe('issue 1835', () => { + it('regression', async () => { + await loadSchema( + ` + enum Enum { + SOME_VALUE + ANOTHER_VALUE + } + + model Model { + id String @id @default(cuid()) + value Enum + @@ignore + } + + model AnotherModel { + id String @id @default(cuid()) + } + `, + { + provider: 'postgresql', + pushDb: false, + } + ); + }); +});