@@ -501,7 +501,7 @@ def parse(self: Parser) -> t.Optional[exp.Expression]:
501501
502502 expressions .append (self .expression (exp .Property , this = key , value = value ))
503503
504- if not self ._match (TokenType .COMMA ):
504+ if not self ._match (TokenType .COMMA , expression = expressions [ - 1 ] ):
505505 break
506506
507507 return self .expression (parser_type , expressions = expressions )
@@ -516,17 +516,26 @@ def parse(self: Parser) -> t.Optional[exp.Expression]:
516516}
517517
518518
519+ def _props_sql (self : Generator , expressions : t .List [exp .Expression ]) -> str :
520+ props = []
521+ size = len (expressions )
522+
523+ for i , prop in enumerate (expressions ):
524+ sql = self .indent (f"{ prop .name } { self .sql (prop , 'value' )} " )
525+
526+ if i < size - 1 :
527+ sql += ","
528+ props .append (self .maybe_comment (sql , expression = prop ))
529+
530+ return "\n " .join (props )
531+
532+
519533def _sqlmesh_ddl_sql (self : Generator , expression : Model | Audit | Metric , name : str ) -> str :
520- props = ",\n " .join (
521- self .indent (f"{ prop .name } { self .sql (prop , 'value' )} " ) for prop in expression .expressions
522- )
523- return "\n " .join ([f"{ name } (" , props , ")" ])
534+ return "\n " .join ([f"{ name } (" , _props_sql (self , expression .expressions ), ")" ])
524535
525536
526537def _model_kind_sql (self : Generator , expression : ModelKind ) -> str :
527- props = ",\n " .join (
528- self .indent (f"{ prop .this } { self .sql (prop , 'value' )} " ) for prop in expression .expressions
529- )
538+ props = _props_sql (self , expression .expressions )
530539 if props :
531540 return "\n " .join ([f"{ expression .this } (" , props , ")" ])
532541 return expression .name .upper ()
0 commit comments