@itwin/ecsql-common 5.1.1 → 5.1.3-experimental.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/ECSqlAst.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSqlAst.js","sourceRoot":"","sources":["../../src/ECSqlAst.ts"],"names":[],"mappings":"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","sourcesContent":["import { asInstanceOf, Constructor, isInstanceOf } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Id returned by native code\r\n * @internal\r\n */\r\nenum NativeExpIds {\r\n AllOrAny = \"AllOrAnyExp\", /** Not supported or working */\r\n Assignment = \"AssignmentExp\",\r\n BetweenRangeValue = \"BetweenRangeValueExp\",\r\n BinaryBoolean = \"BinaryBooleanExp\",\r\n BinaryValue = \"BinaryValueExp\",\r\n BooleanFactor = \"BooleanFactorExp\",\r\n Cast = \"CastExp\",\r\n ClassName = \"ClassNameExp\",\r\n CommonTable = \"CommonTableExp\",\r\n CommonTableBlock = \"CommonTableBlockExp\",\r\n CommonTableBlockName = \"CommonTableBlockNameExp\",\r\n CrossJoin = \"CrossJoinExp\",\r\n DeleteStatement = \"DeleteStatementExp\",\r\n DerivedProperty = \"DerivedPropertyExp\",\r\n FunctionCall = \"FunctionCallExp\",\r\n IIF = \"IIFExp\",\r\n InsertStatement = \"InsertStatementExp\",\r\n LikeRhsValue = \"LikeRhsValueExp\",\r\n LimitOffset = \"LimitOffsetExp\",\r\n LiteralValue = \"LiteralValueExp\",\r\n MemberFunctionCall = \"MemberFunctionCallExp\",\r\n NaturalJoin = \"NaturalJoinExp\",\r\n Options = \"OptionsExp\",\r\n OrderBySpec = \"OrderBySpecExp\",\r\n Parameter = \"ParameterExp\",\r\n PropertyName = \"PropertyNameExp\",\r\n QualifiedJoin = \"QualifiedJoinExp\",\r\n RowConstructor = \"RowConstructor\",\r\n SearchCaseValue = \"SearchCaseValueExp\",\r\n SelectStatement = \"SelectStatementExp\",\r\n SingleSelectStatement = \"SingleSelectStatementExp\",\r\n Subquery = \"SubqueryExp\",\r\n SubqueryRef = \"SubqueryRefExp\",\r\n SubqueryTest = \"SubqueryTestExp\",\r\n TableValuedFunction = \"TableValuedFunctionExp\",\r\n UnaryValue = \"UnaryValueExp\",\r\n UpdateStatement = \"UpdateStatementExp\",\r\n UsingRelationshipJoinExp = \"UsingRelationshipJoinExp\",\r\n NavValueCreationFunc = \"NavValueCreationFuncExp\",\r\n}\r\n/**\r\n * Type of literal value.\r\n * @alpha\r\n */\r\nexport enum LiteralValueType {\r\n Null = \"NULL\",\r\n String = \"STRING\",\r\n Date = \"DATE\",\r\n Time = \"TIME\",\r\n Timestamp = \"TIMESTAMP\",\r\n Raw = \"RAW\"\r\n}\r\n/**\r\n * Sort direction specified by ORDER BY spec @see [[OrderBySpecExpr]]\r\n * @alpha\r\n */\r\nexport type FirstOrLast = \"FIRST\" | \"LAST\";\r\n\r\n/**\r\n * Sort direction specified by ORDER BY spec @see [[OrderBySpecExpr]]\r\n * @alpha\r\n */\r\nexport type SortDirection = \"ASC\" | \"DESC\";\r\n\r\n/**\r\n * Describe how SELECT result is combined with another SELECT in compound select statement @see [[NextSelect]] @see [[SelectStatementExp]]\r\n * @alpha\r\n */\r\nexport type CompoundSelectOp = \"UNION\" | \"UNION ALL\" | \"INTERSECT\" | \"EXCEPT\";\r\n\r\n/**\r\n * Test subquery result. @see [[SubqueryTest]]\r\n * @alpha\r\n */\r\nexport type SubqueryTestOp = \"EXISTS\";\r\n\r\n/**\r\n * Describe JOIN/USING relationship direction when relationship is of time 1:1. @see [[UsingRelationshipJoin]]\r\n * @alpha\r\n */\r\nexport type JoinDirection = \"FORWARD\" | \"BACKWARD\";\r\n\r\n/**\r\n * Join specification of a Qualified join. @see [[QualifiedJoinExpr]]\r\n * @alpha\r\n */\r\nexport type JoinSpec = BooleanExpr | string[] | undefined;\r\n\r\n/**\r\n * Qualified JOIN type @see [[QualifiedJoinExpr]]\r\n * @alpha\r\n */\r\nexport enum JoinType {\r\n LeftOuter = \"LEFT OUTER JOIN\",\r\n RightOuter = \"RIGHT OUTER JOIN\",\r\n FullOuter = \"FULL OUTER JOIN\",\r\n Inner = \"INNER JOIN\",\r\n}\r\n\r\n/**\r\n * Unary operator for @see [[ValueExpr]].\r\n * @alpha\r\n */\r\nexport type UnaryValueOp = \"-\" | \"+\" | \"~\";\r\n\r\n/**\r\n * Unary operator for @see [[BooleanExpr]]\r\n * @alpha\r\n */\r\nexport type UnaryBooleanOp = \"NOT\";\r\n\r\n/**\r\n * Binary boolean operators used by @see [[BinaryBooleanExpr]]\r\n * @alpha\r\n */\r\nexport type BinaryBooleanOp = \"AND\" | \"OR\" | \"=\" | \">=\" | \">\" | \"<=\" | \"<\" | \"<>\" | \"!=\";\r\n\r\n/**\r\n * Binary value operators used by @see [[BinaryValueExpr]]\r\n * @alpha\r\n */\r\nexport type BinaryValueOp = \"&\" | \"|\" | \"<<\" | \"||\" | \"/\" | \"-\" | \"*\" | \"+\" | \"%\";\r\n\r\n/**\r\n * Disqualify term in ECSQL so query planner does not try to find index for it. @see [[ClassNameExpr]]\r\n * @alpha\r\n */\r\nexport type DisqualifyOp = \"+\";\r\n\r\n/**\r\n * Optional recursive keyword for common table expressions @see [[CteExpr]]\r\n * @alpha\r\n */\r\nexport type RecursiveCte = \"RECURSIVE\";\r\n\r\n/**\r\n * Polymorphic constraint for @see [[ClassNameExpr]]\r\n * @alpha\r\n */\r\nexport type AllOrAnyOp = \"ONLY\" | \"ALL\";\r\n\r\n/**\r\n * Filter rows in select clause or aggregate functions @see [[FuncCallExpr]] and @see [[SelectExpr]]\r\n * @alpha\r\n */\r\nexport type AllOrDistinctOp = \"DISTINCT\" | \"ALL\";\r\n\r\n/**\r\n * Return by native code\r\n * @alpha\r\n */\r\nexport interface NativeECSqlParseNode {\r\n [key: string]: any;\r\n}\r\n\r\n/**\r\n * Return by native code\r\n * @alpha\r\n */\r\nexport interface NativeECSqlParseNodeProvider {\r\n parseECSql: (ecsql: string) => Promise<NativeECSqlParseNode>;\r\n}\r\n\r\n/**\r\n * ECSql expr type supported @see [[Expr]]\r\n * @alpha\r\n */\r\nexport enum ExprType {\r\n Literal = \"Literal\",\r\n Unary = \"Unary\",\r\n Parameter = \"Parameter\",\r\n Cast = \"Cast\",\r\n BinaryValue = \"BinaryValue\",\r\n SearchCase = \"SearchCase\",\r\n IIF = \"IIF\",\r\n FuncCall = \"FuncCall\",\r\n PropertyName = \"PropertyName\",\r\n Subquery = \"Subquery\",\r\n\r\n Between = \"Between\",\r\n // Match = \"Match\",\r\n Like = \"Like\",\r\n In = \"In\",\r\n Not = \"Not\",\r\n IsOfType = \"IsOfType\",\r\n IsNull = \"IsNull\",\r\n BinaryBoolean = \"BinaryBoolean\",\r\n SubqueryTest = \"SubqueryTest\",\r\n\r\n UsingRelationshipJoin = \"UsingRelationshipJoin\",\r\n QualifiedJoin = \"QualifiedJoin\",\r\n SubqueryRef = \"SubqueryRef\",\r\n CteBlockRef = \"CteBlockRef\",\r\n ClassName = \"ClassName\",\r\n TableValuedFunc = \"TableValuedFunc\",\r\n\r\n DerivedProperty = \"DerivedProperty\",\r\n SetClause = \"SetClause\",\r\n Select = \"Select\",\r\n ECSqlOptionsClause = \"ECSqlOptions\",\r\n CteBlock = \"CteBlock\",\r\n MemberFuncCall = \"MemberFuncCall\",\r\n\r\n Cte = \"Cte\",\r\n UpdateStatement = \"UpdateStatement\",\r\n InsertStatement = \"InsertStatement\",\r\n DeleteStatement = \"DeleteStatement\",\r\n SelectStatement = \"SelectStatement\",\r\n SelectionClause = \"SelectionClause\",\r\n\r\n WhereClause = \"WhereClause\",\r\n GroupByClause = \"GroupByClause\",\r\n HavingClause = \"HavingCluase\",\r\n FromClause = \"FromClause\",\r\n OrderByClause = \"OrderByClause\",\r\n OrderBySpec = \"OrderBySpec\",\r\n LimitClause = \"LimitClause\",\r\n Assignment = \"Assignment\",\r\n\r\n NavValueCreationFunc = \"NavValueCreationFunc\"\r\n}\r\n\r\n/**\r\n * Allow to create statement expression tree from a ecsql\r\n * @alpha\r\n */\r\nexport class ExprFactory {\r\n public constructor(public readonly provider: NativeECSqlParseNodeProvider) { }\r\n public async parseStatement(ecsql: string): Promise<StatementExpr> {\r\n return StatementExpr.deserialize(this.provider.parseECSql(ecsql));\r\n }\r\n}\r\n\r\n/**\r\n * Base class for all ECSql expressions.\r\n * @alpha\r\n */\r\nexport abstract class Expr {\r\n public constructor(public readonly expType: ExprType) { }\r\n /**\r\n * Write expression tree to a ECSQL string\r\n * @param writer A instance of writer to which expression tree will output tokens.\r\n */\r\n public abstract writeTo(writer: ECSqlWriter): void;\r\n public abstract get children(): Expr[];\r\n /**\r\n * Find instances of expressions matching the type in sub tree.\r\n * @param type a subclass of Expr\r\n * @returns\r\n */\r\n public findInstancesOf<T extends Expr>(type: Constructor<T>): T[] {\r\n const listOfT: T[] = [];\r\n this.traverse((expr) => {\r\n const inst = expr.asInstanceOf<T>(type);\r\n if (inst)\r\n listOfT.push(inst);\r\n });\r\n return listOfT;\r\n }\r\n /**\r\n * Allow to traverse the expression tree depth first\r\n * @param callback this will be called for each expression traverse from first to last.\r\n */\r\n public traverse(callback: (expr: Expr, parent?: Expr) => void | boolean) {\r\n const list: Expr[] = [this];\r\n let parent: Expr | undefined;\r\n while (list.length > 0) {\r\n const current = list.pop();\r\n if (current) {\r\n const rc = callback(current, parent);\r\n if (typeof rc === \"boolean\") {\r\n if (!rc)\r\n return;\r\n }\r\n parent = current;\r\n list.push(...current.children.reverse());\r\n }\r\n }\r\n }\r\n /**\r\n * Test if class instance is of certain type\r\n * @param type A class that extends from Expr\r\n * @returns true if instances matches the type else return false.\r\n */\r\n public isInstanceOf<T extends Expr>(type: Constructor<T>) { return isInstanceOf<T>(this, type); }\r\n public asInstanceOf<T extends Expr>(type: Constructor<T>) { return asInstanceOf<T>(this, type); }\r\n /**\r\n * Convert expression tree to ECSQL.\r\n * @param args args to ecsql writer.\r\n * @returns ECSQL string\r\n */\r\n public toECSql(args?: ECSqlWriterArgs): string {\r\n if (args) {\r\n const customWriter = new ECSqlWriter(args);\r\n this.writeTo(customWriter);\r\n return customWriter.toString();\r\n }\r\n const defaultWriter = new ECSqlWriter();\r\n this.writeTo(defaultWriter);\r\n return defaultWriter.toString();\r\n }\r\n}\r\n\r\n/**\r\n * Base class for all ECSQL Statements. Here are list of subclasses @see [[CteExpr]], @see [[SelectStatement]], @see [[InsertStatement]], @see [UpdateStatement]] and @see [[DeleteStatement]]\r\n * @alpha\r\n */\r\nexport abstract class StatementExpr extends Expr {\r\n public static deserialize(node: NativeECSqlParseNode): StatementExpr | InsertStatementExpr | UpdateStatementExpr | DeleteStatementExpr | CteExpr {\r\n if (node.id === NativeExpIds.CommonTable)\r\n return CteExpr.deserialize(node);\r\n if (node.id === NativeExpIds.InsertStatement)\r\n return InsertStatementExpr.deserialize(node);\r\n if (node.id === NativeExpIds.UpdateStatement)\r\n return UpdateStatementExpr.deserialize(node);\r\n if (node.id === NativeExpIds.DeleteStatement)\r\n return DeleteStatementExpr.deserialize(node);\r\n if (node.id === NativeExpIds.SelectStatement)\r\n return SelectStatementExpr.deserialize(node);\r\n throw new Error(`unknow node.id = ${node.id}`);\r\n }\r\n}\r\n\r\n/**\r\n * Base class for all computed expression like Value and Boolean.\r\n * @alpha\r\n */\r\nexport abstract class ComputedExpr extends Expr {\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (BooleanExpr.deserializableIds.includes(node.id)) {\r\n return BooleanExpr.deserialize(node);\r\n }\r\n if (ValueExpr.deserializableIds.includes(node.id)) {\r\n return ValueExpr.deserialize(node);\r\n }\r\n throw new Error(`unknow node.id = ${node.id}`);\r\n }\r\n}\r\n\r\n/**\r\n * Base class for a boolean expressions. It has following subclasses\r\n * @see [[BooleanExpr]]\r\n * @see [[ubqueryTestExpr]]\r\n * @see [[BetweenExpr]]\r\n * @see [[LikeExpr]]\r\n * @see [[InExpr]]\r\n * @see [[IsNullExpr]]\r\n * @see [[IsOfTypeExpr]]\r\n * @see [[NotExpr]]\r\n * @see [[BinaryBooleanExpr]]\r\n * @alpha\r\n */\r\nexport abstract class BooleanExpr extends ComputedExpr {\r\n public static readonly deserializableIds = [NativeExpIds.BinaryBoolean, NativeExpIds.BooleanFactor, NativeExpIds.SubqueryTest, NativeExpIds.AllOrAny, NativeExpIds.BooleanFactor];\r\n public static override deserialize(node: NativeECSqlParseNode): BooleanExpr | SubqueryTestExpr | BetweenExpr | LikeExpr | InExpr | IsNullExpr | IsOfTypeExpr | NotExpr | BinaryBooleanExpr {\r\n if (node.id === NativeExpIds.BinaryBoolean) {\r\n const op = (node.op as string);\r\n // if (MatchExpr.parseOp(op)[0]) {\r\n // return MatchExpr.deserialize(node);\r\n // }\r\n if (BetweenExpr.parseOp(op)[0]) {\r\n return BetweenExpr.deserialize(node);\r\n }\r\n if (LikeExpr.parseOp(op)[0]) {\r\n return LikeExpr.deserialize(node);\r\n }\r\n if (InExpr.parseOp(op)[0]) {\r\n return InExpr.deserialize(node);\r\n }\r\n if (IsNullExpr.parseOp(node)[0]) {\r\n return IsNullExpr.deserialize(node);\r\n }\r\n if (IsOfTypeExpr.parseOp(node)[0]) {\r\n return IsOfTypeExpr.deserialize(node);\r\n }\r\n return BinaryBooleanExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.BooleanFactor) {\r\n return NotExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.SubqueryTest) {\r\n return SubqueryTestExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.BooleanFactor) {\r\n return NotExpr.deserialize(node);\r\n }\r\n throw new Error(`Unknown type of native value exp ${node.id}`);\r\n }\r\n}\r\n\r\n/**\r\n * Base class for all value expressions. Following is list of subclasses.\r\n * @see [[SubqueryExpr]]\r\n * @see [[ValueExpr]]\r\n * @see [[UnaryValueExpr]]\r\n * @see [[FuncCallExpr]]\r\n * @see [[CastExpr]]\r\n * @see [[BinaryValueExpr]]\r\n * @see [[SearchCaseExpr]]\r\n * @see [[IIFExpr]]\r\n * @see [[LiteralExpr]]\r\n * @see [[PropertyNameExpr]]\r\n * @see [[NavValueCreationFunc]]\r\n * @alpha\r\n */\r\nexport abstract class ValueExpr extends ComputedExpr {\r\n public static readonly deserializableIds = [\r\n NativeExpIds.LiteralValue,\r\n NativeExpIds.Parameter,\r\n NativeExpIds.FunctionCall,\r\n NativeExpIds.Cast,\r\n NativeExpIds.BinaryValue,\r\n NativeExpIds.SearchCaseValue,\r\n NativeExpIds.IIF,\r\n NativeExpIds.UnaryValue,\r\n NativeExpIds.PropertyName,\r\n NativeExpIds.Subquery,\r\n NativeExpIds.NavValueCreationFunc,\r\n ];\r\n\r\n public static override deserialize(node: NativeECSqlParseNode): SubqueryExpr | ValueExpr | UnaryValueExpr | FuncCallExpr | CastExpr | BinaryValueExpr | SearchCaseExpr | IIFExpr | LiteralExpr | PropertyNameExpr | NavValueCreationFuncExpr {\r\n if (node.id === NativeExpIds.UnaryValue) {\r\n return UnaryValueExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.PropertyName) {\r\n return PropertyNameExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.Parameter) {\r\n return ParameterExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.FunctionCall) {\r\n return FuncCallExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.Cast) {\r\n return CastExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.Subquery) {\r\n return SubqueryExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.BinaryValue) {\r\n return BinaryValueExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.SearchCaseValue) {\r\n return SearchCaseExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.IIF) {\r\n return IIFExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.LiteralValue) {\r\n return LiteralExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.NavValueCreationFunc)\r\n return NavValueCreationFuncExpr.deserialize(node);\r\n throw new Error(`Unknown type of native value exp ${node.id}`);\r\n }\r\n}\r\n\r\n/**\r\n * Hold polymorphic information about @see [[ClassNameExp]]\r\n * @alpha\r\n */\r\nexport interface PolymorphicInfo {\r\n allOrAny: AllOrAnyOp;\r\n disqualify?: DisqualifyOp;\r\n}\r\n\r\n/**\r\n * Base class for expressions that can be used in FROM clause of a SELECT. Following list of this subclasses.\r\n * @see [[ClassRefExpr]]\r\n * @see [[ClassNameExpr]]\r\n * @see [[SubqueryRefExpr]]\r\n * @see [[UsingRelationshipJoinExpr]]\r\n * @see [[QualifiedJoinExpr]]\r\n * @see [[CteBlockRefExpr]]\r\n * @see [[TableValuedFuncExpr]]\r\n * @alpha\r\n */\r\nexport abstract class ClassRefExpr extends Expr {\r\n public static readonly deserializableIds = [\r\n NativeExpIds.ClassName,\r\n NativeExpIds.SubqueryRef,\r\n NativeExpIds.UsingRelationshipJoinExp,\r\n NativeExpIds.QualifiedJoin,\r\n NativeExpIds.CommonTableBlockName,\r\n ];\r\n\r\n public static deserialize(node: NativeECSqlParseNode): ClassNameExpr | SubqueryRefExpr | UsingRelationshipJoinExpr | QualifiedJoinExpr | CteBlockRefExpr | TableValuedFuncExpr {\r\n if (node.id === NativeExpIds.ClassName) {\r\n return ClassNameExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.SubqueryRef) {\r\n return SubqueryRefExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.UsingRelationshipJoinExp) {\r\n return UsingRelationshipJoinExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.QualifiedJoin) {\r\n return QualifiedJoinExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.CommonTableBlockName) {\r\n return CteBlockRefExpr.deserialize(node);\r\n }\r\n if (node.id === NativeExpIds.TableValuedFunction) {\r\n return TableValuedFuncExpr.deserialize(node);\r\n }\r\n\r\n throw new Error(`Unknown type of native value exp ${node.id}`);\r\n }\r\n}\r\n\r\n/**\r\n * Options for @see [[ECSqlWriter]]\r\n * @alpha\r\n */\r\nexport interface ECSqlWriterArgs {\r\n readonly multiline: boolean;\r\n readonly eol: \"\\r\\n\" | \"\\n\";\r\n readonly spaceAfterComma: boolean;\r\n readonly spaceAroundBinOp: boolean;\r\n readonly keywordCasing: \"lower\" | \"UPPER\";\r\n readonly indent: {\r\n readonly size: number;\r\n readonly char: string;\r\n };\r\n}\r\n\r\n/**\r\n * Keywords output by @see [[ECSqlWriter.appendKeyword]]\r\n * @alpha\r\n */\r\nexport type Keywords = \"ALL\" | \"AND\" | \"AS\" | \"ASC\" | \"BACKWARD\" | \"BETWEEN\" | \"BY\" | \"CASE\" | \"CAST\" | \"CROSS\" | \"DATE\" | \"DELETE\" | \"DESC\" | \"DISTINCT\" | \"ECSQLOPTIONS\" | \"ELSE\" | \"END\" | \"ESCAPE\" | \"EXCEPT\" | \"EXISTS\" | \"FIRST\" | \"FORWARD\" | \"FROM\" | \"FULL\" | \"GROUP\" | \"HAVING\" | \"IIF\" | \"IN\" | \"INNER\" | \"INSERT\" | \"INTERSECT\" | \"INTO\" | \"IS\" | \"JOIN\" | \"LAST\" | \"LEFT\" | \"LIKE\" | \"LIMIT\" | \"NATURAL\" | \"NOT\" | \"NULL\" | \"NULLS\" | \"OFFSET\" | \"ON\" | \"ONLY\" | \"OR\" | \"ORDER\" | \"OUTER\" | \"RECURSIVE\" | \"RIGHT\" | \"SELECT\" | \"SET\" | \"THEN\" | \"TIME\" | \"TIMESTAMP\" | \"UNION\" | \"UPDATE\" | \"USING\" | \"VALUES\" | \"WHEN\" | \"WHERE\" | \"WITH\";\r\n\r\n/**\r\n * Write expression tree to string\r\n * @alpha\r\n */\r\nexport class ECSqlWriter {\r\n private _tokens: string[] = [];\r\n private _currentIndent = 0;\r\n private _isNewLine = false;\r\n public constructor(public readonly options: ECSqlWriterArgs = {\r\n multiline: false,\r\n spaceAfterComma: true,\r\n spaceAroundBinOp: true,\r\n eol: \"\\r\\n\",\r\n keywordCasing: \"UPPER\",\r\n indent: { size: 3, char: \" \" },\r\n }) { }\r\n public indent() {\r\n this._currentIndent++;\r\n }\r\n public unindent() {\r\n if (this._currentIndent > 0)\r\n this._currentIndent--;\r\n }\r\n public appendBinaryOp(val: string) {\r\n if (this.options.spaceAroundBinOp)\r\n return this.append(` ${val} `);\r\n return this.append(val);\r\n }\r\n public appendKeyword(val: Keywords) {\r\n if (this.options.keywordCasing === \"UPPER\")\r\n return this.append(val);\r\n return this.append(val.toLowerCase());\r\n }\r\n public appendComma() {\r\n this.append(\",\");\r\n if (this.options.spaceAfterComma)\r\n this.appendSpace();\r\n }\r\n public appendQuoted(val: string) {\r\n return this.append(`[${val}]`);\r\n }\r\n public append(val: string) {\r\n if (this._isNewLine) {\r\n if (this._currentIndent > 0 && this.options.indent.size > 0 && this.options.indent.char.length === 1) {\r\n this._tokens.push(\"\".padEnd(this._currentIndent * this.options.indent.size, this.options.indent.char));\r\n }\r\n this._isNewLine = false;\r\n }\r\n this._tokens.push(val);\r\n return this;\r\n }\r\n public appendStringLiteral(val: string) {\r\n return this.append(`'${val}'`);\r\n }\r\n public appendLineOrSpace() {\r\n if (this.options.multiline)\r\n return this.appendLine();\r\n return this.appendSpace();\r\n }\r\n public appendSpace() {\r\n return this.append(\" \");\r\n }\r\n public appendLine() {\r\n if (this.options.multiline) {\r\n this._isNewLine = true;\r\n if (this._tokens.length > 0) {\r\n this._tokens[this._tokens.length - 1] = this._tokens[this._tokens.length - 1].trimEnd();\r\n }\r\n this._tokens.push(this.options.eol);\r\n }\r\n return this;\r\n }\r\n public clear() {\r\n this._tokens = [];\r\n return this;\r\n }\r\n public squash() {\r\n if (this._tokens.length > 1) {\r\n this._tokens = [this.toString()];\r\n }\r\n return this;\r\n }\r\n public toString() {\r\n return this._tokens.join(\"\");\r\n }\r\n public appendExp(exp: Expr) {\r\n exp.writeTo(this);\r\n return this;\r\n }\r\n public appendParenLeft(){\r\n return this.append(\"(\");\r\n }\r\n public appendParenRight(){\r\n return this.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Use to describe selection clause terms in a SELECT statements @see [[SelectionClauseExpr]] @see [[SelectExpr]]\r\n * @alpha\r\n */\r\nexport class DerivedPropertyExpr extends Expr {\r\n public static readonly type = ExprType.DerivedProperty;\r\n public constructor(public readonly computedExpr: ComputedExpr, public readonly alias?: string) {\r\n super(DerivedPropertyExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.computedExpr];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode): DerivedPropertyExpr {\r\n if (node.id !== NativeExpIds.DerivedProperty) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.DerivedProperty'. ${JSON.stringify(node)}`);\r\n }\r\n return new DerivedPropertyExpr(ComputedExpr.deserialize(node.exp as NativeECSqlParseNode), node.alias ? node.alias as string : undefined);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.computedExpr);\r\n if (this.alias) {\r\n writer.appendSpace();\r\n writer.appendQuoted(this.alias);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describes a ECSQL delete statement.\r\n * @alpha\r\n */\r\nexport class DeleteStatementExpr extends StatementExpr {\r\n public static readonly type = ExprType.DeleteStatement;\r\n public constructor(\r\n public readonly className: ClassNameExpr,\r\n public readonly where?: WhereClauseExp,\r\n public readonly options?: ECSqlOptionsClauseExpr) {\r\n super(DeleteStatementExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.className];\r\n if (this.where)\r\n exprs.push(this.where);\r\n if (this.options)\r\n exprs.push(this.options);\r\n return exprs;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode): DeleteStatementExpr {\r\n if (node.id !== NativeExpIds.DeleteStatement) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.DeleteStatement'. ${JSON.stringify(node)}`);\r\n }\r\n\r\n const className = ClassNameExpr.deserialize(node.class as NativeECSqlParseNode);\r\n const where = node.where ? WhereClauseExp.deserialize(node.where as NativeECSqlParseNode) : undefined;\r\n const options = node.options ? ECSqlOptionsClauseExpr.deserialize(node.options as NativeECSqlParseNode) : undefined;\r\n return new DeleteStatementExpr(className, where, options);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"DELETE\");\r\n writer.appendSpace();\r\n writer.appendKeyword(\"FROM\");\r\n writer.appendSpace();\r\n writer.appendExp(this.className);\r\n if (this.where) {\r\n writer.appendSpace();\r\n writer.appendExp(this.where);\r\n }\r\n if (this.options) {\r\n writer.appendSpace();\r\n writer.appendExp(this.options);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a ECSQL Insert statement.\r\n * @alpha\r\n */\r\nexport class InsertStatementExpr extends StatementExpr {\r\n public static readonly type = ExprType.InsertStatement;\r\n public constructor(\r\n public readonly className: ClassNameExpr,\r\n public readonly values: ValueExpr[],\r\n public readonly propertyNames?: PropertyNameExpr[]) {\r\n super(InsertStatementExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.className];\r\n exprs.push(...this.values);\r\n if (this.propertyNames)\r\n exprs.push(...this.propertyNames);\r\n return exprs;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode): InsertStatementExpr {\r\n if (node.id !== NativeExpIds.InsertStatement) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.InsertStatement'. ${JSON.stringify(node)}`);\r\n }\r\n\r\n const className = ClassNameExpr.deserialize(node.class as NativeECSqlParseNode);\r\n if (className.polymorphicInfo) {\r\n // Patch as INSERT are always ONLY but parser have issue accepting ONLY.\r\n if (className.polymorphicInfo.allOrAny === \"ONLY\") {\r\n className.polymorphicInfo = undefined;\r\n }\r\n }\r\n const values = Array.from((node.values as NativeECSqlParseNode[]).map((v) => ValueExpr.deserialize(v)));\r\n const properties = node.properties ? Array.from((node.properties as NativeECSqlParseNode[]).map((v) => PropertyNameExpr.deserialize(v))) : undefined;\r\n return new InsertStatementExpr(className, values, properties);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"INSERT\");\r\n writer.appendSpace();\r\n writer.appendKeyword(\"INTO\");\r\n writer.appendSpace();\r\n writer.appendExp(this.className);\r\n writer.appendSpace();\r\n if (this.propertyNames) {\r\n writer.append(\"(\");\r\n this.propertyNames.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.append(\")\");\r\n }\r\n writer.appendSpace();\r\n writer.appendKeyword(\"VALUES\");\r\n writer.append(\"(\");\r\n this.values.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Describes a JOIN clause e.g. <classNameExpr> JOIN <classNameExpr> ON <joinspec>\r\n * @alpha\r\n */\r\nexport class QualifiedJoinExpr extends ClassRefExpr {\r\n public static readonly type = ExprType.QualifiedJoin;\r\n public constructor(\r\n public readonly joinType: JoinType,\r\n public readonly from: ClassRefExpr,\r\n public readonly to: ClassRefExpr,\r\n public readonly spec: JoinSpec) {\r\n super(QualifiedJoinExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.from, this.to];\r\n if (this.spec instanceof BooleanExpr)\r\n exprs.push(this.spec);\r\n return exprs;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode): QualifiedJoinExpr {\r\n if (node.id !== NativeExpIds.QualifiedJoin) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.QualifiedJoin'. ${JSON.stringify(node)}`);\r\n }\r\n const type = node.type as JoinType;\r\n const from = ClassRefExpr.deserialize(node.from as NativeECSqlParseNode);\r\n const to = ClassRefExpr.deserialize(node.to as NativeECSqlParseNode);\r\n let spec: JoinSpec | undefined;\r\n if (Array.isArray(node.spec))\r\n spec = node.spec as string[];\r\n else\r\n spec = BooleanExpr.deserialize(node.spec as NativeECSqlParseNode);\r\n return new QualifiedJoinExpr(type, from, to, spec);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.from);\r\n writer.appendSpace();\r\n if (this.joinType === JoinType.LeftOuter) {\r\n writer.appendKeyword(\"LEFT\").appendSpace();\r\n writer.appendKeyword(\"OUTER\").appendSpace();\r\n writer.appendKeyword(\"JOIN\").appendSpace();\r\n } else if (this.joinType === JoinType.RightOuter) {\r\n writer.appendKeyword(\"RIGHT\").appendSpace();\r\n writer.appendKeyword(\"OUTER\").appendSpace();\r\n writer.appendKeyword(\"JOIN\").appendSpace();\r\n } else if (this.joinType === JoinType.FullOuter) {\r\n writer.appendKeyword(\"FULL\").appendSpace();\r\n writer.appendKeyword(\"OUTER\").appendSpace();\r\n writer.appendKeyword(\"JOIN\").appendSpace();\r\n } else if (this.joinType === JoinType.Inner) {\r\n writer.appendKeyword(\"INNER\").appendSpace();\r\n writer.appendKeyword(\"JOIN\").appendSpace();\r\n } else {\r\n throw new Error(`not supported join type ${this.joinType}`);\r\n }\r\n writer.appendExp(this.to);\r\n if (this.spec) {\r\n writer.appendSpace();\r\n if (this.spec instanceof BooleanExpr) {\r\n writer.appendKeyword(\"ON\");\r\n writer.appendSpace();\r\n writer.appendExp(this.spec);\r\n } else if (this.spec instanceof Array) {\r\n writer.appendKeyword(\"USING\");\r\n this.spec.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n writer.append(v);\r\n }\r\n });\r\n } else {\r\n throw new Error(\"unknow join spec\");\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a JOIN USING clause.\r\n * @alpha\r\n */\r\nexport class UsingRelationshipJoinExpr extends ClassRefExpr {\r\n public static readonly type = ExprType.UsingRelationshipJoin;\r\n public constructor(\r\n public readonly fromClassName: ClassRefExpr,\r\n public readonly toClassName: ClassNameExpr,\r\n public readonly toRelClassName: ClassNameExpr,\r\n public readonly direction?: JoinDirection) {\r\n super(UsingRelationshipJoinExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.fromClassName, this.toClassName, this.toRelClassName];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode): UsingRelationshipJoinExpr {\r\n if (node.id !== NativeExpIds.UsingRelationshipJoinExp) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.UsingRelationshipJoinExp'. ${JSON.stringify(node)}`);\r\n }\r\n const from = ClassRefExpr.deserialize(node.from as NativeECSqlParseNode);\r\n const to = ClassNameExpr.deserialize(node.to as NativeECSqlParseNode);\r\n const usingRel = ClassNameExpr.deserialize(node.using as NativeECSqlParseNode);\r\n const direction = node.direction ? node.direction as JoinDirection : undefined;\r\n return new UsingRelationshipJoinExpr(from, to, usingRel, direction);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.fromClassName);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"JOIN\");\r\n writer.appendSpace();\r\n writer.appendExp(this.toClassName);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"USING\");\r\n writer.appendSpace();\r\n writer.appendExp(this.toRelClassName);\r\n if (this.direction) {\r\n writer.appendSpace();\r\n writer.appendKeyword(this.direction);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe subquery result test e.g. EXISTS(<subquery>)\r\n * @alpha\r\n */\r\nexport class SubqueryTestExpr extends BooleanExpr {\r\n public static readonly type = ExprType.SubqueryTest;\r\n public constructor(public readonly op: SubqueryTestOp, public readonly query: SubqueryExpr) {\r\n super(SubqueryTestExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.query];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode): SubqueryTestExpr {\r\n if (node.id !== NativeExpIds.SubqueryTest) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.SubqueryTest'. ${JSON.stringify(node)}`);\r\n }\r\n const query = SubqueryExpr.deserialize(node.query as NativeECSqlParseNode);\r\n const op = node.op as SubqueryTestOp;\r\n return new SubqueryTestExpr(op, query);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(this.op);\r\n writer.appendExp(this.query);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a subquery when used in FROM clause.\r\n * @alpha\r\n */\r\nexport class SubqueryRefExpr extends ClassRefExpr {\r\n public static readonly type = ExprType.SubqueryRef;\r\n public constructor(public readonly query: SubqueryExpr, public readonly polymorphicInfo?: PolymorphicInfo, public readonly alias?: string) {\r\n super(SubqueryRefExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.query];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.SubqueryRef) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.SubqueryRef'. ${JSON.stringify(node)}`);\r\n }\r\n const query = SubqueryExpr.deserialize(node.query as NativeECSqlParseNode);\r\n const polymorphicInfo = node.polymorphicInfo ? node.polymorphicInfo as PolymorphicInfo : undefined;\r\n const alias = node.alias ? node.alias as string : undefined;\r\n return new SubqueryRefExpr(query, polymorphicInfo, alias);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n if (this.polymorphicInfo) {\r\n if (this.polymorphicInfo.disqualify) {\r\n writer.append(this.polymorphicInfo.disqualify);\r\n }\r\n writer.appendKeyword(this.polymorphicInfo.allOrAny);\r\n writer.appendSpace();\r\n }\r\n writer.appendExp(this.query);\r\n if (this.alias) {\r\n writer.appendSpace();\r\n writer.appendQuoted(this.alias);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe next select statement in a compound select statement. @see [[SelectStatementExp]]\r\n * @alpha\r\n */\r\nexport interface NextSelect {\r\n op: CompoundSelectOp;\r\n select: SelectStatementExpr;\r\n}\r\n\r\n/**\r\n * Describe a optionally compound SELECT statement.\r\n * @alpha\r\n */\r\nexport class SelectStatementExpr extends StatementExpr {\r\n public static readonly type = ExprType.SelectStatement;\r\n public constructor(public readonly singleSelect: SelectExpr, public readonly nextSelect?: NextSelect) {\r\n super(SelectStatementExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.singleSelect];\r\n if (this.nextSelect)\r\n exprs.push(this.nextSelect.select);\r\n return exprs;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode): SelectStatementExpr {\r\n if (node.id !== NativeExpIds.SelectStatement) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.SelectStatement'. ${JSON.stringify(node)}`);\r\n }\r\n const singleSelect = SelectExpr.deserialize(node.select as NativeECSqlParseNode);\r\n let nextSelect: NextSelect | undefined;\r\n if (node.nextBlock) {\r\n nextSelect = {\r\n op: node.nextBlock.combineOp as CompoundSelectOp,\r\n select: SelectStatementExpr.deserialize(node.nextBlock.select as NativeECSqlParseNode),\r\n };\r\n }\r\n return new SelectStatementExpr(singleSelect, nextSelect);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.singleSelect);\r\n if (this.nextSelect) {\r\n writer.appendSpace();\r\n if (this.nextSelect.op === \"UNION ALL\") {\r\n writer.appendKeyword(\"UNION\");\r\n writer.appendSpace();\r\n writer.appendKeyword(\"ALL\");\r\n } else {\r\n writer.append(this.nextSelect.op);\r\n }\r\n writer.appendSpace();\r\n writer.appendExp(this.nextSelect.select);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe selection in a SELECT query\r\n * @alpha\r\n */\r\nexport class SelectionClauseExpr extends Expr {\r\n public static readonly type = ExprType.SelectionClause;\r\n public constructor(public readonly derivedPropertyList: DerivedPropertyExpr[]) {\r\n super(SelectionClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.derivedPropertyList];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (!Array.isArray(node)) {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode[] ${JSON.stringify(node)}`);\r\n }\r\n return new SelectionClauseExpr(Array.from(node.map((v) => DerivedPropertyExpr.deserialize(v))));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n this.derivedPropertyList.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Describe a GROUP BY clause in a SELECT statement.\r\n * @alpha\r\n */\r\nexport class GroupByClauseExpr extends Expr {\r\n public static readonly type = ExprType.GroupByClause;\r\n public constructor(public readonly exprList: ValueExpr[]) {\r\n super(GroupByClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.exprList];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (!Array.isArray(node)) {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode[] ${JSON.stringify(node)}`);\r\n }\r\n return new GroupByClauseExpr(Array.from(node.map((v) => ValueExpr.deserialize(v))));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"GROUP\");\r\n writer.appendSpace();\r\n writer.appendKeyword(\"BY\");\r\n writer.appendSpace();\r\n this.exprList.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Describe a HAVING clause in a SELECT statement.\r\n * @alpha\r\n */\r\nexport class HavingClauseExpr extends Expr {\r\n public static readonly type = ExprType.HavingClause;\r\n public constructor(public readonly filterExpr: ComputedExpr) {\r\n super(HavingClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.filterExpr];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (typeof node !== \"object\") {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode ${JSON.stringify(node)}`);\r\n }\r\n return new HavingClauseExpr(BooleanExpr.deserialize(node));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"HAVING\");\r\n writer.appendSpace();\r\n writer.appendExp(this.filterExpr);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a FROM clause in a SELECT statement.\r\n * @alpha\r\n */\r\nexport class FromClauseExpr extends Expr {\r\n public static readonly type = ExprType.FromClause;\r\n public constructor(public readonly classRefs: ClassRefExpr[]) {\r\n super(FromClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.classRefs];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (!Array.isArray(node)) {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode[] ${JSON.stringify(node)}`);\r\n }\r\n return new FromClauseExpr(Array.from(node.map((v) => ClassRefExpr.deserialize(v))));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"FROM\");\r\n writer.appendSpace();\r\n this.classRefs.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Describe a WHERE clause in a SELECT, UPDATE and DELETE statement.\r\n * @alpha\r\n */\r\nexport class WhereClauseExp extends Expr {\r\n public static readonly type = ExprType.WhereClause;\r\n public constructor(public readonly filterExpr: ComputedExpr) {\r\n super(WhereClauseExp.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.filterExpr];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (typeof node !== \"object\") {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode ${JSON.stringify(node)}`);\r\n }\r\n return new WhereClauseExp(BooleanExpr.deserialize(node));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"WHERE\");\r\n writer.appendSpace();\r\n writer.appendExp(this.filterExpr);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a single sorted term in a ORDER BY clause of a SELECT statement.\r\n * @alpha\r\n */\r\nexport class OrderBySpecExpr extends Expr {\r\n public static readonly type = ExprType.OrderBySpec;\r\n public constructor(public readonly term: ValueExpr, public readonly sortDirection?: SortDirection, public readonly nulls?: FirstOrLast) {\r\n super(OrderBySpecExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.term];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (typeof node !== \"object\") {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode ${JSON.stringify(node)}`);\r\n }\r\n return new OrderBySpecExpr(ValueExpr.deserialize(node.exp), node.direction ? node.direction as SortDirection : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.term);\r\n if (this.sortDirection) {\r\n writer.appendSpace();\r\n writer.appendKeyword(this.sortDirection);\r\n }\r\n if (this.nulls) {\r\n writer.appendSpace();\r\n writer.appendKeyword(\"NULLS\");\r\n writer.appendSpace();\r\n writer.appendKeyword(this.nulls);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a ORDER BY clause in a SELECT statement.\r\n * @alpha\r\n */\r\nexport class OrderByClauseExpr extends Expr {\r\n public static readonly type = ExprType.OrderByClause;\r\n public constructor(public readonly terms: OrderBySpecExpr[]) {\r\n super(OrderByClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.terms.map((v) => v.term)];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (!Array.isArray(node)) {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode[] ${JSON.stringify(node)}`);\r\n }\r\n return new OrderByClauseExpr(Array.from(node.map((v) => OrderBySpecExpr.deserialize(v))));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"ORDER\");\r\n writer.appendSpace();\r\n writer.appendKeyword(\"BY\");\r\n writer.appendSpace();\r\n this.terms.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n }\r\n}\r\n/**\r\n * Describe a LIMIT clause in a SELECT statement.\r\n * @alpha\r\n */\r\nexport class LimitClauseExpr extends Expr {\r\n public static readonly type = ExprType.LimitClause;\r\n public constructor(public readonly limit: ValueExpr, public readonly offset?: ValueExpr) {\r\n super(LimitClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.limit];\r\n if (this.offset)\r\n exprs.push(this.offset);\r\n return exprs;\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (typeof node !== \"object\") {\r\n throw new Error(`Expect node to be array of NativeECSqlParseNode ${JSON.stringify(node)}`);\r\n }\r\n return new LimitClauseExpr(ValueExpr.deserialize(node.exp), node.offset ? ValueExpr.deserialize(node.offset as NativeECSqlParseNode) : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"LIMIT\");\r\n writer.appendSpace();\r\n writer.appendExp(this.limit);\r\n if (this.offset) {\r\n writer.appendSpace();\r\n writer.appendKeyword(\"OFFSET\");\r\n writer.appendSpace();\r\n writer.appendExp(this.offset);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a single select statement.\r\n * @alpha\r\n */\r\nexport class SelectExpr extends Expr {\r\n public static readonly type = ExprType.Select;\r\n public constructor(\r\n public readonly selection: SelectionClauseExpr,\r\n public readonly rowQuantifier?: AllOrDistinctOp,\r\n public readonly from?: FromClauseExpr,\r\n public readonly where?: WhereClauseExp,\r\n public readonly groupBy?: GroupByClauseExpr,\r\n public readonly having?: HavingClauseExpr,\r\n public readonly orderBy?: OrderByClauseExpr,\r\n public readonly limit?: LimitClauseExpr,\r\n public readonly options?: ECSqlOptionsClauseExpr) {\r\n super(SelectExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.selection];\r\n if (this.from)\r\n exprs.push(this.from);\r\n if (this.where)\r\n exprs.push(this.where);\r\n if (this.groupBy)\r\n exprs.push(this.groupBy);\r\n if (this.having)\r\n exprs.push(this.having);\r\n if (this.orderBy)\r\n exprs.push(this.orderBy);\r\n if (this.limit)\r\n exprs.push(this.limit);\r\n if (this.options)\r\n exprs.push(this.options);\r\n return exprs;\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.SingleSelectStatement && node.id !== NativeExpIds.RowConstructor) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.SingleSelectStatement/RowConstructor'. ${JSON.stringify(node)}`);\r\n }\r\n if (node.id === NativeExpIds.RowConstructor) {\r\n const values = SelectionClauseExpr.deserialize(node.values);\r\n return new SelectExpr(values);\r\n }\r\n const selection = SelectionClauseExpr.deserialize(node.selection);\r\n const from = node.from ? FromClauseExpr.deserialize(node.from) : undefined;\r\n const where = node.where ? WhereClauseExp.deserialize(node.where) : undefined;\r\n const groupBy = node.groupBy ? GroupByClauseExpr.deserialize(node.groupBy) : undefined;\r\n const having = node.having ? HavingClauseExpr.deserialize(node.having) : undefined;\r\n const orderBy = node.orderBy ? OrderByClauseExpr.deserialize(node.orderBy) : undefined;\r\n const options = node.options ? ECSqlOptionsClauseExpr.deserialize(node.options) : undefined;\r\n const limitSpec = node.limit ? LimitClauseExpr.deserialize(node.limit) : undefined;\r\n const rowQuantifier = node.selectionType ? node.selectionType as AllOrDistinctOp : undefined;\r\n return new SelectExpr(selection, rowQuantifier, from, where, groupBy, having, orderBy, limitSpec, options);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"SELECT\");\r\n writer.appendSpace();\r\n if (this.rowQuantifier) {\r\n writer.appendKeyword(this.rowQuantifier);\r\n writer.appendSpace();\r\n }\r\n writer.appendExp(this.selection);\r\n\r\n if (this.from) {\r\n writer.appendSpace();\r\n writer.appendExp(this.from);\r\n }\r\n if (this.where) {\r\n writer.appendSpace();\r\n writer.appendExp(this.where);\r\n }\r\n if (this.groupBy) {\r\n writer.appendSpace();\r\n writer.appendExp(this.groupBy);\r\n }\r\n if (this.having) {\r\n writer.appendSpace();\r\n writer.appendExp(this.having);\r\n }\r\n if (this.orderBy) {\r\n writer.appendSpace();\r\n writer.appendExp(this.orderBy);\r\n }\r\n if (this.limit) {\r\n writer.appendSpace();\r\n writer.appendExp(this.limit);\r\n }\r\n if (this.options) {\r\n writer.appendSpace();\r\n writer.appendExp(this.options);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a subquery when used as value. This kind of query expect to return one column and one one value.\r\n * @alpha\r\n */\r\nexport class SubqueryExpr extends ValueExpr {\r\n public static readonly type = ExprType.Subquery;\r\n public constructor(public readonly query: SelectStatementExpr | CteExpr) {\r\n super(SubqueryExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.query];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.Subquery) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.Subquery'. ${JSON.stringify(node)}`);\r\n }\r\n if(node.query.id === NativeExpIds.SelectStatement)\r\n return new SubqueryExpr(SelectStatementExpr.deserialize(node.query as NativeECSqlParseNode));\r\n if(node.query.id === NativeExpIds.CommonTable)\r\n return new SubqueryExpr(CteExpr.deserialize(node.query as NativeECSqlParseNode));\r\n throw new Error(`Parse query node is 'node.query.id !== NativeExpIds.SelectStatement' and 'node.query.id !== NativeExpIds.CommonTable'. ${JSON.stringify(node.query)}`);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.append(\"(\");\r\n writer.appendExp(this.query);\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Describe a binary boolean expression in ECSQL.\r\n * @alpha\r\n */\r\nexport class BinaryBooleanExpr extends BooleanExpr {\r\n public static readonly type = ExprType.BinaryBoolean;\r\n public constructor(public readonly op: BinaryBooleanOp, public readonly lhsExpr: ComputedExpr, public readonly rhsExpr: ComputedExpr, public readonly not?: UnaryBooleanOp) {\r\n super(BinaryBooleanExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.lhsExpr, this.rhsExpr];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryBoolean'. ${JSON.stringify(node)}`);\r\n }\r\n const op = node.op as BinaryBooleanOp;\r\n return new BinaryBooleanExpr(op, ComputedExpr.deserialize(node.lhs as NativeECSqlParseNode), ComputedExpr.deserialize(node.rhs as NativeECSqlParseNode));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.append(\"(\");\r\n writer.appendExp(this.lhsExpr);\r\n writer.appendBinaryOp(this.op);\r\n writer.appendExp(this.rhsExpr);\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Describe a <expr> IS NULL boolean expression\r\n * @alpha\r\n */\r\nexport class IsNullExpr extends BooleanExpr {\r\n public static readonly type = ExprType.IsNull;\r\n public constructor(public readonly operandExpr: ValueExpr, public readonly not?: UnaryBooleanOp) {\r\n super(IsNullExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.operandExpr];\r\n }\r\n public static parseOp(node: NativeECSqlParseNode) {\r\n const op = node.op as string;\r\n const isLiteral = node.rhs.op === NativeExpIds.LiteralValue;\r\n if (!isLiteral) {\r\n return [false, false];\r\n }\r\n const isNull = LiteralExpr.deserialize(node.rhs as NativeECSqlParseNode).rawValue === \"NULL\";\r\n return [op.startsWith(\"IS\"), isNull];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryBoolean'. ${JSON.stringify(node)}`);\r\n }\r\n const [isNullExp, isNull] = this.parseOp(node);\r\n if (!isNullExp) {\r\n throw new Error(`Parse node has 'node.op !== IS NULL'. ${JSON.stringify(node)}`);\r\n }\r\n const exp = ValueExpr.deserialize(node.lhs as NativeECSqlParseNode);\r\n return new IsNullExpr(exp, isNull ? \"NOT\" : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.operandExpr);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"IS\");\r\n writer.appendSpace();\r\n if (this.not) {\r\n writer.appendKeyword(\"NOT\");\r\n writer.appendSpace();\r\n }\r\n writer.appendKeyword(\"NULL\");\r\n }\r\n}\r\n\r\n/**\r\n * Describe a <expr> IS (type1[, type2]) in ECSQL.\r\n * @alpha\r\n */\r\nexport class IsOfTypeExpr extends BooleanExpr {\r\n public static readonly type = ExprType.IsOfType;\r\n public constructor(public readonly lhsExpr: ValueExpr, public readonly typeNames: ClassNameExpr[], public readonly not?: UnaryBooleanOp) {\r\n super(IsOfTypeExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.lhsExpr, ...this.typeNames];\r\n }\r\n public static parseOp(node: NativeECSqlParseNode) {\r\n const op = node.op as string;\r\n return [op.startsWith(\"IS\") && Array.isArray(node.rhs), op.endsWith(\"NOT\")];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryBoolean'. ${JSON.stringify(node)}`);\r\n }\r\n const [isTypeOf, isNull] = this.parseOp(node);\r\n if (!isTypeOf) {\r\n throw new Error(`Parse node has 'node.op !== IS (type....)'. ${JSON.stringify(node)}`);\r\n }\r\n const exp = ValueExpr.deserialize(node.lhs as NativeECSqlParseNode);\r\n const classNames = Array.from((node.rhs as NativeECSqlParseNode[]).map((v) => ClassNameExpr.deserialize(v)));\r\n return new IsOfTypeExpr(exp, classNames, isNull ? \"NOT\" : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.lhsExpr);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"IS\");\r\n writer.appendSpace();\r\n if (this.not) {\r\n writer.appendKeyword(\"NOT\");\r\n writer.appendSpace();\r\n }\r\n writer.append(\"(\");\r\n this.typeNames.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Describe a NOT <expr> boolean expression\r\n * @alpha\r\n */\r\nexport class NotExpr extends BooleanExpr {\r\n public static readonly type = ExprType.Not;\r\n public constructor(public readonly operandExpr: ComputedExpr) {\r\n super(NotExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.operandExpr];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BooleanFactor) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BooleanFactor'. ${JSON.stringify(node)}`);\r\n }\r\n const exp = ComputedExpr.deserialize(node.exp as NativeECSqlParseNode);\r\n return new NotExpr(exp);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.append(\"(\");\r\n writer.appendKeyword(\"NOT\");\r\n writer.appendSpace();\r\n writer.appendExp(this.operandExpr);\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Describe a <expr> IN subquery|(val1[,val2...]) boolean expression\r\n * @alpha\r\n */\r\nexport class InExpr extends BooleanExpr {\r\n public static readonly type = ExprType.In;\r\n public constructor(public readonly lhsExpr: ValueExpr, public readonly rhsExpr: ValueExpr[] | SubqueryExpr, public readonly not?: UnaryBooleanOp) {\r\n super(InExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.lhsExpr];\r\n if (this.rhsExpr instanceof SubqueryExpr)\r\n exprs.push(this.rhsExpr);\r\n else {\r\n exprs.push(...this.rhsExpr);\r\n }\r\n return exprs;\r\n }\r\n public static parseOp(op: string) {\r\n return [op.endsWith(\"IN\"), op.startsWith(\"NOT \")];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryBoolean'. ${JSON.stringify(node)}`);\r\n }\r\n const [isIn, isNull] = this.parseOp(node.op as string);\r\n if (!isIn) {\r\n throw new Error(`Parse node has 'node.op !== IN'. ${JSON.stringify(node)}`);\r\n }\r\n const lhs = ValueExpr.deserialize(node.lhs as NativeECSqlParseNode);\r\n if (Array.isArray(node.rhs))\r\n return new InExpr(lhs, Array.from((node.rhs as NativeECSqlParseNode[]).map((v) => ValueExpr.deserialize(v))), isNull ? \"NOT\" : undefined);\r\n else if (node.rhs.id === NativeExpIds.Subquery)\r\n return new InExpr(lhs, SubqueryExpr.deserialize(node.rhs as NativeECSqlParseNode), isNull ? \"NOT\" : undefined);\r\n else\r\n throw new Error(`unknown IN rhs ${node.rhs.id}`);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.lhsExpr);\r\n writer.appendSpace();\r\n if (this.not) {\r\n writer.appendKeyword(\"NOT\");\r\n writer.appendSpace();\r\n }\r\n writer.appendKeyword(\"IN\");\r\n writer.appendSpace();\r\n\r\n if (this.rhsExpr instanceof SubqueryExpr) {\r\n writer.appendExp(this.rhsExpr);\r\n } else if (Array.isArray(this.rhsExpr)) {\r\n writer.append(\"(\");\r\n this.rhsExpr.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.append(\")\");\r\n } else {\r\n throw new Error(\"unknown expression on rhs of IN expr.\");\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a <expr> LIKE <expr> [ESCAPE <expr>] boolean expression\r\n * @alpha\r\n */\r\nexport class LikeExpr extends BooleanExpr {\r\n public static readonly type = ExprType.Like;\r\n public constructor(public readonly lhsExpr: ValueExpr, public readonly patternExpr: ValueExpr, public readonly escapeExpr?: ValueExpr, public readonly not?: UnaryBooleanOp) {\r\n super(LikeExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.lhsExpr, this.patternExpr];\r\n if (this.escapeExpr)\r\n exprs.push(this.escapeExpr);\r\n return exprs;\r\n }\r\n public static parseOp(op: string) {\r\n return [op.endsWith(\"LIKE\"), op.startsWith(\"NOT \")];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryBoolean'. ${JSON.stringify(node)}`);\r\n }\r\n const [isLike, isNull] = this.parseOp(node.op as string);\r\n if (!isLike) {\r\n throw new Error(`Parse node has 'node.op !== LIKE'. ${JSON.stringify(node)}`);\r\n }\r\n const lhs = ValueExpr.deserialize(node.lhs as NativeECSqlParseNode);\r\n const pattren = ValueExpr.deserialize(node.rhs.pattren as NativeECSqlParseNode);\r\n const escape = node.rhs.escape ? ValueExpr.deserialize(node.rhs.escape as NativeECSqlParseNode) : undefined;\r\n return new LikeExpr(lhs, pattren, escape, isNull ? \"NOT\" : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.lhsExpr);\r\n writer.appendSpace();\r\n if (this.not) {\r\n writer.appendKeyword(\"NOT\");\r\n writer.appendSpace();\r\n }\r\n writer.appendKeyword(\"LIKE\");\r\n writer.appendSpace();\r\n writer.appendExp(this.patternExpr);\r\n if (this.escapeExpr) {\r\n writer.appendSpace();\r\n writer.appendKeyword(\"ESCAPE\");\r\n writer.appendSpace();\r\n writer.appendExp(this.escapeExpr);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a <expr> BETWEEN <expr> AND <expr> boolean expression\r\n * @alpha\r\n */\r\nexport class BetweenExpr extends BooleanExpr {\r\n public static readonly type = ExprType.Between;\r\n public constructor(public readonly lhsExpr: ValueExpr, public readonly lowerBoundExpr: ValueExpr, public readonly upperBoundExpr: ValueExpr, public readonly not?: UnaryBooleanOp) {\r\n super(BetweenExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.lhsExpr, this.lowerBoundExpr, this.upperBoundExpr];\r\n }\r\n public static parseOp(op: string) {\r\n return [op.endsWith(\" BETWEEN\"), op.startsWith(\"NOT \")];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryBoolean'. ${JSON.stringify(node)}`);\r\n }\r\n const [isBetween, isNull] = this.parseOp(node.op as string);\r\n if (!isBetween) {\r\n throw new Error(`Parse node has 'node.op !== BETWEEN'. ${JSON.stringify(node)}`);\r\n }\r\n const rhs = node.rhs as NativeECSqlParseNode;\r\n return new BetweenExpr(\r\n ValueExpr.deserialize(node.lhs),\r\n ValueExpr.deserialize(rhs.lbound),\r\n ValueExpr.deserialize(rhs.ubound),\r\n isNull ? \"NOT\" : undefined,\r\n );\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.lhsExpr);\r\n writer.appendSpace();\r\n if (this.not) {\r\n writer.appendKeyword(\"NOT\");\r\n writer.appendSpace();\r\n }\r\n writer.appendKeyword(\"BETWEEN\");\r\n writer.appendSpace();\r\n writer.appendExp(this.lowerBoundExpr);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"AND\");\r\n writer.appendSpace();\r\n writer.appendExp(this.upperBoundExpr);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a common table expression base query statement\r\n * @alpha\r\n */\r\nexport class CteExpr extends StatementExpr {\r\n public static readonly type = ExprType.Cte;\r\n public constructor(public readonly cteBlocks: CteBlockExpr[], public readonly query: SelectStatementExpr, public readonly recursive?: RecursiveCte) {\r\n super(CteExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.cteBlocks, this.query];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.CommonTable) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.CommonTable'. ${JSON.stringify(node)}`);\r\n }\r\n const blocks = Array.from((node.blocks as NativeECSqlParseNode[]).map((v) => CteBlockExpr.deserialize(v)));\r\n return new CteExpr(blocks, SelectStatementExpr.deserialize(node.select as NativeECSqlParseNode), node.recursive === true ? \"RECURSIVE\" : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"WITH\");\r\n writer.appendSpace();\r\n if (this.recursive) {\r\n writer.appendKeyword(this.recursive);\r\n writer.appendSpace();\r\n }\r\n this.cteBlocks.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.appendSpace();\r\n writer.appendExp(this.query);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a single block of CTE that can be reference in FROM clause of a SELECT\r\n * @alpha\r\n */\r\nexport class CteBlockExpr extends Expr {\r\n public static readonly type = ExprType.CteBlock;\r\n public constructor(public readonly name: string, public readonly query: SelectStatementExpr, public readonly props: string[]) {\r\n super(CteBlockExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.query];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.CommonTableBlock) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.CommonTableBlock'. ${JSON.stringify(node)}`);\r\n }\r\n return new CteBlockExpr(node.name as string, SelectStatementExpr.deserialize(node.asQuery as NativeECSqlParseNode), node.args ? node.args as string[] : []);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendQuoted(this.name);\r\n if(this.props.length > 0){\r\n writer.append(\"(\");\r\n this.props.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendQuoted(v);\r\n });\r\n writer.append(\")\");\r\n }\r\n writer.appendSpace();\r\n writer.appendKeyword(\"AS\");\r\n writer.appendSpace();\r\n writer.append(\"(\");\r\n writer.appendLine();\r\n writer.indent();\r\n writer.appendExp(this.query);\r\n writer.unindent();\r\n writer.appendLine();\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Describe a name reference to a CTE block.\r\n * @alpha\r\n */\r\nexport class CteBlockRefExpr extends ClassRefExpr {\r\n public static readonly type = ExprType.CteBlockRef;\r\n public constructor(public readonly name: string, public readonly alias?: string) {\r\n super(CteBlockRefExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.CommonTableBlockName) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.CommonTableBlockName'. ${JSON.stringify(node)}`);\r\n }\r\n return new CteBlockRefExpr(node.name as string, node.alias ? node.alias as string : undefined);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendQuoted(this.name);\r\n if (this.alias) {\r\n writer.appendQuoted(this.alias);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a table value function expression in ECSQL that appear in FROM clause of query.\r\n * @alpha\r\n */\r\nexport class TableValuedFuncExpr extends ClassRefExpr {\r\n public static readonly type = ExprType.TableValuedFunc;\r\n public constructor(public readonly schemaName: string, public readonly memberFunc: MemberFuncCallExpr, public readonly alias?: string) {\r\n super(TableValuedFuncExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.memberFunc];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.TableValuedFunction) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.TableValuedFunction'. ${JSON.stringify(node)}`);\r\n }\r\n return new TableValuedFuncExpr(node.schema as string, MemberFuncCallExpr.deserialize(node.func as NativeECSqlParseNode), node.alias as string);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendQuoted(this.schemaName);\r\n writer.append(\".\");\r\n writer.appendExp(this.memberFunc);\r\n if (this.alias) {\r\n writer.appendSpace();\r\n writer.appendQuoted(this.alias);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describe a class name reference in ECSQL that appear in FROM clause of a SELECT.\r\n * @alpha\r\n */\r\nexport class ClassNameExpr extends ClassRefExpr {\r\n public static readonly type = ExprType.ClassName;\r\n public constructor(public readonly schemaNameOrAlias: string, public readonly className: string, public readonly tablespace?: string, public readonly alias?: string, public polymorphicInfo?: PolymorphicInfo, public readonly memberFunc?: MemberFuncCallExpr) {\r\n super(ClassNameExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.ClassName) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.ClassName'. ${JSON.stringify(node)}`);\r\n }\r\n const className = node.className as string;\r\n const tablespace = node.tableSpace ? node.tableSpace as string : undefined;\r\n const schemaName = node.schemaName as string;\r\n\r\n const alias = node.alias ? node.alias as string : undefined;\r\n const polymorphicInfo = node.polymorphicInfo ? { disqualify: node.polymorphicInfo.disqualify, allOrAny: node.polymorphicInfo.scope } as PolymorphicInfo : undefined;\r\n const memberFunc = node.func ? MemberFuncCallExpr.deserialize(node.func as NativeECSqlParseNode) : undefined;\r\n return new ClassNameExpr(schemaName, className, tablespace, alias, polymorphicInfo, memberFunc);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n if (this.polymorphicInfo) {\r\n if (this.polymorphicInfo.disqualify) {\r\n writer.append(this.polymorphicInfo.disqualify);\r\n }\r\n writer.appendKeyword(this.polymorphicInfo.allOrAny);\r\n writer.appendSpace();\r\n }\r\n if (this.tablespace) {\r\n writer.append(\"[\").append(this.tablespace).append(\"]\");\r\n writer.append(\".\");\r\n }\r\n writer.append(\"[\").append(this.schemaNameOrAlias).append(\"]\");\r\n writer.append(\".\");\r\n writer.append(\"[\").append(this.className).append(\"]\");\r\n\r\n if (this.memberFunc) {\r\n writer.append(\".\");\r\n writer.appendExp(this.memberFunc);\r\n }\r\n if (this.alias) {\r\n writer.appendSpace();\r\n writer.appendQuoted(this.alias);\r\n }\r\n }\r\n public static fromECSql(ecsql: string) {\r\n const regex = /\\s*((\\+)?\\s*(ALL|ONLY)\\s+)?(\\[?(\\w+)\\]?[\\.:])?\\[?(\\w+)\\]?[\\.:]\\[?(\\w+)\\]?(\\s+(AS)?(\\s+(\\w+)))?/i;\r\n const match = ecsql.match(regex);\r\n if (!match) {\r\n throw new Error(\"ECSQL className must follow syntax: [+][ALL|ONLY] [tablespace.][.|:][schemaOrAlias]][.|:][className] [AS] [alias\");\r\n }\r\n const plus = match[2];\r\n const allOrOnlyStr = match[3];\r\n const tablespace = match[5];\r\n const schemaOrAlias = match[6];\r\n const className = match[7];\r\n const alias = match[11];\r\n if (!schemaOrAlias || !className)\r\n throw new Error(\"ECSQL className must follow syntax: [+][ALL|ONLY] [tablespace.][.|:][schemaOrAlias]][.|:][className] [AS] [alias\");\r\n let polyInfo: PolymorphicInfo | undefined;\r\n if (allOrOnlyStr) {\r\n const allOrAny = allOrOnlyStr.toUpperCase() as AllOrAnyOp;\r\n polyInfo = { disqualify: plus as DisqualifyOp, allOrAny };\r\n }\r\n return new ClassNameExpr(schemaOrAlias, className, tablespace, alias, polyInfo);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a UPDATE statement in ECSQL.\r\n * @alpha\r\n */\r\nexport class UpdateStatementExpr extends StatementExpr {\r\n public static readonly type = ExprType.UpdateStatement;\r\n public constructor(public readonly className: ClassNameExpr, public readonly assignement: SetClauseExpr, public readonly where?: WhereClauseExp, public readonly options?: ECSqlOptionsClauseExpr) {\r\n super(UpdateStatementExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [this.className, this.assignement];\r\n if (this.where)\r\n exprs.push(this.where);\r\n if (this.options)\r\n exprs.push(this.options);\r\n return exprs;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.UpdateStatement) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.UpdateStatement'. ${JSON.stringify(node)}`);\r\n }\r\n const className = ClassNameExpr.deserialize(node.className);\r\n const assignment = SetClauseExpr.deserialize(node.assignment as NativeECSqlParseNode[]);\r\n const where = node.where ? WhereClauseExp.deserialize(node.where as NativeECSqlParseNode) : undefined;\r\n const options = node.options ? ECSqlOptionsClauseExpr.deserialize(node.options as NativeECSqlParseNode) : undefined;\r\n return new UpdateStatementExpr(className, assignment, where, options);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"UPDATE\");\r\n writer.appendSpace();\r\n writer.appendExp(this.className);\r\n writer.appendSpace();\r\n writer.appendExp(this.assignement);\r\n if (this.where) {\r\n writer.appendSpace();\r\n writer.appendExp(this.where);\r\n }\r\n if (this.options) {\r\n writer.appendSpace();\r\n writer.appendExp(this.options);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Supported options in ECSQL option clause\r\n * @alpha\r\n */\r\nexport type ECSqlSupportedOptions = \"NoECClassIdFilter\" | \"ReadonlyPropertiesAreUpdatable\";\r\n\r\n/**\r\n * ECSql option name and optionally value pair.\r\n * @alpha\r\n */\r\nexport interface ECSqlOption {\r\n name: ECSqlSupportedOptions;\r\n value?: string;\r\n}\r\n\r\n/**\r\n * Describe ECSQL option clause.\r\n * @alpha\r\n */\r\nexport class ECSqlOptionsClauseExpr extends Expr {\r\n public static readonly type = ExprType.ECSqlOptionsClause;\r\n public constructor(public readonly options: ECSqlOption[]) {\r\n super(ECSqlOptionsClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.Options) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.Options'. ${JSON.stringify(node)}`);\r\n }\r\n return new ECSqlOptionsClauseExpr(node.options as ECSqlOption[]);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"ECSQLOPTIONS\");\r\n writer.appendSpace();\r\n this.options.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendSpace();\r\n }\r\n writer.append(v.name);\r\n if (v.value) {\r\n writer.appendBinaryOp(\"=\");\r\n writer.append(v.value);\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * A single property value assignment for update clause\r\n * @alpha\r\n */\r\nexport class AssignmentExpr extends Expr {\r\n public static readonly type = ExprType.Assignment;\r\n public constructor(public readonly propertyName: PropertyNameExpr, public readonly valueExpr: ValueExpr) {\r\n super(SetClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.propertyName, this.valueExpr];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.Assignment) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.Assignment'. ${JSON.stringify(node)}`);\r\n }\r\n return new AssignmentExpr(PropertyNameExpr.deserialize(node.propertyName), ValueExpr.deserialize(node.value));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendExp(this.propertyName);\r\n writer.appendBinaryOp(\"=\");\r\n writer.appendExp(this.valueExpr);\r\n }\r\n}\r\n\r\n/**\r\n * Describe a set clause in a UPDATE statement\r\n * @alpha\r\n */\r\nexport class SetClauseExpr extends Expr {\r\n public static readonly type = ExprType.SetClause;\r\n public constructor(public readonly assignments: AssignmentExpr[]) {\r\n super(SetClauseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.assignments];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (!Array.isArray(node)) {\r\n throw new Error(`AssignmentClause expect array of NativeECSqlParseNode. ${JSON.stringify(node)}`);\r\n }\r\n const setClause = node as NativeECSqlParseNode[];\r\n const assignments: AssignmentExpr[] = [];\r\n setClause.forEach((v) => {\r\n assignments.push(AssignmentExpr.deserialize(v));\r\n });\r\n return new SetClauseExpr(assignments);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"SET\");\r\n writer.appendSpace();\r\n this.assignments.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n }\r\n}\r\n/**\r\n * Describe a strong typed IIF function in ECSQL\r\n * @alpha\r\n */\r\nexport class IIFExpr extends ValueExpr {\r\n public static readonly type = ExprType.IIF;\r\n public constructor(public readonly whenExpr: BooleanExpr, public readonly thenExpr: ValueExpr, public readonly elseExpr: ValueExpr) {\r\n super(IIFExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.whenExpr, this.thenExpr, this.elseExpr];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.IIF) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.IIF'. ${JSON.stringify(node)}`);\r\n }\r\n return new IIFExpr(BooleanExpr.deserialize(node.when as NativeECSqlParseNode), ValueExpr.deserialize(node.then as NativeECSqlParseNode), ValueExpr.deserialize(node.else as NativeECSqlParseNode));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"IIF\");\r\n writer.append(\"(\");\r\n writer.appendExp(this.whenExpr);\r\n writer.appendComma();\r\n writer.appendExp(this.thenExpr);\r\n writer.appendComma();\r\n writer.appendExp(this.elseExpr);\r\n writer.append(\")\");\r\n }\r\n}\r\n/**\r\n * When then block in CASE-WHEN-THEN expression\r\n * @alpha\r\n */\r\nexport interface WhenThenBlock {\r\n whenExpr: BooleanExpr;\r\n thenExpr: ValueExpr;\r\n}\r\n\r\n/**\r\n * Describe a CASE-WHEN-THEN expression in ECSQL\r\n * @alpha\r\n */\r\nexport class SearchCaseExpr extends ValueExpr {\r\n public static readonly type = ExprType.SearchCase;\r\n public constructor(public readonly whenThenList: WhenThenBlock[], public readonly elseExpr?: ValueExpr) {\r\n super(SearchCaseExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n const exprs: Expr[] = [];\r\n this.whenThenList.forEach((v) => {\r\n exprs.push(v.whenExpr, v.thenExpr);\r\n });\r\n if (this.elseExpr)\r\n exprs.push(this.elseExpr);\r\n return exprs;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.SearchCaseValue) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.SearchCaseValue'. ${JSON.stringify(node)}`);\r\n }\r\n const whenThenList: WhenThenBlock[] = [];\r\n for (const whenThenProps of node.whenThenList as NativeECSqlParseNode[]) {\r\n whenThenList.push({\r\n whenExpr: BooleanExpr.deserialize(whenThenProps.when as NativeECSqlParseNode),\r\n thenExpr: ValueExpr.deserialize(whenThenProps.then as NativeECSqlParseNode),\r\n });\r\n }\r\n const elseExp = node.elseExp ? ValueExpr.deserialize(node.elseExp as NativeECSqlParseNode) : undefined;\r\n return new SearchCaseExpr(whenThenList, elseExp);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"CASE\");\r\n this.whenThenList.forEach((v) => {\r\n writer.appendSpace();\r\n writer.appendKeyword(\"WHEN\");\r\n writer.appendSpace();\r\n writer.appendExp(v.whenExpr);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"THEN\");\r\n writer.appendSpace();\r\n writer.appendExp(v.thenExpr);\r\n });\r\n if (this.elseExpr) {\r\n writer.appendSpace();\r\n writer.appendKeyword(\"ELSE\");\r\n writer.appendSpace();\r\n writer.appendExp(this.elseExpr);\r\n }\r\n writer.appendSpace();\r\n writer.appendKeyword(\"END\");\r\n }\r\n}\r\n/**\r\n * Describe a binary value expression\r\n * @alpha\r\n */\r\nexport class BinaryValueExpr extends ValueExpr {\r\n public static readonly type = ExprType.BinaryValue;\r\n public constructor(public readonly op: BinaryValueOp, public readonly lhsExpr: ValueExpr, public readonly rhsExpr: ValueExpr) {\r\n super(BinaryValueExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.lhsExpr, this.rhsExpr];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.BinaryValue && node.id !== NativeExpIds.BinaryBoolean) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.BinaryValue' . ${JSON.stringify(node)}`);\r\n }\r\n return new BinaryValueExpr(node.op as BinaryValueOp, ValueExpr.deserialize(node.lhs as NativeECSqlParseNode), ValueExpr.deserialize(node.rhs as NativeECSqlParseNode));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.append(\"(\");\r\n writer.appendExp(this.lhsExpr);\r\n writer.appendBinaryOp(this.op);\r\n writer.appendExp(this.rhsExpr);\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Cast a expression into a target time e.g. CAST(<expr> AS STRING)\r\n * @alpha\r\n */\r\nexport class CastExpr extends ValueExpr {\r\n public static readonly type = ExprType.Cast;\r\n public constructor(public readonly valueExpr: ValueExpr, public readonly targetType: string) {\r\n super(CastExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.valueExpr];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.Cast) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.CastExp'. ${JSON.stringify(node)}`);\r\n }\r\n return new CastExpr(ValueExpr.deserialize(node.exp as NativeECSqlParseNode), node.as as string);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendKeyword(\"CAST\");\r\n writer.append(\"(\");\r\n writer.appendExp(this.valueExpr);\r\n writer.appendSpace();\r\n writer.appendKeyword(\"AS\");\r\n writer.appendSpace();\r\n writer.append(this.targetType);\r\n writer.append(\")\");\r\n }\r\n}\r\n/**\r\n * Represent a member function called w.r.t a ClassNameExpr\r\n * @alpha\r\n */\r\nexport class MemberFuncCallExpr extends Expr {\r\n public static readonly type = ExprType.MemberFuncCall;\r\n public constructor(public readonly functionName: string, public readonly args: ValueExpr[]) {\r\n super(MemberFuncCallExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.args];\r\n }\r\n public static deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.MemberFunctionCall) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.MemberFunctionCall'. ${JSON.stringify(node)}`);\r\n }\r\n\r\n const args = Array.from((node.args as NativeECSqlParseNode[]).map((v) => ValueExpr.deserialize(v)));\r\n return new MemberFuncCallExpr(node.name as string, args);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.appendQuoted(this.functionName);\r\n writer.append(\"(\");\r\n this.args.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.append(\")\");\r\n }\r\n}\r\n\r\n/**\r\n * Represent a function call in ecsql\r\n * @alpha\r\n */\r\nexport class FuncCallExpr extends ValueExpr {\r\n public static readonly type = ExprType.FuncCall;\r\n public constructor(public readonly functionName: string, public readonly args: ValueExpr[], public readonly allOrDistinct?: AllOrDistinctOp) {\r\n super(FuncCallExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [...this.args];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.FunctionCall) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.FunctionCall'. ${JSON.stringify(node)}`);\r\n }\r\n\r\n const args = Array.from((node.args as NativeECSqlParseNode[]).map((v) => ValueExpr.deserialize(v)));\r\n const rowQuantifier = node.quantifier ? node.quantifier as AllOrDistinctOp : undefined;\r\n return new FuncCallExpr(node.name as string, args, rowQuantifier);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.append(this.functionName);\r\n writer.append(\"(\");\r\n if (this.allOrDistinct) {\r\n writer.appendKeyword(this.allOrDistinct);\r\n writer.appendSpace();\r\n }\r\n this.args.forEach((v, i) => {\r\n if (i > 0) {\r\n writer.appendComma();\r\n }\r\n writer.appendExp(v);\r\n });\r\n writer.append(\")\");\r\n }\r\n public static makeAbs(arg: ValueExpr) {\r\n return new FuncCallExpr(\"ABS\", [arg]);\r\n }\r\n public static makeLower(arg: ValueExpr) {\r\n return new FuncCallExpr(\"LOWER\", [arg]);\r\n }\r\n public static makeUpper(arg: ValueExpr) {\r\n return new FuncCallExpr(\"UPPER\", [arg]);\r\n }\r\n public static makeLTrim(arg0: ValueExpr, arg1?: ValueExpr) {\r\n return new FuncCallExpr(\"LTRIM\", arg1 ? [arg0, arg1] : [arg0]);\r\n }\r\n public static makeRTrim(arg0: ValueExpr, arg1?: ValueExpr) {\r\n return new FuncCallExpr(\"RTRIM\", arg1 ? [arg0, arg1] : [arg0]);\r\n }\r\n public static makeLHex(arg: ValueExpr) {\r\n return new FuncCallExpr(\"HEX\", [arg]);\r\n }\r\n public static makeLIfNull(arg0: ValueExpr, arg1: ValueExpr) {\r\n return new FuncCallExpr(\"IFNULL\", [arg0, arg1]);\r\n }\r\n public static makeInstr(arg0: ValueExpr, arg1: ValueExpr) {\r\n return new FuncCallExpr(\"INSTR\", [arg0, arg1]);\r\n }\r\n public static makeLength(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"LENGTH\", [arg0]);\r\n }\r\n public static makeLike(arg0: ValueExpr, arg1: ValueExpr, arg2?: ValueExpr) {\r\n return new FuncCallExpr(\"LIKE\", arg2 ? [arg0, arg1, arg2] : [arg0, arg1]);\r\n }\r\n public static makeLikelihood(arg0: ValueExpr, arg1: ValueExpr) {\r\n return new FuncCallExpr(\"LIKELIHOOD\", [arg0, arg1]);\r\n }\r\n public static makeMax(arg: ValueExpr, ...optionalArgs: ValueExpr[]) {\r\n return new FuncCallExpr(\"MAX\", [arg, ...optionalArgs]);\r\n }\r\n public static makeMin(arg: ValueExpr, ...optionalArgs: ValueExpr[]) {\r\n return new FuncCallExpr(\"MIN\", [arg, ...optionalArgs]);\r\n }\r\n public static makePrintf(arg: ValueExpr, ...optionalArgs: ValueExpr[]) {\r\n return new FuncCallExpr(\"PRINTF\", [arg, ...optionalArgs]);\r\n }\r\n public static makeRandom() {\r\n return new FuncCallExpr(\"RANDOM\", []);\r\n }\r\n public static makeQuote(arg: ValueExpr) {\r\n return new FuncCallExpr(\"QUOTE\", [arg]);\r\n }\r\n public static makeRandomBlob(arg: ValueExpr) {\r\n return new FuncCallExpr(\"RANDOMBLOB\", [arg]);\r\n }\r\n public static makeReplace(arg0: ValueExpr, arg1: ValueExpr, arg2: ValueExpr) {\r\n return new FuncCallExpr(\"REPLACE\", [arg0, arg1, arg2]);\r\n }\r\n public static makeRound(arg0: ValueExpr, arg1?: ValueExpr) {\r\n return new FuncCallExpr(\"ROUND\", arg1 ? [arg0, arg1] : [arg0]);\r\n }\r\n public static makeSign(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"SIGN\", [arg0]);\r\n }\r\n public static makeUnhex(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"UNHEX\", [arg0]);\r\n }\r\n public static makeSoundex(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"SOUNDEX\", [arg0]);\r\n }\r\n public static makeTrim(arg0: ValueExpr, arg1?: ValueExpr) {\r\n return new FuncCallExpr(\"TRIM\", arg1 ? [arg0, arg1] : [arg0]);\r\n }\r\n public static makeTypeOf(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"TYPEOF\", [arg0]);\r\n }\r\n public static makeZeroBlob(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"ZEROBLOB\", [arg0]);\r\n }\r\n public static makeUnlikely(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"UNLIKELY\", [arg0]);\r\n }\r\n public static makeSubstring(arg0: ValueExpr, arg1: ValueExpr, arg2: ValueExpr) {\r\n return new FuncCallExpr(\"SUBSTR\", [arg0, arg1, arg2]);\r\n }\r\n public static makeStrToGuid(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"STRTOGUID\", [arg0]);\r\n }\r\n public static makeGuidToStr(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"GUIDTOSTR\", [arg0]);\r\n }\r\n public static makeIdToHex(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"IDTOHEX\", [arg0]);\r\n }\r\n public static makeHexToId(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"HEXTOID\", [arg0]);\r\n }\r\n public static makeEcClassName(arg0: ValueExpr, fmt: \"s:c\" | \"a:c\" | \"s\" | \"a\" | \"c\" | \"s.c\" | \"a.c\" = \"s:c\") {\r\n return new FuncCallExpr(\"EC_CLASSNAME\", [arg0, new LiteralExpr(LiteralValueType.String, fmt)]);\r\n }\r\n public static makeEcClassId(arg0: ValueExpr) {\r\n return new FuncCallExpr(\"EC_CLASSId\", [arg0]);\r\n }\r\n public static makeInstanceOf(arg0: ValueExpr, arg1: ValueExpr) {\r\n return new FuncCallExpr(\"EC_INSTANCEOF\", [arg0, arg1]);\r\n }\r\n}\r\n\r\n/**\r\n * Represent positional or named parameter\r\n * @alpha\r\n */\r\nexport class ParameterExpr extends ValueExpr {\r\n public static readonly type = ExprType.Parameter;\r\n public constructor(public readonly name?: string) {\r\n super(ParameterExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.Parameter) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.Parameter'. ${JSON.stringify(node)}`);\r\n }\r\n return new ParameterExpr(node.name as string);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n if (this.name && this.name !== \"\")\r\n writer.append(`:${this.name}`);\r\n else\r\n writer.append(`?`);\r\n }\r\n}\r\n\r\n/**\r\n * Unary value with operator e.g. [+|-|~]<number>\r\n * @alpha\r\n */\r\nexport class UnaryValueExpr extends ValueExpr {\r\n public static readonly type = ExprType.Unary;\r\n public constructor(public readonly op: UnaryValueOp, public readonly valueExpr: ValueExpr) {\r\n super(UnaryValueExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [this.valueExpr];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.UnaryValue && node.id !== NativeExpIds.BooleanFactor) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.UnaryValue && node.id !== NativeExpIds.BooleanFactor'. ${JSON.stringify(node)}`);\r\n }\r\n if (node.op !== \"+\" && node.op !== \"-\" && node.op !== \"~\") {\r\n throw new Error(`Unrecognized operator in .node.op'. Must me on of UnaryOp. ${JSON.stringify(node)}`);\r\n }\r\n return new UnaryValueExpr(node.op as UnaryValueOp, ValueExpr.deserialize(node.exp as NativeECSqlParseNode));\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n writer.append(this.op);\r\n writer.appendExp(this.valueExpr);\r\n }\r\n}\r\n\r\n/**\r\n * Represent constant literal like string, data, time, timestamp, number or null\r\n * @alpha\r\n */\r\nexport class LiteralExpr extends ValueExpr {\r\n public static readonly type = ExprType.Literal;\r\n public constructor(public readonly valueType: LiteralValueType, public readonly rawValue: string) {\r\n super(LiteralExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.LiteralValue) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.LiteralValue'. ${JSON.stringify(node)}`);\r\n }\r\n return new LiteralExpr(node.kind as LiteralValueType, node.value as string);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n if (this.valueType === LiteralValueType.String)\r\n writer.appendStringLiteral(this.rawValue);\r\n else if (this.valueType === LiteralValueType.Date)\r\n writer.appendKeyword(\"DATE\").appendSpace().appendStringLiteral(this.rawValue);\r\n else if (this.valueType === LiteralValueType.Time)\r\n writer.appendKeyword(\"TIME\").appendSpace().appendStringLiteral(this.rawValue);\r\n else if (this.valueType === LiteralValueType.Timestamp)\r\n writer.appendKeyword(\"TIMESTAMP\").appendSpace().appendStringLiteral(this.rawValue);\r\n else if (this.valueType === LiteralValueType.Null)\r\n writer.appendKeyword(\"NULL\");\r\n else\r\n writer.append(this.rawValue);\r\n }\r\n public static makeRaw(val: string) { return new LiteralExpr(LiteralValueType.Raw, val); }\r\n public static makeString(val: string) { return new LiteralExpr(LiteralValueType.String, val); }\r\n public static makeNumber(val: number) { return new LiteralExpr(LiteralValueType.Raw, val.toString()); }\r\n public static makeDate(val: Date) { return new LiteralExpr(LiteralValueType.Date, val.toDateString()); }\r\n public static makeTime(val: Date) { return new LiteralExpr(LiteralValueType.String, val.toTimeString()); }\r\n public static makeTimestamp(val: Date) { return new LiteralExpr(LiteralValueType.String, val.toTimeString()); }\r\n public static makeNull() { return new LiteralExpr(LiteralValueType.Null, \"\"); }\r\n}\r\n\r\n/**\r\n * Represent property name identifier\r\n * @alpha\r\n */\r\nexport class PropertyNameExpr extends ValueExpr {\r\n public static readonly type = ExprType.PropertyName;\r\n public constructor(public readonly propertyPath: string) {\r\n super(PropertyNameExpr.type);\r\n }\r\n public override get children(): Expr[] {\r\n return [];\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.PropertyName) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.PropertyNameExp'. ${JSON.stringify(node)}`);\r\n }\r\n return new PropertyNameExpr(node.path as string);\r\n }\r\n public writeTo(writer: ECSqlWriter): void {\r\n // donot quote $\r\n const str = this.propertyPath.split(\"->\");\r\n if (str.length === 2) {\r\n writer.append(str[0].split(\".\").map((v) => v.startsWith(\"[\") || v === \"$\" ? v : `[${v}]`).join(\".\"));\r\n writer.append(\"->\");\r\n }\r\n writer.append(str[str.length - 1].split(\".\").map((v) => v.startsWith(\"[\") || v === \"$\" ? v : `[${v}]`).join(\".\"));\r\n }\r\n}\r\n\r\n/**\r\n * Represent navigation value creation function\r\n * @alpha\r\n */\r\nexport class NavValueCreationFuncExpr extends ValueExpr {\r\n public static readonly type = ExprType.NavValueCreationFunc;\r\n public static readonly navValueCreationFuncExprName = \"NAVIGATION_VALUE\";\r\n public constructor(\r\n public readonly columnRefExp: DerivedPropertyExpr,\r\n public readonly idArgExp: ValueExpr,\r\n public readonly classNameExp: ClassNameExpr,\r\n public readonly relECClassIdExp?: ValueExpr,\r\n ) {\r\n super(NavValueCreationFuncExpr.type);\r\n }\r\n public override writeTo(writer: ECSqlWriter): void {\r\n writer.append(NavValueCreationFuncExpr.navValueCreationFuncExprName)\r\n .appendParenLeft()\r\n .appendExp(this.classNameExp)\r\n .append(\".\")\r\n .appendExp(this.columnRefExp)\r\n .appendComma();\r\n\r\n writer.appendExp(this.idArgExp);\r\n if (this.relECClassIdExp) {\r\n writer.appendComma();\r\n writer.appendExp(this.relECClassIdExp);\r\n }\r\n writer.appendParenRight();\r\n }\r\n public override get children(): Expr[] {\r\n const arr = [this.columnRefExp, this.idArgExp, this.classNameExp];\r\n if (this.relECClassIdExp)\r\n arr.push(this.relECClassIdExp);\r\n\r\n return arr;\r\n }\r\n public static override deserialize(node: NativeECSqlParseNode) {\r\n if (node.id !== NativeExpIds.NavValueCreationFunc) {\r\n throw new Error(`Parse node is 'node.id !== NativeExpIds.NavValueCreationFuncExp'. ${JSON.stringify(node)}`);\r\n }\r\n return new NavValueCreationFuncExpr(\r\n DerivedPropertyExpr.deserialize(node.ColumnRefExp as DerivedPropertyExpr),\r\n ValueExpr.deserialize(node.IdArgExp as ValueExpr),\r\n ClassNameExpr.deserialize(node.ClassNameExp as ClassNameExpr),\r\n node.RelECClassIdExp ? ValueExpr.deserialize(node.RelECClassIdExp) : undefined,\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ECSqlAst.js","sourceRoot":"","sources":["../../src/ECSqlAst.ts"],"names":[],"mappings":"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"}
|