From 626ad987e608e37c47e28797a13c15b39427657d Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Mon, 22 Sep 2025 18:29:41 -0700 Subject: [PATCH] fix(policy): relation field resolution issue --- .../runtime/src/plugins/policy/expression-transformer.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/runtime/src/plugins/policy/expression-transformer.ts b/packages/runtime/src/plugins/policy/expression-transformer.ts index 80fa4b09..414b72b4 100644 --- a/packages/runtime/src/plugins/policy/expression-transformer.ts +++ b/packages/runtime/src/plugins/policy/expression-transformer.ts @@ -225,13 +225,17 @@ export class ExpressionTransformer { let normalizedLeft: Expression = expr.left; if (this.isRelationField(expr.left, context.model)) { invariant(ExpressionUtils.isNull(expr.right), 'only null comparison is supported for relation field'); - const idFields = requireIdFields(this.schema, context.model); + const leftRelDef = this.getFieldDefFromFieldRef(expr.left, context.model); + invariant(leftRelDef, 'failed to get relation field definition'); + const idFields = requireIdFields(this.schema, leftRelDef.type); normalizedLeft = this.makeOrAppendMember(normalizedLeft, idFields[0]!); } let normalizedRight: Expression = expr.right; if (this.isRelationField(expr.right, context.model)) { invariant(ExpressionUtils.isNull(expr.left), 'only null comparison is supported for relation field'); - const idFields = requireIdFields(this.schema, context.model); + const rightRelDef = this.getFieldDefFromFieldRef(expr.right, context.model); + invariant(rightRelDef, 'failed to get relation field definition'); + const idFields = requireIdFields(this.schema, rightRelDef.type); normalizedRight = this.makeOrAppendMember(normalizedRight, idFields[0]!); } return { normalizedLeft, normalizedRight };