@grest-ts/sql 0.0.5

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 (146) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +498 -0
  3. package/dist/src/MysqlTable.d.ts +35 -0
  4. package/dist/src/MysqlTable.d.ts.map +1 -0
  5. package/dist/src/MysqlTable.js +70 -0
  6. package/dist/src/MysqlTable.js.map +1 -0
  7. package/dist/src/MysqlTableStructureParser.d.ts +106 -0
  8. package/dist/src/MysqlTableStructureParser.d.ts.map +1 -0
  9. package/dist/src/MysqlTableStructureParser.js +189 -0
  10. package/dist/src/MysqlTableStructureParser.js.map +1 -0
  11. package/dist/src/SQL.d.ts +72 -0
  12. package/dist/src/SQL.d.ts.map +1 -0
  13. package/dist/src/SQL.js +94 -0
  14. package/dist/src/SQL.js.map +1 -0
  15. package/dist/src/SqlExpression.d.ts +49 -0
  16. package/dist/src/SqlExpression.d.ts.map +1 -0
  17. package/dist/src/SqlExpression.js +117 -0
  18. package/dist/src/SqlExpression.js.map +1 -0
  19. package/dist/src/SqlFunctions.d.ts +118 -0
  20. package/dist/src/SqlFunctions.d.ts.map +1 -0
  21. package/dist/src/SqlFunctions.js +331 -0
  22. package/dist/src/SqlFunctions.js.map +1 -0
  23. package/dist/src/Symbols.d.ts +11 -0
  24. package/dist/src/Symbols.d.ts.map +1 -0
  25. package/dist/src/Symbols.js +11 -0
  26. package/dist/src/Symbols.js.map +1 -0
  27. package/dist/src/Types.d.ts +110 -0
  28. package/dist/src/Types.d.ts.map +1 -0
  29. package/dist/src/Types.js +34 -0
  30. package/dist/src/Types.js.map +1 -0
  31. package/dist/src/delete/DeleteBuilder.d.ts +19 -0
  32. package/dist/src/delete/DeleteBuilder.d.ts.map +1 -0
  33. package/dist/src/delete/DeleteBuilder.js +50 -0
  34. package/dist/src/delete/DeleteBuilder.js.map +1 -0
  35. package/dist/src/delete/DeleteInterfaces.d.ts +27 -0
  36. package/dist/src/delete/DeleteInterfaces.d.ts.map +1 -0
  37. package/dist/src/delete/DeleteInterfaces.js +2 -0
  38. package/dist/src/delete/DeleteInterfaces.js.map +1 -0
  39. package/dist/src/escape.d.ts +4 -0
  40. package/dist/src/escape.d.ts.map +1 -0
  41. package/dist/src/escape.js +50 -0
  42. package/dist/src/escape.js.map +1 -0
  43. package/dist/src/index.d.ts +7 -0
  44. package/dist/src/index.d.ts.map +1 -0
  45. package/dist/src/index.js +7 -0
  46. package/dist/src/index.js.map +1 -0
  47. package/dist/src/insert/InsertBuilder.d.ts +19 -0
  48. package/dist/src/insert/InsertBuilder.d.ts.map +1 -0
  49. package/dist/src/insert/InsertBuilder.js +62 -0
  50. package/dist/src/insert/InsertBuilder.js.map +1 -0
  51. package/dist/src/insert/InsertInterfaces.d.ts +11 -0
  52. package/dist/src/insert/InsertInterfaces.d.ts.map +1 -0
  53. package/dist/src/insert/InsertInterfaces.js +2 -0
  54. package/dist/src/insert/InsertInterfaces.js.map +1 -0
  55. package/dist/src/select/SelectBuilder.d.ts +72 -0
  56. package/dist/src/select/SelectBuilder.d.ts.map +1 -0
  57. package/dist/src/select/SelectBuilder.js +315 -0
  58. package/dist/src/select/SelectBuilder.js.map +1 -0
  59. package/dist/src/select/parts/GatewayWhere.d.ts +17 -0
  60. package/dist/src/select/parts/GatewayWhere.d.ts.map +1 -0
  61. package/dist/src/select/parts/GatewayWhere.js +2 -0
  62. package/dist/src/select/parts/GatewayWhere.js.map +1 -0
  63. package/dist/src/select/parts/S0Union.d.ts +20 -0
  64. package/dist/src/select/parts/S0Union.d.ts.map +1 -0
  65. package/dist/src/select/parts/S0Union.js +2 -0
  66. package/dist/src/select/parts/S0Union.js.map +1 -0
  67. package/dist/src/select/parts/S0Uses.d.ts +6 -0
  68. package/dist/src/select/parts/S0Uses.d.ts.map +1 -0
  69. package/dist/src/select/parts/S0Uses.js +2 -0
  70. package/dist/src/select/parts/S0Uses.js.map +1 -0
  71. package/dist/src/select/parts/S0With.d.ts +6 -0
  72. package/dist/src/select/parts/S0With.d.ts.map +1 -0
  73. package/dist/src/select/parts/S0With.js +2 -0
  74. package/dist/src/select/parts/S0With.js.map +1 -0
  75. package/dist/src/select/parts/S1Join.d.ts +12 -0
  76. package/dist/src/select/parts/S1Join.d.ts.map +1 -0
  77. package/dist/src/select/parts/S1Join.js +2 -0
  78. package/dist/src/select/parts/S1Join.js.map +1 -0
  79. package/dist/src/select/parts/S2Columns.d.ts +35 -0
  80. package/dist/src/select/parts/S2Columns.d.ts.map +1 -0
  81. package/dist/src/select/parts/S2Columns.js +3 -0
  82. package/dist/src/select/parts/S2Columns.js.map +1 -0
  83. package/dist/src/select/parts/S2Where.d.ts +13 -0
  84. package/dist/src/select/parts/S2Where.d.ts.map +1 -0
  85. package/dist/src/select/parts/S2Where.js +2 -0
  86. package/dist/src/select/parts/S2Where.js.map +1 -0
  87. package/dist/src/select/parts/S3GroupBy.d.ts +10 -0
  88. package/dist/src/select/parts/S3GroupBy.d.ts.map +1 -0
  89. package/dist/src/select/parts/S3GroupBy.js +2 -0
  90. package/dist/src/select/parts/S3GroupBy.js.map +1 -0
  91. package/dist/src/select/parts/S4Having.d.ts +10 -0
  92. package/dist/src/select/parts/S4Having.d.ts.map +1 -0
  93. package/dist/src/select/parts/S4Having.js +2 -0
  94. package/dist/src/select/parts/S4Having.js.map +1 -0
  95. package/dist/src/select/parts/S5OrderBy.d.ts +9 -0
  96. package/dist/src/select/parts/S5OrderBy.d.ts.map +1 -0
  97. package/dist/src/select/parts/S5OrderBy.js +2 -0
  98. package/dist/src/select/parts/S5OrderBy.js.map +1 -0
  99. package/dist/src/select/parts/S6Limit.d.ts +7 -0
  100. package/dist/src/select/parts/S6Limit.d.ts.map +1 -0
  101. package/dist/src/select/parts/S6Limit.js +2 -0
  102. package/dist/src/select/parts/S6Limit.js.map +1 -0
  103. package/dist/src/select/parts/S7Exec.d.ts +26 -0
  104. package/dist/src/select/parts/S7Exec.d.ts.map +1 -0
  105. package/dist/src/select/parts/S7Exec.js +2 -0
  106. package/dist/src/select/parts/S7Exec.js.map +1 -0
  107. package/dist/src/tsconfig.json +16 -0
  108. package/dist/src/update/UpdateBuilder.d.ts +28 -0
  109. package/dist/src/update/UpdateBuilder.d.ts.map +1 -0
  110. package/dist/src/update/UpdateBuilder.js +77 -0
  111. package/dist/src/update/UpdateBuilder.js.map +1 -0
  112. package/dist/src/update/UpdateInterfaces.d.ts +34 -0
  113. package/dist/src/update/UpdateInterfaces.d.ts.map +1 -0
  114. package/dist/src/update/UpdateInterfaces.js +2 -0
  115. package/dist/src/update/UpdateInterfaces.js.map +1 -0
  116. package/dist/tsconfig.publish.tsbuildinfo +1 -0
  117. package/package.json +54 -0
  118. package/src/MysqlTable.ts +102 -0
  119. package/src/MysqlTableStructureParser.ts +283 -0
  120. package/src/SQL.ts +244 -0
  121. package/src/SqlExpression.ts +172 -0
  122. package/src/SqlFunctions.ts +471 -0
  123. package/src/Symbols.ts +11 -0
  124. package/src/Types.ts +244 -0
  125. package/src/delete/DeleteBuilder.ts +65 -0
  126. package/src/delete/DeleteInterfaces.ts +70 -0
  127. package/src/escape.ts +52 -0
  128. package/src/index.ts +6 -0
  129. package/src/insert/InsertBuilder.ts +76 -0
  130. package/src/insert/InsertInterfaces.ts +16 -0
  131. package/src/select/SelectBuilder.ts +372 -0
  132. package/src/select/parts/GatewayWhere.ts +31 -0
  133. package/src/select/parts/S0Union.ts +43 -0
  134. package/src/select/parts/S0Uses.ts +21 -0
  135. package/src/select/parts/S0With.ts +21 -0
  136. package/src/select/parts/S1Join.ts +39 -0
  137. package/src/select/parts/S2Columns.ts +68 -0
  138. package/src/select/parts/S2Where.ts +51 -0
  139. package/src/select/parts/S3GroupBy.ts +23 -0
  140. package/src/select/parts/S4Having.ts +24 -0
  141. package/src/select/parts/S5OrderBy.ts +21 -0
  142. package/src/select/parts/S6Limit.ts +9 -0
  143. package/src/select/parts/S7Exec.ts +41 -0
  144. package/src/tsconfig.json +16 -0
  145. package/src/update/UpdateBuilder.ts +96 -0
  146. package/src/update/UpdateInterfaces.ts +87 -0
