data-finder-ts 0.1.0 → 0.1.3

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.
Files changed (63) hide show
  1. package/dist/chunk-3SSWFES4.js +448 -0
  2. package/dist/chunk-3SSWFES4.js.map +1 -0
  3. package/dist/chunk-5K2Z3YDY.js +393 -0
  4. package/dist/chunk-5K2Z3YDY.js.map +1 -0
  5. package/dist/chunk-6QTCGJWX.js +98 -0
  6. package/dist/chunk-6QTCGJWX.js.map +1 -0
  7. package/dist/chunk-DFYZVBII.js +652 -0
  8. package/dist/chunk-DFYZVBII.js.map +1 -0
  9. package/dist/chunk-EYXBYV2X.js +90 -0
  10. package/dist/chunk-EYXBYV2X.js.map +1 -0
  11. package/dist/chunk-FLEIUDZZ.js +14 -0
  12. package/dist/chunk-FLEIUDZZ.js.map +1 -0
  13. package/dist/chunk-V647VNMY.js +135 -0
  14. package/dist/chunk-V647VNMY.js.map +1 -0
  15. package/dist/datafinder/attribute.cjs +269 -0
  16. package/dist/datafinder/attribute.cjs.map +1 -0
  17. package/dist/datafinder/attribute.d.cts +45 -0
  18. package/dist/datafinder/attribute.d.ts +45 -0
  19. package/dist/datafinder/attribute.js +8 -0
  20. package/dist/datafinder/attribute.js.map +1 -0
  21. package/dist/datafinder/finder-registry.cjs +39 -0
  22. package/dist/datafinder/finder-registry.cjs.map +1 -0
  23. package/dist/datafinder/finder-registry.d.cts +4 -0
  24. package/dist/datafinder/finder-registry.d.ts +4 -0
  25. package/dist/datafinder/finder-registry.js +9 -0
  26. package/dist/datafinder/finder-registry.js.map +1 -0
  27. package/dist/datafinder/runner.cjs +1346 -0
  28. package/dist/datafinder/runner.cjs.map +1 -0
  29. package/dist/datafinder/runner.d.cts +33 -0
  30. package/dist/datafinder/runner.d.ts +33 -0
  31. package/dist/datafinder/runner.js +20 -0
  32. package/dist/datafinder/runner.js.map +1 -0
  33. package/dist/datafinder/sql-generator.cjs +1261 -0
  34. package/dist/datafinder/sql-generator.cjs.map +1 -0
  35. package/dist/datafinder/sql-generator.d.cts +17 -0
  36. package/dist/datafinder/sql-generator.d.ts +17 -0
  37. package/dist/datafinder/sql-generator.js +17 -0
  38. package/dist/datafinder/sql-generator.js.map +1 -0
  39. package/dist/datafinder/typed-attributes.cjs +751 -0
  40. package/dist/datafinder/typed-attributes.cjs.map +1 -0
  41. package/dist/datafinder/typed-attributes.d.cts +135 -0
  42. package/dist/datafinder/typed-attributes.d.ts +135 -0
  43. package/dist/datafinder/typed-attributes.js +25 -0
  44. package/dist/datafinder/typed-attributes.js.map +1 -0
  45. package/dist/index.cjs +1822 -0
  46. package/dist/index.cjs.map +1 -0
  47. package/dist/index.d.cts +27 -0
  48. package/dist/index.d.ts +27 -0
  49. package/dist/index.js +159 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/model/milestoning.cjs +145 -0
  52. package/dist/model/milestoning.cjs.map +1 -0
  53. package/dist/model/milestoning.d.cts +40 -0
  54. package/dist/model/milestoning.d.ts +40 -0
  55. package/dist/model/milestoning.js +18 -0
  56. package/dist/model/milestoning.js.map +1 -0
  57. package/dist/model/relational.cjs +514 -0
  58. package/dist/model/relational.cjs.map +1 -0
  59. package/dist/model/relational.d.cts +246 -0
  60. package/dist/model/relational.d.ts +246 -0
  61. package/dist/model/relational.js +91 -0
  62. package/dist/model/relational.js.map +1 -0
  63. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/datafinder/typed-attributes.ts","../../src/model/relational.ts","../../src/datafinder/attribute.ts"],"sourcesContent":["import { Attribute } from './attribute';\nimport {\n ComparisonOperation,\n ComparisonOperator,\n Operation,\n StringConstantOperation,\n FloatConstantOperation,\n IntegerConstantOperation,\n DateConstantOperation,\n DateTimeConstantOperation,\n BooleanConstantOperation,\n DecimalConstantOperation,\n AggregateOperation,\n AggregateOperator,\n ScalarFunction,\n ScalarFunctionOperation,\n DatePart,\n DateExtractOperation,\n DateArithmeticOperation,\n DateDiffOperation,\n JoinTreeNodeOperation,\n} from '../model/relational';\n\nexport class StringAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n upper(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.UPPER, 'Upper ' + this.displayName());\n }\n lower(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LOWER, 'Lower ' + this.displayName());\n }\n strip(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.TRIM, 'Strip ' + this.displayName());\n }\n lstrip(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LTRIM, 'LStrip ' + this.displayName());\n }\n rstrip(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.RTRIM, 'RStrip ' + this.displayName());\n }\n length(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LENGTH, 'Length ' + this.displayName());\n }\n reverse(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.REVERSE, 'Reverse ' + this.displayName());\n }\n left(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LEFT, 'Left ' + this.displayName(), n);\n }\n right(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.RIGHT, 'Right ' + this.displayName(), n);\n }\n repeat(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.REPEAT, 'Repeat ' + this.displayName(), n);\n }\n replace(fromStr: string, toStr: string): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.REPLACE, 'Replace ' + this.displayName(), undefined, [fromStr, toStr]);\n }\n substring(start: number, length?: number): ScalarFunctionOperation {\n // Python convention: 0-based start; SQL SUBSTRING is 1-based, so add 1\n const args: (number)[] = length !== undefined ? [start + 1, length] : [start + 1];\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.SUBSTRING, 'Substring ' + this.displayName(), undefined, args);\n }\n\n eq(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new StringConstantOperation(value));\n }\n ne(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new StringConstantOperation(value));\n }\n contains(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LIKE, new StringConstantOperation(`%${value}%`));\n }\n startsWith(prefix: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LIKE, new StringConstantOperation(`${prefix}%`));\n }\n endsWith(suffix: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LIKE, new StringConstantOperation(`%${suffix}`));\n }\n notContains(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_LIKE, new StringConstantOperation(`%${value}%`));\n }\n}\n\nexport abstract class NumericAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n sum(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.SUM, this.displayName() + ' Sum');\n }\n min(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.MIN, this.displayName() + ' Min');\n }\n max(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.MAX, this.displayName() + ' Max');\n }\n average(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.AVERAGE, this.displayName() + ' Average');\n }\n abs(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.ABS, 'Abs ' + this.displayName());\n }\n ceil(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.CEILING, 'Ceil ' + this.displayName());\n }\n floor(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.FLOOR, 'Floor ' + this.displayName());\n }\n sqrt(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.SQRT, 'Sqrt ' + this.displayName());\n }\n mod(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.MOD, 'Mod ' + this.displayName(), n);\n }\n power(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.POWER, 'Power ' + this.displayName(), n);\n }\n round(d?: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.ROUND, 'Round ' + this.displayName(), d);\n }\n}\n\nexport class DoubleAttribute extends NumericAttribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n eq(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new FloatConstantOperation(value));\n }\n ne(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new FloatConstantOperation(value));\n }\n gt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new FloatConstantOperation(value));\n }\n lt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new FloatConstantOperation(value));\n }\n gte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new FloatConstantOperation(value));\n }\n lte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new FloatConstantOperation(value));\n }\n}\n\nexport const FloatAttribute = DoubleAttribute;\nexport type FloatAttribute = DoubleAttribute;\n\nexport class DecimalAttribute extends NumericAttribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n eq(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new DecimalConstantOperation(value));\n }\n ne(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new DecimalConstantOperation(value));\n }\n gt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new DecimalConstantOperation(value));\n }\n lt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new DecimalConstantOperation(value));\n }\n gte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new DecimalConstantOperation(value));\n }\n lte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new DecimalConstantOperation(value));\n }\n}\n\nexport class IntegerAttribute extends NumericAttribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n eq(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new IntegerConstantOperation(value));\n }\n ne(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new IntegerConstantOperation(value));\n }\n gt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new IntegerConstantOperation(value));\n }\n lt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new IntegerConstantOperation(value));\n }\n gte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new IntegerConstantOperation(value));\n }\n lte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new IntegerConstantOperation(value));\n }\n}\n\nexport class BooleanAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n eq(value: boolean): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new BooleanConstantOperation(value));\n }\n isTrue(): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new BooleanConstantOperation(true));\n }\n isFalse(): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new BooleanConstantOperation(false));\n }\n}\n\nfunction parseDate(value: Date | string): Date {\n if (value instanceof Date) return value;\n const d = new Date(value);\n if (isNaN(d.getTime())) throw new Error(`Cannot parse date: ${value}`);\n return d;\n}\n\nexport class DateAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n eq(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new DateConstantOperation(parseDate(value)));\n }\n ne(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new DateConstantOperation(parseDate(value)));\n }\n gt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new DateConstantOperation(parseDate(value)));\n }\n lt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new DateConstantOperation(parseDate(value)));\n }\n gte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new DateConstantOperation(parseDate(value)));\n }\n lte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new DateConstantOperation(parseDate(value)));\n }\n\n year(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.YEAR, 'Year ' + this.displayName()); }\n month(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.MONTH, 'Month ' + this.displayName()); }\n day(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DAY, 'Day ' + this.displayName()); }\n quarter(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.QUARTER, 'Quarter ' + this.displayName()); }\n week(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.WEEK, 'Week ' + this.displayName()); }\n dayOfWeek(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DOW, 'Day Of Week ' + this.displayName()); }\n\n addDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, true, 'Add Days ' + this.displayName()); }\n addMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, true, 'Add Months ' + this.displayName()); }\n addYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, true, 'Add Years ' + this.displayName()); }\n subtractDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, false, 'Subtract Days ' + this.displayName()); }\n subtractMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, false, 'Subtract Months ' + this.displayName()); }\n subtractYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, false, 'Subtract Years ' + this.displayName()); }\n\n diffDays(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.DAY, 'Diff Days ' + this.displayName()); }\n diffMonths(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.MONTH, 'Diff Months ' + this.displayName()); }\n diffYears(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.YEAR, 'Diff Years ' + this.displayName()); }\n}\n\nexport class DateTimeAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) { super(displayName, columnName, columnDbType, owner, parent); }\n\n eq(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new DateTimeConstantOperation(parseDate(value)));\n }\n ne(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new DateTimeConstantOperation(parseDate(value)));\n }\n gt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new DateTimeConstantOperation(parseDate(value)));\n }\n lt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new DateTimeConstantOperation(parseDate(value)));\n }\n gte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new DateTimeConstantOperation(parseDate(value)));\n }\n lte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new DateTimeConstantOperation(parseDate(value)));\n }\n\n year(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.YEAR, 'Year ' + this.displayName()); }\n month(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.MONTH, 'Month ' + this.displayName()); }\n day(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DAY, 'Day ' + this.displayName()); }\n hour(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.HOUR, 'Hour ' + this.displayName()); }\n minute(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.MINUTE, 'Minute ' + this.displayName()); }\n second(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.SECOND, 'Second ' + this.displayName()); }\n quarter(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.QUARTER, 'Quarter ' + this.displayName()); }\n week(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.WEEK, 'Week ' + this.displayName()); }\n dayOfWeek(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DOW, 'Day Of Week ' + this.displayName()); }\n\n addDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, true, 'Add Days ' + this.displayName()); }\n addMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, true, 'Add Months ' + this.displayName()); }\n addYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, true, 'Add Years ' + this.displayName()); }\n addHours(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.HOUR, true, 'Add Hours ' + this.displayName()); }\n addMinutes(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MINUTE, true, 'Add Minutes ' + this.displayName()); }\n addSeconds(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.SECOND, true, 'Add Seconds ' + this.displayName()); }\n subtractDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, false, 'Subtract Days ' + this.displayName()); }\n subtractMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, false, 'Subtract Months ' + this.displayName()); }\n subtractYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, false, 'Subtract Years ' + this.displayName()); }\n subtractHours(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.HOUR, false, 'Subtract Hours ' + this.displayName()); }\n subtractMinutes(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MINUTE, false, 'Subtract Minutes ' + this.displayName()); }\n subtractSeconds(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.SECOND, false, 'Subtract Seconds ' + this.displayName()); }\n\n diffDays(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.DAY, 'Diff Days ' + this.displayName()); }\n diffMonths(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.MONTH, 'Diff Months ' + this.displayName()); }\n diffYears(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.YEAR, 'Diff Years ' + this.displayName()); }\n diffHours(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.HOUR, 'Diff Hours ' + this.displayName()); }\n diffMinutes(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.MINUTE, 'Diff Minutes ' + this.displayName()); }\n diffSeconds(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.SECOND, 'Diff Seconds ' + this.displayName()); }\n}\n","export enum ComparisonOperator {\n EQUAL = 'EQUAL',\n NOT_EQUAL = 'NOT_EQUAL',\n LESS_THAN = 'LESS_THAN',\n GREATER_THAN = 'GREATER_THAN',\n LESS_THAN_OR_EQUAL_TO = 'LESS_THAN_OR_EQUAL_TO',\n GREATER_THAN_OR_EQUAL_TO = 'GREATER_THAN_OR_EQUAL_TO',\n LIKE = 'LIKE',\n NOT_LIKE = 'NOT_LIKE',\n}\n\nexport enum LogicalOperator {\n AND = 'AND',\n OR = 'OR',\n}\n\nexport enum AggregateOperator {\n COUNT = 'COUNT',\n SUM = 'SUM',\n MIN = 'MIN',\n MAX = 'MAX',\n AVERAGE = 'AVERAGE',\n}\n\nexport enum ScalarFunction {\n ABS = 'ABS',\n CEILING = 'CEILING',\n FLOOR = 'FLOOR',\n MOD = 'MOD',\n POWER = 'POWER',\n SQRT = 'SQRT',\n ROUND = 'ROUND',\n UPPER = 'UPPER',\n LOWER = 'LOWER',\n TRIM = 'TRIM',\n LTRIM = 'LTRIM',\n RTRIM = 'RTRIM',\n LENGTH = 'LENGTH',\n REVERSE = 'REVERSE',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n REPEAT = 'REPEAT',\n REPLACE = 'REPLACE',\n SUBSTRING = 'SUBSTRING',\n}\n\nexport enum DatePart {\n YEAR = 'YEAR',\n MONTH = 'MONTH',\n DAY = 'DAY',\n HOUR = 'HOUR',\n MINUTE = 'MINUTE',\n SECOND = 'SECOND',\n QUARTER = 'QUARTER',\n WEEK = 'WEEK',\n DOW = 'DOW',\n}\n\nexport enum SortDirection {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\nexport abstract class RelationalOperationElement {}\n\nexport abstract class Operation extends RelationalOperationElement {\n andOp(other: RelationalOperationElement): Operation {\n return new LogicalOperation(this, LogicalOperator.AND, other);\n }\n}\n\nexport class NoOperation extends Operation {\n andOp(other: RelationalOperationElement): Operation {\n return other as Operation;\n }\n}\n\nexport abstract class ConstantOperation extends RelationalOperationElement {}\n\nexport class IntegerConstantOperation extends ConstantOperation {\n constructor(readonly value: number) { super(); }\n}\n\nexport class FloatConstantOperation extends ConstantOperation {\n constructor(readonly value: number) { super(); }\n}\n\nexport class StringConstantOperation extends ConstantOperation {\n constructor(readonly value: string) { super(); }\n}\n\nexport class DateConstantOperation extends ConstantOperation {\n constructor(readonly value: Date) { super(); }\n}\n\nexport class DateTimeConstantOperation extends ConstantOperation {\n constructor(readonly value: Date) { super(); }\n}\n\nexport class DecimalConstantOperation extends ConstantOperation {\n constructor(readonly value: number) { super(); }\n}\n\nexport class BooleanConstantOperation extends ConstantOperation {\n constructor(readonly value: boolean) { super(); }\n}\n\nexport abstract class UnaryOperation extends Operation {\n constructor(readonly element: RelationalOperationElement) { super(); }\n}\n\nexport abstract class BinaryOperation extends Operation {\n constructor(\n readonly left: RelationalOperationElement,\n readonly right: RelationalOperationElement,\n ) { super(); }\n}\n\nexport class IsNullOperation extends UnaryOperation {}\n\nexport class IsNotNullOperation extends UnaryOperation {}\n\nexport class ComparisonOperation extends BinaryOperation {\n constructor(\n left: RelationalOperationElement,\n readonly operator: ComparisonOperator,\n right: RelationalOperationElement,\n ) { super(left, right); }\n}\n\nexport class LogicalOperation extends BinaryOperation {\n constructor(\n left: RelationalOperationElement,\n readonly operator: LogicalOperator,\n right: RelationalOperationElement,\n ) { super(left, right); }\n}\n\nexport class WindowSpecification {\n constructor(\n readonly partitionBy: RelationalOperationElement[] = [],\n readonly orderBy: SortOperation[] = [],\n ) {}\n}\n\nexport class AggregateOperation extends UnaryOperation {\n constructor(\n element: RelationalOperationElement,\n readonly operator: AggregateOperator,\n readonly displayName?: string,\n readonly window?: WindowSpecification,\n ) { super(element); }\n\n over(partitionBy?: RelationalOperationElement[], orderBy?: SortOperation[]): AggregateOperation {\n return new AggregateOperation(this.element, this.operator, this.displayName,\n new WindowSpecification(partitionBy ?? [], orderBy ?? []));\n }\n}\n\nexport enum WindowFunction {\n ROW_NUMBER = 'ROW_NUMBER',\n RANK = 'RANK',\n DENSE_RANK = 'DENSE_RANK',\n NTILE = 'NTILE',\n LAG = 'LAG',\n LEAD = 'LEAD',\n FIRST_VALUE = 'FIRST_VALUE',\n LAST_VALUE = 'LAST_VALUE',\n CUME_DIST = 'CUME_DIST',\n PERCENT_RANK = 'PERCENT_RANK',\n}\n\nexport class WindowFunctionOperation extends UnaryOperation {\n constructor(\n element: RelationalOperationElement | null,\n readonly func: WindowFunction,\n readonly displayName?: string,\n readonly secondArg?: number,\n readonly extraArgs: (string | number)[] = [],\n readonly window?: WindowSpecification,\n ) { super(element as RelationalOperationElement); }\n\n over(partitionBy?: RelationalOperationElement[], orderBy?: SortOperation[]): WindowFunctionOperation {\n return new WindowFunctionOperation(this.element, this.func, this.displayName, this.secondArg,\n [...this.extraArgs], new WindowSpecification(partitionBy ?? [], orderBy ?? []));\n }\n}\n\nexport class ScalarFunctionOperation extends UnaryOperation {\n constructor(\n element: RelationalOperationElement,\n readonly func: ScalarFunction,\n readonly displayName?: string,\n readonly secondArg?: number,\n readonly extraArgs: (string | number)[] = [],\n ) { super(element); }\n}\n\nexport class DateExtractOperation extends UnaryOperation {\n constructor(\n element: RelationalOperationElement,\n readonly part: DatePart,\n readonly displayName?: string,\n ) { super(element); }\n}\n\nexport class DateArithmeticOperation extends UnaryOperation {\n constructor(\n element: RelationalOperationElement,\n readonly n: number,\n readonly unit: DatePart,\n readonly isAdd: boolean = true,\n readonly displayName?: string,\n ) { super(element); }\n}\n\nexport class DateDiffOperation extends UnaryOperation {\n constructor(\n element: RelationalOperationElement,\n readonly other: Date,\n readonly unit: DatePart,\n readonly displayName?: string,\n ) { super(element); }\n}\n\nexport class Column extends RelationalOperationElement {\n table?: Table;\n\n constructor(\n readonly name: string,\n readonly type: string,\n readonly owner?: string,\n readonly primaryKey: boolean = false,\n ) { super(); }\n}\n\nexport class ForeignKey {\n constructor(readonly column: Column, readonly references: Column) {}\n}\n\nexport abstract class DataStore {\n readonly schemas: Schema[] = [];\n\n constructor(readonly name: string) {}\n\n abstract namespace(schemaName: string): string;\n}\n\nexport class Database extends DataStore {\n constructor(name: string, readonly location?: string) { super(name); }\n\n namespace(schemaName: string): string { return schemaName; }\n}\n\nexport class DataCatalog extends DataStore {\n constructor(name: string) { super(name); }\n\n namespace(schemaName: string): string { return `${this.name}.${schemaName}`; }\n}\n\nexport class Schema {\n readonly tables: Table[] = [];\n\n constructor(readonly name: string, readonly datastore?: DataStore) {\n datastore?.schemas.push(this);\n }\n}\n\nexport class Table {\n private readonly _columnsByName: Map<string, Column> = new Map();\n readonly foreignKeys: ForeignKey[] = [];\n\n constructor(readonly name: string, columns: Column[], readonly schema?: Schema) {\n for (const col of columns) {\n if (this._columnsByName.has(col.name)) {\n throw new Error(`Duplicate column name '${col.name}' in table '${name}'`);\n }\n this._columnsByName.set(col.name, col);\n col.table = this;\n }\n schema?.tables.push(this);\n }\n\n get columns(): Column[] {\n return Array.from(this._columnsByName.values());\n }\n\n get qualifiedName(): string {\n if (!this.schema) return this.name;\n if (!this.schema.datastore) return `${this.schema.name}.${this.name}`;\n return `${this.schema.datastore.namespace(this.schema.name)}.${this.name}`;\n }\n}\n\nexport class JoinOperation {\n filter?: RelationalOperationElement;\n\n constructor(\n readonly name: string,\n readonly target: Table,\n readonly left: Column,\n readonly right: Column,\n filter?: RelationalOperationElement,\n ) {\n this.filter = filter;\n }\n}\n\nexport class JoinTreeNodeOperation {\n constructor(\n readonly join: JoinOperation,\n readonly parent?: JoinTreeNodeOperation,\n ) {}\n}\n\nexport class ColumnWithJoin extends RelationalOperationElement {\n constructor(\n readonly column: Column,\n readonly parent?: JoinTreeNodeOperation,\n ) { super(); }\n}\n\nexport class SortOperation {\n constructor(\n readonly column: ColumnWithJoin,\n readonly direction: SortDirection,\n ) {}\n}\n\nexport class CountAllOperation extends RelationalOperationElement {\n constructor(readonly table: string) { super(); }\n}\n","import {\n Column,\n AggregateOperation,\n AggregateOperator,\n ColumnWithJoin,\n SortOperation,\n SortDirection,\n IsNullOperation,\n IsNotNullOperation,\n JoinTreeNodeOperation,\n WindowFunction,\n WindowFunctionOperation,\n WindowSpecification,\n} from '../model/relational';\n\nexport abstract class Attribute {\n private readonly _displayName: string;\n private readonly _column: Column;\n private readonly _owner: string;\n private readonly _parent?: JoinTreeNodeOperation;\n\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n ) {\n this._displayName = displayName;\n this._column = new Column(columnName, columnDbType, owner);\n this._owner = owner;\n this._parent = parent;\n }\n\n column(): Column { return this._column; }\n owner(): string { return this._owner; }\n parent(): JoinTreeNodeOperation | undefined { return this._parent; }\n displayName(): string { return this._displayName; }\n\n cwj(): ColumnWithJoin {\n return new ColumnWithJoin(this._column, this._parent);\n }\n\n count(): AggregateOperation {\n return new AggregateOperation(\n new ColumnWithJoin(this._column, this._parent),\n AggregateOperator.COUNT,\n this._displayName + ' Count',\n );\n }\n\n ascending(): SortOperation {\n return new SortOperation(new ColumnWithJoin(this._column, this._parent), SortDirection.ASC);\n }\n\n descending(): SortOperation {\n return new SortOperation(new ColumnWithJoin(this._column, this._parent), SortDirection.DESC);\n }\n\n isNull(): IsNullOperation {\n return new IsNullOperation(new ColumnWithJoin(this._column, this._parent));\n }\n\n isNotNull(): IsNotNullOperation {\n return new IsNotNullOperation(new ColumnWithJoin(this._column, this._parent));\n }\n\n private _windowSpec(\n partitionBy?: ColumnWithJoin | ColumnWithJoin[],\n orderBy?: SortOperation | SortOperation[],\n ): WindowSpecification {\n const pb = partitionBy === undefined ? [] : Array.isArray(partitionBy) ? partitionBy : [partitionBy];\n const ob = orderBy === undefined ? [] : Array.isArray(orderBy) ? orderBy : [orderBy];\n return new WindowSpecification(pb, ob);\n }\n\n rank(opts: {\n method?: 'min' | 'dense' | 'first';\n pct?: boolean;\n partitionBy?: ColumnWithJoin | ColumnWithJoin[];\n orderBy?: SortOperation | SortOperation[];\n } = {}): WindowFunctionOperation {\n const { method = 'min', pct = false, partitionBy, orderBy } = opts;\n let func: WindowFunction;\n let name: string;\n if (pct) {\n if (method === 'max' as string) { func = WindowFunction.CUME_DIST; name = 'Cume Dist'; }\n else { func = WindowFunction.PERCENT_RANK; name = 'Percent Rank'; }\n } else if (method === 'first') { func = WindowFunction.ROW_NUMBER; name = 'Row Number'; }\n else if (method === 'dense') { func = WindowFunction.DENSE_RANK; name = 'Dense Rank'; }\n else { func = WindowFunction.RANK; name = 'Rank'; }\n return new WindowFunctionOperation(null, func, name, undefined, [], this._windowSpec(partitionBy, orderBy));\n }\n\n qcut(buckets: number, opts: {\n partitionBy?: ColumnWithJoin | ColumnWithJoin[];\n orderBy?: SortOperation | SortOperation[];\n } = {}): WindowFunctionOperation {\n return new WindowFunctionOperation(null, WindowFunction.NTILE, 'Quantile', buckets, [],\n this._windowSpec(opts.partitionBy, opts.orderBy));\n }\n\n shift(periods = 1, opts: {\n fillValue?: string | number;\n partitionBy?: ColumnWithJoin | ColumnWithJoin[];\n orderBy?: SortOperation | SortOperation[];\n } = {}): WindowFunctionOperation {\n const extraArgs: (string | number)[] = opts.fillValue !== undefined ? [opts.fillValue] : [];\n const func = periods >= 0 ? WindowFunction.LAG : WindowFunction.LEAD;\n const label = periods >= 0 ? 'Lag' : 'Lead';\n return new WindowFunctionOperation(\n new ColumnWithJoin(this._column, this._parent),\n func,\n label + ' ' + this._displayName,\n Math.abs(periods),\n extraArgs,\n this._windowSpec(opts.partitionBy, opts.orderBy),\n );\n }\n\n first(opts: {\n partitionBy?: ColumnWithJoin | ColumnWithJoin[];\n orderBy?: SortOperation | SortOperation[];\n } = {}): WindowFunctionOperation {\n return new WindowFunctionOperation(\n new ColumnWithJoin(this._column, this._parent),\n WindowFunction.FIRST_VALUE,\n 'First ' + this._displayName,\n undefined, [],\n this._windowSpec(opts.partitionBy, opts.orderBy),\n );\n }\n\n last(opts: {\n partitionBy?: ColumnWithJoin | ColumnWithJoin[];\n orderBy?: SortOperation | SortOperation[];\n } = {}): WindowFunctionOperation {\n return new WindowFunctionOperation(\n new ColumnWithJoin(this._column, this._parent),\n WindowFunction.LAST_VALUE,\n 'Last ' + this._displayName,\n undefined, [],\n this._windowSpec(opts.partitionBy, opts.orderBy),\n );\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,135 @@
1
+ import { Attribute } from './attribute.cjs';
2
+ import { JoinTreeNodeOperation, Operation, DateExtractOperation, DateArithmeticOperation, DateDiffOperation, AggregateOperation, ScalarFunctionOperation } from '../model/relational.cjs';
3
+
4
+ declare class StringAttribute extends Attribute {
5
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
6
+ upper(): ScalarFunctionOperation;
7
+ lower(): ScalarFunctionOperation;
8
+ strip(): ScalarFunctionOperation;
9
+ lstrip(): ScalarFunctionOperation;
10
+ rstrip(): ScalarFunctionOperation;
11
+ length(): ScalarFunctionOperation;
12
+ reverse(): ScalarFunctionOperation;
13
+ left(n: number): ScalarFunctionOperation;
14
+ right(n: number): ScalarFunctionOperation;
15
+ repeat(n: number): ScalarFunctionOperation;
16
+ replace(fromStr: string, toStr: string): ScalarFunctionOperation;
17
+ substring(start: number, length?: number): ScalarFunctionOperation;
18
+ eq(value: string): Operation;
19
+ ne(value: string): Operation;
20
+ contains(value: string): Operation;
21
+ startsWith(prefix: string): Operation;
22
+ endsWith(suffix: string): Operation;
23
+ notContains(value: string): Operation;
24
+ }
25
+ declare abstract class NumericAttribute extends Attribute {
26
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
27
+ sum(): AggregateOperation;
28
+ min(): AggregateOperation;
29
+ max(): AggregateOperation;
30
+ average(): AggregateOperation;
31
+ abs(): ScalarFunctionOperation;
32
+ ceil(): ScalarFunctionOperation;
33
+ floor(): ScalarFunctionOperation;
34
+ sqrt(): ScalarFunctionOperation;
35
+ mod(n: number): ScalarFunctionOperation;
36
+ power(n: number): ScalarFunctionOperation;
37
+ round(d?: number): ScalarFunctionOperation;
38
+ }
39
+ declare class DoubleAttribute extends NumericAttribute {
40
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
41
+ eq(value: number): Operation;
42
+ ne(value: number): Operation;
43
+ gt(value: number): Operation;
44
+ lt(value: number): Operation;
45
+ gte(value: number): Operation;
46
+ lte(value: number): Operation;
47
+ }
48
+ declare const FloatAttribute: typeof DoubleAttribute;
49
+ type FloatAttribute = DoubleAttribute;
50
+ declare class DecimalAttribute extends NumericAttribute {
51
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
52
+ eq(value: number): Operation;
53
+ ne(value: number): Operation;
54
+ gt(value: number): Operation;
55
+ lt(value: number): Operation;
56
+ gte(value: number): Operation;
57
+ lte(value: number): Operation;
58
+ }
59
+ declare class IntegerAttribute extends NumericAttribute {
60
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
61
+ eq(value: number): Operation;
62
+ ne(value: number): Operation;
63
+ gt(value: number): Operation;
64
+ lt(value: number): Operation;
65
+ gte(value: number): Operation;
66
+ lte(value: number): Operation;
67
+ }
68
+ declare class BooleanAttribute extends Attribute {
69
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
70
+ eq(value: boolean): Operation;
71
+ isTrue(): Operation;
72
+ isFalse(): Operation;
73
+ }
74
+ declare class DateAttribute extends Attribute {
75
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
76
+ eq(value: Date | string): Operation;
77
+ ne(value: Date | string): Operation;
78
+ gt(value: Date | string): Operation;
79
+ lt(value: Date | string): Operation;
80
+ gte(value: Date | string): Operation;
81
+ lte(value: Date | string): Operation;
82
+ year(): DateExtractOperation;
83
+ month(): DateExtractOperation;
84
+ day(): DateExtractOperation;
85
+ quarter(): DateExtractOperation;
86
+ week(): DateExtractOperation;
87
+ dayOfWeek(): DateExtractOperation;
88
+ addDays(n: number): DateArithmeticOperation;
89
+ addMonths(n: number): DateArithmeticOperation;
90
+ addYears(n: number): DateArithmeticOperation;
91
+ subtractDays(n: number): DateArithmeticOperation;
92
+ subtractMonths(n: number): DateArithmeticOperation;
93
+ subtractYears(n: number): DateArithmeticOperation;
94
+ diffDays(other: Date): DateDiffOperation;
95
+ diffMonths(other: Date): DateDiffOperation;
96
+ diffYears(other: Date): DateDiffOperation;
97
+ }
98
+ declare class DateTimeAttribute extends Attribute {
99
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
100
+ eq(value: Date | string): Operation;
101
+ ne(value: Date | string): Operation;
102
+ gt(value: Date | string): Operation;
103
+ lt(value: Date | string): Operation;
104
+ gte(value: Date | string): Operation;
105
+ lte(value: Date | string): Operation;
106
+ year(): DateExtractOperation;
107
+ month(): DateExtractOperation;
108
+ day(): DateExtractOperation;
109
+ hour(): DateExtractOperation;
110
+ minute(): DateExtractOperation;
111
+ second(): DateExtractOperation;
112
+ quarter(): DateExtractOperation;
113
+ week(): DateExtractOperation;
114
+ dayOfWeek(): DateExtractOperation;
115
+ addDays(n: number): DateArithmeticOperation;
116
+ addMonths(n: number): DateArithmeticOperation;
117
+ addYears(n: number): DateArithmeticOperation;
118
+ addHours(n: number): DateArithmeticOperation;
119
+ addMinutes(n: number): DateArithmeticOperation;
120
+ addSeconds(n: number): DateArithmeticOperation;
121
+ subtractDays(n: number): DateArithmeticOperation;
122
+ subtractMonths(n: number): DateArithmeticOperation;
123
+ subtractYears(n: number): DateArithmeticOperation;
124
+ subtractHours(n: number): DateArithmeticOperation;
125
+ subtractMinutes(n: number): DateArithmeticOperation;
126
+ subtractSeconds(n: number): DateArithmeticOperation;
127
+ diffDays(other: Date): DateDiffOperation;
128
+ diffMonths(other: Date): DateDiffOperation;
129
+ diffYears(other: Date): DateDiffOperation;
130
+ diffHours(other: Date): DateDiffOperation;
131
+ diffMinutes(other: Date): DateDiffOperation;
132
+ diffSeconds(other: Date): DateDiffOperation;
133
+ }
134
+
135
+ export { BooleanAttribute, DateAttribute, DateTimeAttribute, DecimalAttribute, DoubleAttribute, FloatAttribute, IntegerAttribute, NumericAttribute, StringAttribute };
@@ -0,0 +1,135 @@
1
+ import { Attribute } from './attribute.js';
2
+ import { JoinTreeNodeOperation, Operation, DateExtractOperation, DateArithmeticOperation, DateDiffOperation, AggregateOperation, ScalarFunctionOperation } from '../model/relational.js';
3
+
4
+ declare class StringAttribute extends Attribute {
5
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
6
+ upper(): ScalarFunctionOperation;
7
+ lower(): ScalarFunctionOperation;
8
+ strip(): ScalarFunctionOperation;
9
+ lstrip(): ScalarFunctionOperation;
10
+ rstrip(): ScalarFunctionOperation;
11
+ length(): ScalarFunctionOperation;
12
+ reverse(): ScalarFunctionOperation;
13
+ left(n: number): ScalarFunctionOperation;
14
+ right(n: number): ScalarFunctionOperation;
15
+ repeat(n: number): ScalarFunctionOperation;
16
+ replace(fromStr: string, toStr: string): ScalarFunctionOperation;
17
+ substring(start: number, length?: number): ScalarFunctionOperation;
18
+ eq(value: string): Operation;
19
+ ne(value: string): Operation;
20
+ contains(value: string): Operation;
21
+ startsWith(prefix: string): Operation;
22
+ endsWith(suffix: string): Operation;
23
+ notContains(value: string): Operation;
24
+ }
25
+ declare abstract class NumericAttribute extends Attribute {
26
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
27
+ sum(): AggregateOperation;
28
+ min(): AggregateOperation;
29
+ max(): AggregateOperation;
30
+ average(): AggregateOperation;
31
+ abs(): ScalarFunctionOperation;
32
+ ceil(): ScalarFunctionOperation;
33
+ floor(): ScalarFunctionOperation;
34
+ sqrt(): ScalarFunctionOperation;
35
+ mod(n: number): ScalarFunctionOperation;
36
+ power(n: number): ScalarFunctionOperation;
37
+ round(d?: number): ScalarFunctionOperation;
38
+ }
39
+ declare class DoubleAttribute extends NumericAttribute {
40
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
41
+ eq(value: number): Operation;
42
+ ne(value: number): Operation;
43
+ gt(value: number): Operation;
44
+ lt(value: number): Operation;
45
+ gte(value: number): Operation;
46
+ lte(value: number): Operation;
47
+ }
48
+ declare const FloatAttribute: typeof DoubleAttribute;
49
+ type FloatAttribute = DoubleAttribute;
50
+ declare class DecimalAttribute extends NumericAttribute {
51
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
52
+ eq(value: number): Operation;
53
+ ne(value: number): Operation;
54
+ gt(value: number): Operation;
55
+ lt(value: number): Operation;
56
+ gte(value: number): Operation;
57
+ lte(value: number): Operation;
58
+ }
59
+ declare class IntegerAttribute extends NumericAttribute {
60
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
61
+ eq(value: number): Operation;
62
+ ne(value: number): Operation;
63
+ gt(value: number): Operation;
64
+ lt(value: number): Operation;
65
+ gte(value: number): Operation;
66
+ lte(value: number): Operation;
67
+ }
68
+ declare class BooleanAttribute extends Attribute {
69
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
70
+ eq(value: boolean): Operation;
71
+ isTrue(): Operation;
72
+ isFalse(): Operation;
73
+ }
74
+ declare class DateAttribute extends Attribute {
75
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
76
+ eq(value: Date | string): Operation;
77
+ ne(value: Date | string): Operation;
78
+ gt(value: Date | string): Operation;
79
+ lt(value: Date | string): Operation;
80
+ gte(value: Date | string): Operation;
81
+ lte(value: Date | string): Operation;
82
+ year(): DateExtractOperation;
83
+ month(): DateExtractOperation;
84
+ day(): DateExtractOperation;
85
+ quarter(): DateExtractOperation;
86
+ week(): DateExtractOperation;
87
+ dayOfWeek(): DateExtractOperation;
88
+ addDays(n: number): DateArithmeticOperation;
89
+ addMonths(n: number): DateArithmeticOperation;
90
+ addYears(n: number): DateArithmeticOperation;
91
+ subtractDays(n: number): DateArithmeticOperation;
92
+ subtractMonths(n: number): DateArithmeticOperation;
93
+ subtractYears(n: number): DateArithmeticOperation;
94
+ diffDays(other: Date): DateDiffOperation;
95
+ diffMonths(other: Date): DateDiffOperation;
96
+ diffYears(other: Date): DateDiffOperation;
97
+ }
98
+ declare class DateTimeAttribute extends Attribute {
99
+ constructor(displayName: string, columnName: string, columnDbType: string, owner: string, parent?: JoinTreeNodeOperation);
100
+ eq(value: Date | string): Operation;
101
+ ne(value: Date | string): Operation;
102
+ gt(value: Date | string): Operation;
103
+ lt(value: Date | string): Operation;
104
+ gte(value: Date | string): Operation;
105
+ lte(value: Date | string): Operation;
106
+ year(): DateExtractOperation;
107
+ month(): DateExtractOperation;
108
+ day(): DateExtractOperation;
109
+ hour(): DateExtractOperation;
110
+ minute(): DateExtractOperation;
111
+ second(): DateExtractOperation;
112
+ quarter(): DateExtractOperation;
113
+ week(): DateExtractOperation;
114
+ dayOfWeek(): DateExtractOperation;
115
+ addDays(n: number): DateArithmeticOperation;
116
+ addMonths(n: number): DateArithmeticOperation;
117
+ addYears(n: number): DateArithmeticOperation;
118
+ addHours(n: number): DateArithmeticOperation;
119
+ addMinutes(n: number): DateArithmeticOperation;
120
+ addSeconds(n: number): DateArithmeticOperation;
121
+ subtractDays(n: number): DateArithmeticOperation;
122
+ subtractMonths(n: number): DateArithmeticOperation;
123
+ subtractYears(n: number): DateArithmeticOperation;
124
+ subtractHours(n: number): DateArithmeticOperation;
125
+ subtractMinutes(n: number): DateArithmeticOperation;
126
+ subtractSeconds(n: number): DateArithmeticOperation;
127
+ diffDays(other: Date): DateDiffOperation;
128
+ diffMonths(other: Date): DateDiffOperation;
129
+ diffYears(other: Date): DateDiffOperation;
130
+ diffHours(other: Date): DateDiffOperation;
131
+ diffMinutes(other: Date): DateDiffOperation;
132
+ diffSeconds(other: Date): DateDiffOperation;
133
+ }
134
+
135
+ export { BooleanAttribute, DateAttribute, DateTimeAttribute, DecimalAttribute, DoubleAttribute, FloatAttribute, IntegerAttribute, NumericAttribute, StringAttribute };
@@ -0,0 +1,25 @@
1
+ import {
2
+ BooleanAttribute,
3
+ DateAttribute,
4
+ DateTimeAttribute,
5
+ DecimalAttribute,
6
+ DoubleAttribute,
7
+ FloatAttribute,
8
+ IntegerAttribute,
9
+ NumericAttribute,
10
+ StringAttribute
11
+ } from "../chunk-5K2Z3YDY.js";
12
+ import "../chunk-V647VNMY.js";
13
+ import "../chunk-3SSWFES4.js";
14
+ export {
15
+ BooleanAttribute,
16
+ DateAttribute,
17
+ DateTimeAttribute,
18
+ DecimalAttribute,
19
+ DoubleAttribute,
20
+ FloatAttribute,
21
+ IntegerAttribute,
22
+ NumericAttribute,
23
+ StringAttribute
24
+ };
25
+ //# sourceMappingURL=typed-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}