@@ -19,6 +19,7 @@ import {
1919} from 'kysely' ;
2020import type { FieldDef , ModelDef , SchemaDef } from '../../schema' ;
2121import { getModel , requireModel } from '../query-utils' ;
22+ import { stripAlias } from './kysely-utils' ;
2223
2324type Scope = {
2425 model : string ;
@@ -94,7 +95,7 @@ export class QueryNameMapper extends OperationNodeTransformer {
9495 }
9596
9697 protected override transformJoin ( node : JoinNode ) {
97- const { alias, node : innerNode } = this . stripAlias ( node . table ) ;
98+ const { alias, node : innerNode } = stripAlias ( node . table ) ;
9899 if ( TableNode . is ( innerNode ! ) ) {
99100 const modelName = innerNode . table . identifier . name ;
100101 if ( this . hasMappedColumns ( modelName ) ) {
@@ -150,7 +151,11 @@ export class QueryNameMapper extends OperationNodeTransformer {
150151 }
151152
152153 protected override transformUpdateQuery ( node : UpdateQueryNode ) {
153- const { alias, node : innerTable } = this . stripAlias ( node . table ) ;
154+ if ( ! node . table ) {
155+ return super . transformUpdateQuery ( node ) ;
156+ }
157+
158+ const { alias, node : innerTable } = stripAlias ( node . table ) ;
154159 if ( ! innerTable || ! TableNode . is ( innerTable ) ) {
155160 return super . transformUpdateQuery ( node ) ;
156161 }
@@ -170,7 +175,7 @@ export class QueryNameMapper extends OperationNodeTransformer {
170175
171176 // process name mapping in each "from"
172177 const froms = node . from . froms . map ( ( from ) => {
173- const { alias, node : innerNode } = this . stripAlias ( from ) ;
178+ const { alias, node : innerNode } = stripAlias ( from ) ;
174179 if ( TableNode . is ( innerNode ! ) ) {
175180 // map table name
176181 return this . wrapAlias ( this . processTableRef ( innerNode ) , alias ) ;
@@ -289,17 +294,6 @@ export class QueryNameMapper extends OperationNodeTransformer {
289294 }
290295 }
291296
292- private stripAlias ( node : OperationNode | undefined ) {
293- if ( ! node ) {
294- return { alias : undefined , node } ;
295- }
296- if ( AliasNode . is ( node ) ) {
297- invariant ( IdentifierNode . is ( node . alias ) , 'Expected identifier as alias' ) ;
298- return { alias : node . alias . name , node : node . node } ;
299- }
300- return { alias : undefined , node } ;
301- }
302-
303297 private hasMappedColumns ( modelName : string ) {
304298 return [ ...this . fieldToColumnMap . keys ( ) ] . some ( ( key ) => key . startsWith ( modelName + '.' ) ) ;
305299 }
@@ -310,7 +304,7 @@ export class QueryNameMapper extends OperationNodeTransformer {
310304 }
311305 return node . froms
312306 . map ( ( from ) => {
313- const { alias, node : innerNode } = this . stripAlias ( from ) ;
307+ const { alias, node : innerNode } = stripAlias ( from ) ;
314308 if ( innerNode && TableNode . is ( innerNode ) ) {
315309 return { model : innerNode . table . identifier . name , alias, namesMapped } ;
316310 } else {
@@ -325,7 +319,7 @@ export class QueryNameMapper extends OperationNodeTransformer {
325319 return {
326320 ...super . transformFrom ( node ) ,
327321 froms : node . froms . map ( ( from ) => {
328- const { alias, node : innerNode } = this . stripAlias ( from ) ;
322+ const { alias, node : innerNode } = stripAlias ( from ) ;
329323 if ( ! innerNode ) {
330324 return super . transformNode ( from ) ;
331325 }
0 commit comments