@@ -0,0 +1,117 @@
1
+ import { COMPARE, CONTAINS, ENDS_WITH, IN, IS_NULL, LIKE, NOT_NULL, orderByStructureToSqlString, STARTS_WITH } from "./SqlFunctions.js";
2
+ import { escapeId } from "./escape.js";
3
+ export class SqlExpression {
4
+ expression;
5
+ nameAs;
6
+ transformer;
7
+ constructor(expression, nameAs, parser) {
8
+ this.expression = expression;
9
+ this.nameAs = nameAs;
10
+ this.transformer = parser;
11
+ Object.freeze(this);
12
+ }
13
+ asExpr() {
14
+ return this;
15
+ }
16
+ static create(expression, nameAs, parser) {
17
+ return new SqlExpression(expression, nameAs, parser);
18
+ }
19
+ cast() {
20
+ return this;
21
+ }
22
+ as(name) {
23
+ return new SqlExpression(this.expression, name, this.transformer);
24
+ }
25
+ transform(func) {
26
+ return new SqlExpression(this.expression, this.nameAs, func);
27
+ }
28
+ asyncTransform(func) {
29
+ return new SqlExpression(this.expression, this.nameAs, func);
30
+ }
31
+ // -------------------------------------------------------------------
32
+ // BOOLEAN CHECKS
33
+ // -------------------------------------------------------------------
34
+ isNull() {
35
+ return IS_NULL(this.asExpr());
36
+ }
37
+ isNotNull() {
38
+ return NOT_NULL(this.asExpr());
39
+ }
40
+ notNull() {
41
+ return NOT_NULL(this.asExpr());
42
+ }
43
+ in(values) {
44
+ return IN(this.asExpr(), values);
45
+ }
46
+ notEq(col2) {
47
+ return COMPARE(this.asExpr(), "!=", col2);
48
+ }
49
+ eq(col2) {
50
+ return COMPARE(this.asExpr(), "=", col2);
51
+ }
52
+ lt(col2) {
53
+ return COMPARE(this.asExpr(), "<", col2);
54
+ }
55
+ gt(col2) {
56
+ return COMPARE(this.asExpr(), ">", col2);
57
+ }
58
+ lte(col2) {
59
+ return COMPARE(this.asExpr(), "<=", col2);
60
+ }
61
+ gte(col2) {
62
+ return COMPARE(this.asExpr(), ">=", col2);
63
+ }
64
+ compare(op, value) {
65
+ return COMPARE(this.asExpr(), op, value);
66
+ }
67
+ like(value) {
68
+ return LIKE(this.asExpr(), value);
69
+ }
70
+ contains(value) {
71
+ return CONTAINS(this.asExpr(), value);
72
+ }
73
+ startsWith(value) {
74
+ return STARTS_WITH(this.asExpr(), value);
75
+ }
76
+ endsWith(value) {
77
+ return ENDS_WITH(this.asExpr(), value);
78
+ }
79
+ }
80
+ export class SqlExpressionWithOver extends SqlExpression {
81
+ static create(expression, nameAs) {
82
+ return new SqlExpressionWithOver(expression, nameAs);
83
+ }
84
+ over(a, b) {
85
+ let namedWindow = undefined;
86
+ let func = undefined;
87
+ if (typeof a === "function") {
88
+ func = a;
89
+ }
90
+ else if (typeof a === "string") {
91
+ namedWindow = a;
92
+ if (typeof b === "function") {
93
+ func = b;
94
+ }
95
+ }
96
+ const builder = new Over();
97
+ func(builder);
98
+ return SqlExpression.create(this.expression + " OVER (" + (namedWindow ? escapeId(namedWindow) + " " : "") + builder.toString() + ")");
99
+ }
100
+ }
101
+ export class Over {
102
+ _partitionBy;
103
+ _orderBy;
104
+ orderBy(...cols) {
105
+ this._orderBy = orderByStructureToSqlString(cols);
106
+ return this;
107
+ }
108
+ partitionBy(...cols) {
109
+ this._partitionBy = cols.map(e => e.expression);
110
+ return this;
111
+ }
112
+ toString() {
113
+ return (this._partitionBy?.length > 0 ? " PARTITION BY " + this._partitionBy.join(", ") : "") +
114
+ (this._orderBy?.length > 0 ? " ORDER BY " + this._orderBy.join(", ") : "");
115
+ }
116
+ }
117
+ //# sourceMappingURL=SqlExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlExpression.js","sourceRoot":"","sources":["../../src/SqlExpression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { COMPARISON_SIGNS, DATE_ADD_UNITS, OrderByStructure, PrepareQueryArgument, SQL_BOOL } from "./Types";
2
+ import { AnyBoolExpr, AnyExpr, Expr, ExprWithOver } from "./SqlExpression";
3
+ import { tDate, tDateTime } from "@grest-ts/schema";
4
+ /**
5
+ * Type is the value. (If string "aa" is given, type of the column will be "aa")
6
+ * Useful for enum values etc.
7
+ */
8
+ export declare function VALUE<Type>(value: Type): Expr<never, unknown, Type>;
9
+ export declare function NULL<Name extends string = never>(as?: Name): Expr<never, Name, null>;
10
+ export declare function BOOL<Name extends string = never>(value: SQL_BOOL, as?: Name): Expr<never, Name, SQL_BOOL>;
11
+ export declare function ONE(): Expr<never, "one", 1>;
12
+ /**
13
+ * DO NOT USE THIS METHOD :)
14
+ *
15
+ * Using this method is very dangerous, it DOES NOT escape strings passed to the function.
16
+ * If you use a unsafe variable from somewhere to construct a string you are open to SQL injection.
17
+ *
18
+ * If you do happen to use it, make all strings as literals and DO NOT use any variables to construct the string. It will bite you!
19
+ *
20
+ * To safely use columns do this (but in practice this example is dumb, you should do Sql.round(c.price)): ("ROUND(", c.price,")")
21
+ *
22
+ * DO NOT USE THIS METHOD :)
23
+ */
24
+ export declare function DANGEROUS_SQL_EXPRESSION<TableRef>(arg: {
25
+ I_DID_NOT_USE_UNSAFE_VARIABLES_TO_CONSTRUCT_THIS_STRING: (string | Expr<TableRef, string | unknown, string | number | unknown>)[];
26
+ }): Expr<TableRef, unknown, unknown>;
27
+ /**
28
+ * Accepts undefined as well.
29
+ */
30
+ export declare function OR<T1 extends string, T2 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>): Expr<T1 | T2, unknown, SQL_BOOL>;
31
+ export declare function OR<T1 extends string, T2 extends string, T3 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>): Expr<T1 | T2 | T3, unknown, SQL_BOOL>;
32
+ export declare function OR<T1 extends string, T2 extends string, T3 extends string, T4 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>): Expr<T1 | T2 | T3 | T4, unknown, SQL_BOOL>;
33
+ export declare function OR<T1 extends string, T2 extends string, T3 extends string, T4 extends string, T5 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>, col5: AnyBoolExpr<T5>): Expr<T1 | T2 | T3 | T4 | T5, unknown, SQL_BOOL>;
34
+ export declare function OR<T1 extends string, T2 extends string, T3 extends string, T4 extends string, T5 extends string, T6 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>, col5: AnyBoolExpr<T5>, col6: AnyBoolExpr<T6>): Expr<T1 | T2 | T3 | T4 | T5 | T6, unknown, SQL_BOOL>;
35
+ /**
36
+ * Accepts undefined as well.
37
+ */
38
+ export declare function AND<T1 extends string, T2 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>): Expr<T1 | T2, unknown, SQL_BOOL>;
39
+ export declare function AND<T1 extends string, T2 extends string, T3 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>): Expr<T1 | T2 | T3, unknown, SQL_BOOL>;
40
+ export declare function AND<T1 extends string, T2 extends string, T3 extends string, T4 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>): Expr<T1 | T2 | T3 | T4, unknown, SQL_BOOL>;
41
+ export declare function AND<T1 extends string, T2 extends string, T3 extends string, T4 extends string, T5 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>, col5: AnyBoolExpr<T5>): Expr<T1 | T2 | T3 | T4 | T5, unknown, SQL_BOOL>;
42
+ export declare function AND<T1 extends string, T2 extends string, T3 extends string, T4 extends string, T5 extends string, T6 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>, col5: AnyBoolExpr<T5>, col6: AnyBoolExpr<T6>): Expr<T1 | T2 | T3 | T4 | T5 | T6, unknown, SQL_BOOL>;
43
+ export declare function AND<T1 extends string, T2 extends string, T3 extends string, T4 extends string, T5 extends string, T6 extends string, T7 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>, col5: AnyBoolExpr<T5>, col6: AnyBoolExpr<T6>, col7: AnyBoolExpr<T7>): Expr<T1 | T2 | T3 | T4 | T5 | T6 | T7, unknown, SQL_BOOL>;
44
+ export declare function AND<T1 extends string, T2 extends string, T3 extends string, T4 extends string, T5 extends string, T6 extends string, T7 extends string, T8 extends string>(col1: AnyBoolExpr<T1>, col2: AnyBoolExpr<T2>, col3: AnyBoolExpr<T3>, col4: AnyBoolExpr<T4>, col5: AnyBoolExpr<T5>, col6: AnyBoolExpr<T6>, col7: AnyBoolExpr<T7>, col8: AnyBoolExpr<T8>): Expr<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8, unknown, SQL_BOOL>;
45
+ export declare function IF<Type extends string | number, TableRef1 extends string = never, TableRef2 extends string = never, TableRef3 extends string = never>(col: Expr<TableRef1, string | unknown, SQL_BOOL>, col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument, col3: Type | Expr<TableRef3, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef1 | TableRef2 | TableRef3, unknown, Type>;
46
+ export declare function IFNULL<Type1 extends string | number, Type2 extends string | number, TableRef1 extends string = never, TableRef2 extends string = never>(col1: Type1 | null | Expr<TableRef2, string | unknown, Type1> | PrepareQueryArgument, col2: Type2 | null | Expr<TableRef2, string | unknown, Type2> | PrepareQueryArgument): Expr<TableRef1 | TableRef2, unknown, Type1 | Type2>;
47
+ export declare function NOT<TableRef>(col: Expr<TableRef, string | unknown, SQL_BOOL>): Expr<TableRef, unknown, SQL_BOOL>;
48
+ export declare function EXISTS<TableRef>(col: Expr<TableRef, string | unknown, any>): Expr<TableRef, unknown, SQL_BOOL>;
49
+ export declare function NOT_EXISTS<TableRef>(col: Expr<TableRef, string | unknown, any>): Expr<TableRef, unknown, SQL_BOOL>;
50
+ export declare function IS_NULL<TableRef, Name, Type extends string | number>(col: Expr<TableRef, Name, Type>): Expr<TableRef, Name, SQL_BOOL>;
51
+ export declare function NOT_NULL<TableRef, Name, Type extends string | number>(col: Expr<TableRef, Name, Type>): Expr<TableRef, Name, SQL_BOOL>;
52
+ export declare function IN<Type extends string | number, TableRef1 = never, TableRef2 = never>(col1: Type | Expr<TableRef1, string | unknown, Type> | PrepareQueryArgument, col2: Type[] | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef1 | TableRef2, unknown, Type>;
53
+ export declare function EQ<Type1 extends string | number, TableRef1 = never, TableRef2 = never>(col1: Type1 | Expr<TableRef1, string | unknown, Type1> | PrepareQueryArgument, col2: Type1 | Expr<TableRef2, string | unknown, Type1> | PrepareQueryArgument): Expr<TableRef1 | TableRef2, unknown, SQL_BOOL>;
54
+ export declare function COMPARE<Type extends string | number, TableRef = never, TableRef2 = never>(col1: Type | Expr<TableRef, string | unknown, Type> | PrepareQueryArgument, op: COMPARISON_SIGNS, col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
55
+ export declare function LIKE<TableRef>(col: (Expr<TableRef, string | unknown, string | number>), value: string | PrepareQueryArgument): Expr<TableRef, unknown, SQL_BOOL>;
56
+ /**
57
+ * Does LIKE %X% search.
58
+ */
59
+ export declare function CONTAINS<TableRef>(col: (Expr<TableRef, string | unknown, string | number>), value: string): Expr<TableRef, unknown, SQL_BOOL>;
60
+ /**
61
+ * Does LIKE X% search.
62
+ */
63
+ export declare function STARTS_WITH<TableRef>(col: (Expr<TableRef, string | unknown, string | number>), value: string): Expr<TableRef, unknown, SQL_BOOL>;
64
+ /**
65
+ * Does LIKE %X search.
66
+ */
67
+ export declare function ENDS_WITH<TableRef>(col: (Expr<TableRef, string | unknown, string | number>), value: string): Expr<TableRef, unknown, SQL_BOOL>;
68
+ export declare function TRIM<Type extends string, TableRef = never>(value: string | Expr<TableRef, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef, unknown, Type>;
69
+ /**
70
+ * normal SQL length function, but JS does not allow usage of length.
71
+ */
72
+ export declare function LENGTH<TableRef = never>(value: string | Expr<TableRef, string | unknown, string> | PrepareQueryArgument): Expr<TableRef, unknown, number>;
73
+ export declare function CONCAT<TableRef = never>(...expr: (string | PrepareQueryArgument | Expr<TableRef, any, any>)[]): Expr<TableRef, unknown, string>;
74
+ export declare function CONCAT_WS<TableRef = never>(separator: string, ...expr: (string | PrepareQueryArgument | Expr<TableRef, any, any>)[]): Expr<TableRef, unknown, string>;
75
+ export declare function GROUP_CONCAT<TableRef, TableRef2 = never>(call?: (arg: GroupConcat<TableRef2>) => GroupConcat<TableRef2>): Expr<TableRef | TableRef2, unknown, string>;
76
+ export declare class GroupConcat<TableRef = never> {
77
+ private _columns;
78
+ private _distinct;
79
+ private _orderBy;
80
+ private _separator;
81
+ all<TableRef2>(...args: (string | PrepareQueryArgument | Expr<TableRef2, any, any>)[]): GroupConcat<TableRef | TableRef2>;
82
+ distinct<TableRef2>(...args: (string | PrepareQueryArgument | Expr<TableRef2, any, any>)[]): GroupConcat<TableRef | TableRef2>;
83
+ orderBy<TableRef2>(...cols: OrderByStructure<Expr<TableRef2, string, any>>): GroupConcat<TableRef | TableRef2>;
84
+ separator(separator: string): this;
85
+ toString(): string;
86
+ }
87
+ export declare function NOW(): Expr<never, unknown, tDateTime>;
88
+ export declare function CUR_DATE(): Expr<never, unknown, tDate>;
89
+ export declare function YEAR<Name, TableRef>(field: Expr<TableRef, Name, tDate | tDateTime>): Expr<TableRef, Name, number>;
90
+ export declare function UNIX_TIMESTAMP<Name, TableRef>(field: Expr<TableRef, Name, tDate | tDateTime>): Expr<TableRef, Name, number>;
91
+ export declare function DATE<Name, TableRef>(field: Expr<TableRef, Name, tDate | tDateTime>): Expr<TableRef, Name, tDate>;
92
+ export declare function DATE_TIME<Name, TableRef>(field: Expr<TableRef, Name, tDateTime>): Expr<TableRef, Name, tDateTime>;
93
+ export declare function DATE_FORMAT<Name, TableRef = never>(col: tDate | tDateTime | Expr<TableRef, Name, tDate | tDateTime>, format: string): Expr<TableRef, Name, string>;
94
+ export declare function DATEDIFF<TableRef1 = never, TableRef2 = never>(col1: tDate | tDateTime | Expr<TableRef1, string | unknown, tDate | tDateTime> | PrepareQueryArgument, col2: tDate | tDateTime | Expr<TableRef2, string | unknown, tDate | tDateTime> | PrepareQueryArgument): Expr<TableRef1 | TableRef2, unknown, number>;
95
+ export declare function DATE_SUB<Name, TableRef = never>(col: tDate | tDateTime | Expr<TableRef, Name, tDate | tDateTime>, interval: string | number, unit: DATE_ADD_UNITS): Expr<TableRef, Name, tDateTime>;
96
+ export declare function DATE_ADD<Name, TableRef = never>(col: tDate | tDateTime | Expr<TableRef, Name, tDate | tDateTime>, interval: string | number, unit: DATE_ADD_UNITS): Expr<TableRef, Name, tDateTime>;
97
+ export declare function MATH<Name, TableRef>(expression: string, args: Expr<TableRef, Name, number>[]): Expr<TableRef, Name, number>;
98
+ export declare function ABS<Name, TableRef>(col: Expr<TableRef, Name, number>): Expr<TableRef, Name, number>;
99
+ export declare function CEIL<Name, TableRef>(col: Expr<TableRef, Name, number>): Expr<TableRef, Name, number>;
100
+ export declare function FLOOR<Name, TableRef>(col: Expr<TableRef, Name, number>): Expr<TableRef, Name, number>;
101
+ export declare function ROUND<Name, TableRef>(col: Expr<TableRef, Name, number>): Expr<TableRef, Name, number>;
102
+ export declare function SIGN<Name, TableRef>(col: Expr<TableRef, Name, number>): Expr<TableRef, Name, -1 | 0 | 1>;
103
+ export declare function SQRT<Name, TableRef>(col: Expr<TableRef, Name, number>): Expr<TableRef, Name, number>;
104
+ export declare function MIN<Type, Name, TableRef>(col: Expr<TableRef, Name, Type>): ExprWithOver<TableRef, Name, Type>;
105
+ export declare function MAX<Type, Name, TableRef>(col: Expr<TableRef, Name, Type>): ExprWithOver<TableRef, Name, Type>;
106
+ export declare function SUM<Type, Name, TableRef = never>(col: Type | Expr<TableRef, Name, Type>): ExprWithOver<TableRef, Name, number>;
107
+ export declare function COUNT<Type, Name, TableRef = never>(col: Type | Expr<TableRef, Name, Type>): Expr<TableRef, Name, number>;
108
+ export declare function RANK(): ExprWithOver<never, unknown, number>;
109
+ export declare function ROW_NUMBER(): ExprWithOver<never, unknown, number>;
110
+ export declare function LAG<Type, TableRef>(col: Expr<TableRef, string | unknown, Type>, n?: number, def?: number): ExprWithOver<TableRef, unknown, Type>;
111
+ export declare function LEAD<Type, TableRef>(col: Expr<TableRef, string | unknown, Type>, n?: number, def?: number): ExprWithOver<TableRef, unknown, Type>;
112
+ export declare function FIRST_VALUE<Type, TableRef>(col: Expr<TableRef, string | unknown, Type>): ExprWithOver<TableRef, unknown, Type>;
113
+ export declare function LAST_VALUE<Type, TableRef>(col: Expr<TableRef, string | unknown, Type>): ExprWithOver<TableRef, unknown, Type>;
114
+ export declare function NTH_VALUE<Type, TableRef>(col: Expr<TableRef, string | unknown, Type>, value: number): ExprWithOver<TableRef, unknown, Type>;
115
+ export declare function BIN_TO_UUID<TableRef, Name>(col: Expr<TableRef, Name, any>): Expr<TableRef, Name, string>;
116
+ export declare function orderByStructureToSqlString(items: [] | OrderByStructure<any>): string[];
117
+ export declare function toSql(e: unknown | number | string | boolean | PrepareQueryArgument | AnyExpr | any): string | number;
118
+ //# sourceMappingURL=SqlFunctions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlFunctions.d.ts","sourceRoot":"","sources":["../../src/SqlFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,331 @@
1
+ import { ComparisonOperandsLookup, DateAddUnitsLookup, isPrepareArgument } from "./Types.js";
2
+ import { SqlExpression, SqlExpressionWithOver } from "./SqlExpression.js";
3
+ import { escape } from "./escape.js";
4
+ import { escapeId } from "./escape.js";
5
+ /**
6
+ * Type is the value. (If string "aa" is given, type of the column will be "aa")
7
+ * Useful for enum values etc.
8
+ */
9
+ export function VALUE(value) {
10
+ return SqlExpression.create(escape(value));
11
+ }
12
+ export function NULL(as) {
13
+ return SqlExpression.create("NULL", as);
14
+ }
15
+ export function BOOL(value, as) {
16
+ return SqlExpression.create(value ? "1" : "0", as);
17
+ }
18
+ export function ONE() {
19
+ return SqlExpression.create("1", "one");
20
+ }
21
+ /**
22
+ * DO NOT USE THIS METHOD :)
23
+ *
24
+ * Using this method is very dangerous, it DOES NOT escape strings passed to the function.
25
+ * If you use a unsafe variable from somewhere to construct a string you are open to SQL injection.
26
+ *
27
+ * If you do happen to use it, make all strings as literals and DO NOT use any variables to construct the string. It will bite you!
28
+ *
29
+ * To safely use columns do this (but in practice this example is dumb, you should do Sql.round(c.price)): ("ROUND(", c.price,")")
30
+ *
31
+ * DO NOT USE THIS METHOD :)
32
+ */
33
+ export function DANGEROUS_SQL_EXPRESSION(arg) {
34
+ return SqlExpression.create("(" + arg.I_DID_NOT_USE_UNSAFE_VARIABLES_TO_CONSTRUCT_THIS_STRING.map(e => typeof e === "string" ? e : e.expression).join("") + ")");
35
+ }
36
+ export function OR(...col) {
37
+ return SqlExpression.create("(" + col.filter(e => e).map(e => e.expression).join(" OR ") + ")");
38
+ }
39
+ export function AND(...col) {
40
+ return SqlExpression.create("(" + col.filter(e => e).map(e => e.expression).join(" AND ") + ")");
41
+ }
42
+ export function IF(col, col2, col3) {
43
+ return SqlExpression.create("IF( " + col.expression + ", " + toSql(col2) + ", " + toSql(col3) + " )");
44
+ }
45
+ export function IFNULL(col1, col2) {
46
+ return SqlExpression.create("IFNULL( " + toSql(col1) + ", " + toSql(col2) + " )");
47
+ }
48
+ export function NOT(col) {
49
+ return SqlExpression.create("NOT (" + col.expression + ")");
50
+ }
51
+ export function EXISTS(col) {
52
+ return SqlExpression.create("EXISTS (" + col.expression + ")");
53
+ }
54
+ export function NOT_EXISTS(col) {
55
+ return SqlExpression.create("NOT EXISTS (" + col.expression + ")");
56
+ }
57
+ export function IS_NULL(col) {
58
+ return SqlExpression.create(col.expression + " IS NULL");
59
+ }
60
+ export function NOT_NULL(col) {
61
+ return SqlExpression.create(col.expression + " IS NOT NULL");
62
+ }
63
+ // export function in<TableRef, Type extends (string | number)[] | PrepareQueryArgument>(
64
+ // col: Expr<TableRef, string, Type>,
65
+ // values: Type
66
+ // ): Expr<TableRef, unknown, SQL_BOOL>
67
+ export function IN(col1, col2) {
68
+ if (Array.isArray(col2) && col2.length === 0) {
69
+ return SqlExpression.create("1=0");
70
+ }
71
+ return SqlExpression.create(toSql(col1) + " IN ( " + toSql(col2) + ")");
72
+ }
73
+ // export function eq<TableRef, Type extends string | number | PrepareQueryArgument>(
74
+ // col: Expr<TableRef, string, Type>,
75
+ // value: Type
76
+ // ): Expr<TableRef, unknown, SQL_BOOL>
77
+ export function EQ(col1, col2) {
78
+ return COMPARE(col1, "=", col2);
79
+ }
80
+ export function COMPARE(col1, op, col2) {
81
+ if (!ComparisonOperandsLookup.has(op)) {
82
+ throw new Error("Invalid comparison operand '" + op + "'");
83
+ }
84
+ return SqlExpression.create(toSql(col1) + " " + op + " " + toSql(col2));
85
+ }
86
+ export function LIKE(col, value) {
87
+ return SqlExpression.create(col.expression + " LIKE " + escape(value));
88
+ }
89
+ /**
90
+ * Does LIKE %X% search.
91
+ */
92
+ export function CONTAINS(col, value) {
93
+ return SqlExpression.create(col.expression + " LIKE " + escape("%" + value + "%"));
94
+ }
95
+ /**
96
+ * Does LIKE X% search.
97
+ */
98
+ export function STARTS_WITH(col, value) {
99
+ return SqlExpression.create(col.expression + " LIKE " + escape(value + "%"));
100
+ }
101
+ /**
102
+ * Does LIKE %X search.
103
+ */
104
+ export function ENDS_WITH(col, value) {
105
+ return SqlExpression.create(col.expression + " LIKE " + escape("%" + value));
106
+ }
107
+ // -------------------------------------------------------------------
108
+ // STRING MANIPULATION
109
+ // -------------------------------------------------------------------
110
+ export function TRIM(value) {
111
+ return SqlExpression.create("TRIM(" + toSql(value) + ")");
112
+ }
113
+ /**
114
+ * normal SQL length function, but JS does not allow usage of length.
115
+ */
116
+ export function LENGTH(value) {
117
+ return SqlExpression.create("LENGTH(" + toSql(value) + ")");
118
+ }
119
+ export function CONCAT(...expr) {
120
+ return SqlExpression.create("CONCAT (" + expr.map(toSql) + ")");
121
+ }
122
+ export function CONCAT_WS(separator, ...expr) {
123
+ return SqlExpression.create("CONCAT_WS(" + escape(separator) + "," + expr.map(toSql) + ")");
124
+ }
125
+ export function GROUP_CONCAT(call) {
126
+ const builder = new GroupConcat();
127
+ call(builder);
128
+ return SqlExpression.create("GROUP_CONCAT(" + builder.toString() + ")");
129
+ }
130
+ export class GroupConcat {
131
+ _columns = [];
132
+ _distinct = false;
133
+ _orderBy = [];
134
+ _separator = undefined;
135
+ all(...args) {
136
+ this._columns = args.map(toSql);
137
+ return this;
138
+ }
139
+ distinct(...args) {
140
+ this._distinct = true;
141
+ this._columns = args.map(toSql);
142
+ return this;
143
+ }
144
+ orderBy(...cols) {
145
+ this._orderBy = orderByStructureToSqlString(cols);
146
+ return this;
147
+ }
148
+ separator(separator) {
149
+ this._separator = separator;
150
+ return this;
151
+ }
152
+ toString() {
153
+ return (this._distinct ? "DISTINCT " : "") +
154
+ "" + this._columns +
155
+ (this._orderBy && this._orderBy.length > 0 ? " ORDER BY " + this._orderBy.join(", ") : "") +
156
+ (this._separator ? " SEPARATOR " + escape(this._separator) : "");
157
+ }
158
+ }
159
+ // -------------------------------------------------------------------
160
+ // DATE MANIPULATION
161
+ // -------------------------------------------------------------------
162
+ export function NOW() {
163
+ return SqlExpression.create("NOW()");
164
+ }
165
+ export function CUR_DATE() {
166
+ return SqlExpression.create("CURDATE()");
167
+ }
168
+ export function YEAR(field) {
169
+ return SqlExpression.create("YEAR(" + field.expression + ")");
170
+ }
171
+ export function UNIX_TIMESTAMP(field) {
172
+ return SqlExpression.create("UNIX_TIMESTAMP(" + field.expression + ")");
173
+ }
174
+ export function DATE(field) {
175
+ return SqlExpression.create("DATE(" + field.expression + ")");
176
+ }
177
+ export function DATE_TIME(field) {
178
+ return SqlExpression.create("DATETIME(" + field.expression + ")");
179
+ }
180
+ export function DATE_FORMAT(col, format) {
181
+ return SqlExpression.create("DATE_FORMAT(" + toSql(col) + ", " + escape(format) + ")");
182
+ }
183
+ export function DATEDIFF(col1, col2) {
184
+ return SqlExpression.create("DATEDIFF(" + toSql(col1) + ", " + toSql(col2) + ")");
185
+ }
186
+ export function DATE_SUB(col, interval, unit) {
187
+ if (!DateAddUnitsLookup.has(unit)) {
188
+ throw new Error("Invalid unit '" + unit + "'");
189
+ }
190
+ return SqlExpression.create("DATE_SUB(" + toSql(col) + ", INTERVAL " + escape(interval) + " " + unit + ")");
191
+ }
192
+ export function DATE_ADD(col, interval, unit) {
193
+ if (!DateAddUnitsLookup.has(unit)) {
194
+ throw new Error("Invalid unit '" + unit + "'");
195
+ }
196
+ return SqlExpression.create("DATE_ADD(" + toSql(col) + ", INTERVAL " + escape(interval) + " " + unit + ")");
197
+ }
198
+ // -------------------------------------------------------------------
199
+ // NUMBER MANIPULATION
200
+ // -------------------------------------------------------------------
201
+ export function MATH(expression, args) {
202
+ const pattern = /^[0-9+\-*/()?. ]*$/;
203
+ if (!pattern.test(expression)) {
204
+ throw new Error("Invalid expression. Expression must match this pattern: " + pattern);
205
+ }
206
+ for (let i = 0; i < args.length; i++) {
207
+ expression = expression.replace("?", args[i].expression);
208
+ }
209
+ return SqlExpression.create("(" + expression + ")");
210
+ }
211
+ export function ABS(col) {
212
+ return SqlExpression.create("ABS(" + col.expression + ")", col.nameAs);
213
+ }
214
+ export function CEIL(col) {
215
+ return SqlExpression.create("CEIL(" + col.expression + ")", col.nameAs);
216
+ }
217
+ export function FLOOR(col) {
218
+ return SqlExpression.create("FLOOR(" + col.expression + ")", col.nameAs);
219
+ }
220
+ export function ROUND(col) {
221
+ return SqlExpression.create("ROUND(" + col.expression + ")", col.nameAs);
222
+ }
223
+ export function SIGN(col) {
224
+ return SqlExpression.create("SIGN(" + col.expression + ")", col.nameAs);
225
+ }
226
+ export function SQRT(col) {
227
+ return SqlExpression.create("SQRT(" + col.expression + ")", col.nameAs);
228
+ }
229
+ // -------------------------------------------------------------------
230
+ // AGGREGATE FUNCTIONS
231
+ // -------------------------------------------------------------------
232
+ export function MIN(col) {
233
+ return SqlExpressionWithOver.create("MIN(" + col.expression + ")", col.nameAs);
234
+ }
235
+ export function MAX(col) {
236
+ return SqlExpressionWithOver.create("MAX(" + col.expression + ")", col.nameAs);
237
+ }
238
+ export function SUM(col) {
239
+ return SqlExpressionWithOver.create("SUM(" + toSql(col) + ")", (col instanceof SqlExpression ? col.nameAs : undefined));
240
+ }
241
+ export function COUNT(col) {
242
+ return SqlExpressionWithOver.create("COUNT(" + toSql(col) + ")", (col instanceof SqlExpression ? col.nameAs : undefined));
243
+ }
244
+ export function RANK() {
245
+ return SqlExpressionWithOver.create("RANK()", undefined);
246
+ }
247
+ export function ROW_NUMBER() {
248
+ return SqlExpressionWithOver.create("ROW_NUMBER()", undefined);
249
+ }
250
+ export function LAG(col, n, def) {
251
+ return SqlExpressionWithOver.create("LAG(" + col.expression + "," + (n ? Number(n) : 0) + "," + (def ? Number(def) : 0) + ")", undefined);
252
+ }
253
+ export function LEAD(col, n, def) {
254
+ return SqlExpressionWithOver.create("LEAD(" + col.expression + "," + (n ? Number(n) : 0) + "," + (def ? Number(def) : 0) + ")", undefined);
255
+ }
256
+ export function FIRST_VALUE(col) {
257
+ return SqlExpressionWithOver.create("FIRST_VALUE(" + col.expression + ")", undefined);
258
+ }
259
+ export function LAST_VALUE(col) {
260
+ return SqlExpressionWithOver.create("LAST_VALUE(" + col.expression + ")", undefined);
261
+ }
262
+ export function NTH_VALUE(col, value) {
263
+ return SqlExpressionWithOver.create("NTH_VALUE(" + col.expression + "," + (value ? Number(value) : 0) + ")", undefined);
264
+ }
265
+ // -------------------------------------------------------------------
266
+ // MISC
267
+ // -------------------------------------------------------------------
268
+ export function BIN_TO_UUID(col) {
269
+ return SqlExpression.create("BIN_TO_UINT(" + col.expression + ")", col.nameAs);
270
+ }
271
+ // -------------------------------------------------------------------
272
+ // UTILITY
273
+ // -------------------------------------------------------------------
274
+ export function orderByStructureToSqlString(items) {
275
+ const parts = [];
276
+ for (let i = 0; i < items.length; i++) {
277
+ const item = items[i];
278
+ if (item === undefined || item === null || item === "") {
279
+ // skip
280
+ }
281
+ else if (item === "asc" || item === "ASC") {
282
+ parts[parts.length - 1] += " ASC";
283
+ }
284
+ else if (item === "desc" || item === "DESC") {
285
+ parts[parts.length - 1] += " DESC";
286
+ }
287
+ else if (item instanceof SqlExpression) {
288
+ parts.push(item.expression);
289
+ }
290
+ else if (typeof item === "string") {
291
+ parts.push(escapeId(item));
292
+ }
293
+ else {
294
+ throw new Error("Invalid argument to having! Type: '" + (typeof item) + "' String: '" + String(item) + "'");
295
+ }
296
+ }
297
+ return parts;
298
+ }
299
+ export function toSql(e) {
300
+ if (typeof e === "string") {
301
+ return escape(e);
302
+ }
303
+ else if (typeof e === "number") {
304
+ return Number(e);
305
+ }
306
+ else if (e === null || e === undefined) {
307
+ return "NULL";
308
+ }
309
+ else if (e === true) {
310
+ return "1";
311
+ }
312
+ else if (e === false) {
313
+ return "0";
314
+ }
315
+ else if (e instanceof SqlExpression) {
316
+ return e.expression;
317
+ }
318
+ else if (isPrepareArgument(e)) {
319
+ return e.expression;
320
+ }
321
+ else if (Array.isArray(e)) {
322
+ return e.map(toSql).join(", ");
323
+ }
324
+ else if (typeof e === "object") {
325
+ return escape(JSON.stringify(e));
326
+ }
327
+ else {
328
+ throw new Error("Invalid argument of type " + (typeof e) + "! toString: " + String(e));
329
+ }
330
+ }
331
+ //# sourceMappingURL=SqlFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlFunctions.js","sourceRoot":"","sources":["../../src/SqlFunctions.ts"],"names":[],"mappings":"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"}