@@ -275,7 +275,7 @@ export class PolicyHandler<Schema extends SchemaDef> extends OperationNodeTransf
275275 const updatedFroms : OperationNode [ ] = [ ] ;
276276 for ( const table of result . from ! . froms ) {
277277 const extractedTable = this . extractTableName ( table ) ;
278- if ( extractedTable ?. model ) {
278+ if ( extractedTable ?. model && QueryUtils . getModel ( this . client . $schema , extractedTable . model ) ) {
279279 const { query } = this . createSelectAllFieldsWithPolicies (
280280 extractedTable . model ,
281281 extractedTable . alias ,
@@ -315,6 +315,11 @@ export class PolicyHandler<Schema extends SchemaDef> extends OperationNodeTransf
315315 // reject non-existing model
316316 this . tryRejectNonexistentModel ( table . model ) ;
317317
318+ if ( ! QueryUtils . getModel ( this . client . $schema , table . model ) ) {
319+ // not a defined model, could be m2m join table, keep as is
320+ return super . transformJoin ( node ) ;
321+ }
322+
318323 const result = super . transformJoin ( node ) ;
319324
320325 const { hasPolicies, query : nestedQuery } = this . createSelectAllFieldsWithPolicies (
@@ -555,7 +560,10 @@ export class PolicyHandler<Schema extends SchemaDef> extends OperationNodeTransf
555560 }
556561
557562 private hasFieldLevelPolicies ( model : string ) : unknown {
558- const modelDef = QueryUtils . requireModel ( this . client . $schema , model ) ;
563+ const modelDef = QueryUtils . getModel ( this . client . $schema , model ) ;
564+ if ( ! modelDef ) {
565+ return false ;
566+ }
559567 return Object . values ( modelDef . fields ) . some ( ( fieldDef ) =>
560568 fieldDef . attributes ?. some ( ( attr ) => [ '@allow' , '@deny' ] . includes ( attr . name ) ) ,
561569 ) ;
0 commit comments