@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,106 @@
1
+ export declare class MysqlTableStructureParser {
2
+ static getSchemaRowsQuery(database: string): string;
3
+ static parse(schema: SchemaRow[]): TableStructure[];
4
+ private static parseColumn;
5
+ private static parseDefault;
6
+ private static parseColumnKey;
7
+ }
8
+ export interface TableStructure {
9
+ name: string;
10
+ columns: AnyColumn[];
11
+ }
12
+ export declare enum ColumnDataType {
13
+ TINYINT = "TINYINT",
14
+ SMALLINT = "SMALLINT",
15
+ MEDIUMINT = "MEDIUMINT",
16
+ INT = "INT",
17
+ BIGINT = "BIGINT",
18
+ DECIMAL = "DECIMAL",
19
+ FLOAT = "FLOAT",
20
+ CHAR = "CHAR",
21
+ VARCHAR = "VARCHAR",
22
+ MEDIUMTEXT = "MEDIUMTEXT",
23
+ TEXT = "TEXT",
24
+ LONGTEXT = "LONGTEXT",
25
+ TIMESTAMP = "TIMESTAMP",
26
+ DATETIME = "DATETIME",
27
+ DATE = "DATE",
28
+ TIME = "TIME",
29
+ YEAR = "YEAR",
30
+ ENUM = "ENUM",
31
+ SET = "SET",
32
+ BIT = "BIT",
33
+ LONGBLOB = "LONGBLOB",
34
+ JSON = "JSON"
35
+ }
36
+ export type AnyColumn = ColumnText | ColumnChar | ColumnNumber | ColumnSet | ColumnEnum | ColumnDateTimeLike;
37
+ export interface Column {
38
+ type: ColumnDataType;
39
+ name: string;
40
+ tsType: string;
41
+ dataType: string;
42
+ columnType: string;
43
+ typeNum?: number | undefined;
44
+ default: string | number;
45
+ isNullable: boolean;
46
+ columnKey: KeyType[];
47
+ extra: string;
48
+ comment: string;
49
+ }
50
+ export interface ColumnDateTimeLike extends Column {
51
+ type: ColumnDataType.DATE | ColumnDataType.DATETIME | ColumnDataType.TIMESTAMP | ColumnDataType.YEAR;
52
+ }
53
+ export interface ColumnText extends Column {
54
+ type: ColumnDataType.CHAR | ColumnDataType.VARCHAR | ColumnDataType.MEDIUMTEXT | ColumnDataType.TEXT | ColumnDataType.LONGTEXT;
55
+ characterSetName: string;
56
+ collationName: string;
57
+ }
58
+ export interface ColumnChar extends ColumnText {
59
+ type: ColumnDataType.VARCHAR | ColumnDataType.CHAR;
60
+ characterMaximumLength: number;
61
+ characterOctetLength: number;
62
+ }
63
+ export interface ColumnNumber extends Column {
64
+ type: ColumnDataType.TINYINT | ColumnDataType.SMALLINT | ColumnDataType.MEDIUMINT | ColumnDataType.INT | ColumnDataType.BIGINT | ColumnDataType.DECIMAL | ColumnDataType.FLOAT | ColumnDataType.BIT;
65
+ isUnsigned: boolean;
66
+ isAutoIncrement: boolean;
67
+ precision: number;
68
+ scale: number;
69
+ }
70
+ export interface ColumnEnum extends Column {
71
+ type: ColumnDataType.ENUM;
72
+ values: string[];
73
+ }
74
+ export interface ColumnSet extends Column {
75
+ type: ColumnDataType.SET;
76
+ values: string[];
77
+ }
78
+ export declare enum KeyType {
79
+ PRIMARY = "primary",
80
+ UNIQUE = "unique",
81
+ MULTIPLE = "multiple"
82
+ }
83
+ interface SchemaRow {
84
+ tableSchema: string;
85
+ tableName: string;
86
+ columnName: string;
87
+ ordinalPosition: number;
88
+ columnDefault: string;
89
+ isNullable: string;
90
+ dataType: string;
91
+ characterMaxLength: number;
92
+ characterOctetLength: number;
93
+ numericPos: number;
94
+ numericScale: number;
95
+ dateTimePrecision: number;
96
+ characterSetName: string;
97
+ collationName: string;
98
+ columnType: string;
99
+ columnKey: string;
100
+ extra: string;
101
+ columnComment: string;
102
+ isGenerated: string;
103
+ generationExpression: string;
104
+ }
105
+ export {};
106
+ //# sourceMappingURL=MysqlTableStructureParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MysqlTableStructureParser.d.ts","sourceRoot":"","sources":["../../src/MysqlTableStructureParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ import { escape } from "./escape.js";
2
+ export class MysqlTableStructureParser {
3
+ static getSchemaRowsQuery(database) {
4
+ return "SELECT " +
5
+ " table_schema as tableSchema, \n" +
6
+ " table_name as tableName, \n" +
7
+ " is_nullable as isNullable, \n" +
8
+ " column_default as columnDefault, \n" +
9
+ " column_name as columnName, \n" +
10
+ " collation_name as collationName, \n" +
11
+ " column_type as columnType, \n" +
12
+ " column_key as columnKey, \n" +
13
+ " ordinal_position as ordinalPosition, \n" +
14
+ " character_octet_length as characterOctetLength, \n" +
15
+ " numeric_precision as numericPrecision, \n" +
16
+ " numeric_scale as numericScale, \n" +
17
+ " data_type as dataType, \n" +
18
+ " character_maximum_length as characterMaximumLength, \n" +
19
+ " datetime_precision as datetimePrecision, \n" +
20
+ " character_set_name as characterSetName, \n" +
21
+ " extra as extra, \n" +
22
+ " column_comment as columnComment \n" +
23
+ "FROM INFORMATION_SCHEMA.columns \n" +
24
+ "WHERE table_schema LIKE " + escape(database) + " " +
25
+ "ORDER BY table_schema, table_name, ordinal_position ";
26
+ }
27
+ static parse(schema) {
28
+ const tables = new Map();
29
+ for (const row of schema) {
30
+ if (!tables.has(row.tableName)) {
31
+ tables.set(row.tableName, { name: row.tableName, columns: [] });
32
+ }
33
+ tables.get(row.tableName).columns.push(this.parseColumn(row));
34
+ }
35
+ return Array.from(tables.values()).sort((a, b) => a.name >= b.name ? 1 : -1);
36
+ }
37
+ static parseColumn(row) {
38
+ const type = row.dataType.toUpperCase();
39
+ const column = {
40
+ type: type,
41
+ name: row.columnName,
42
+ dataType: row.dataType.toUpperCase(),
43
+ columnType: row.columnType,
44
+ tsType: MYSQL_TYPE_TO_TS_TYPE.get(type),
45
+ isNullable: row.isNullable.toUpperCase().indexOf("YES") >= 0,
46
+ default: this.parseDefault(row.columnDefault),
47
+ columnKey: this.parseColumnKey(row.columnKey),
48
+ extra: row.extra,
49
+ comment: row.columnComment
50
+ };
51
+ if (type === ColumnDataType.MEDIUMTEXT || type === ColumnDataType.TEXT || type === ColumnDataType.LONGTEXT) {
52
+ const res = {
53
+ ...column,
54
+ type: type,
55
+ characterSetName: row.characterSetName,
56
+ collationName: row.collationName
57
+ };
58
+ return res;
59
+ }
60
+ else if (type === ColumnDataType.CHAR || type === ColumnDataType.VARCHAR) {
61
+ const res = {
62
+ ...column,
63
+ type: type,
64
+ characterSetName: row.characterSetName,
65
+ collationName: row.collationName,
66
+ characterMaximumLength: row.characterMaxLength,
67
+ characterOctetLength: row.characterOctetLength
68
+ };
69
+ return res;
70
+ }
71
+ else if (type === ColumnDataType.TINYINT || type === ColumnDataType.SMALLINT || type === ColumnDataType.INT || type === ColumnDataType.MEDIUMINT
72
+ || type === ColumnDataType.BIGINT || type === ColumnDataType.DECIMAL || type === ColumnDataType.FLOAT || type === ColumnDataType.BIT) {
73
+ const typeNum = Number(row.columnType.split("(").pop().split(")").shift());
74
+ const res = {
75
+ ...column,
76
+ type: type,
77
+ typeNum: isNaN(typeNum) ? undefined : typeNum,
78
+ scale: row.numericScale,
79
+ precision: row.numericPos,
80
+ isUnsigned: row.columnType.toUpperCase().indexOf("UNSIGNED") >= 0,
81
+ isAutoIncrement: row.extra.toUpperCase().indexOf("AUTO_INCREMENT") >= 0
82
+ };
83
+ return res;
84
+ }
85
+ else if (type === ColumnDataType.ENUM) {
86
+ const res = {
87
+ ...column,
88
+ type: type,
89
+ values: row.columnType.match(/'([^']+)'/g).map(e => e.replace(/'/g, "").replace(/"/g, ""))
90
+ };
91
+ return res;
92
+ }
93
+ else if (type === ColumnDataType.SET) {
94
+ const res = {
95
+ ...column,
96
+ type: type,
97
+ values: row.columnType.match(/'([^']+)'/g).map(e => e.replace(/'/g, "").replace(/"/g, ""))
98
+ };
99
+ return res;
100
+ }
101
+ else {
102
+ return column;
103
+ }
104
+ }
105
+ static parseDefault(def) {
106
+ if (!def || def === "NULL") {
107
+ return null;
108
+ }
109
+ else if (!isNaN(Number(def))) {
110
+ return def;
111
+ }
112
+ else {
113
+ return String(def).split("'").join("");
114
+ }
115
+ }
116
+ static parseColumnKey(columnKey) {
117
+ return columnKey.split(",").map((e) => {
118
+ const key = e.toUpperCase();
119
+ if (key === "PRI") {
120
+ return KeyType.PRIMARY;
121
+ }
122
+ else if (key === "UNI") {
123
+ return KeyType.UNIQUE;
124
+ }
125
+ else if (key === "MUL") {
126
+ return KeyType.MULTIPLE;
127
+ }
128
+ else {
129
+ return null;
130
+ }
131
+ }).filter(e => e);
132
+ }
133
+ }
134
+ export var ColumnDataType;
135
+ (function (ColumnDataType) {
136
+ ColumnDataType["TINYINT"] = "TINYINT";
137
+ ColumnDataType["SMALLINT"] = "SMALLINT";
138
+ ColumnDataType["MEDIUMINT"] = "MEDIUMINT";
139
+ ColumnDataType["INT"] = "INT";
140
+ ColumnDataType["BIGINT"] = "BIGINT";
141
+ ColumnDataType["DECIMAL"] = "DECIMAL";
142
+ ColumnDataType["FLOAT"] = "FLOAT";
143
+ ColumnDataType["CHAR"] = "CHAR";
144
+ ColumnDataType["VARCHAR"] = "VARCHAR";
145
+ ColumnDataType["MEDIUMTEXT"] = "MEDIUMTEXT";
146
+ ColumnDataType["TEXT"] = "TEXT";
147
+ ColumnDataType["LONGTEXT"] = "LONGTEXT";
148
+ ColumnDataType["TIMESTAMP"] = "TIMESTAMP";
149
+ ColumnDataType["DATETIME"] = "DATETIME";
150
+ ColumnDataType["DATE"] = "DATE";
151
+ ColumnDataType["TIME"] = "TIME";
152
+ ColumnDataType["YEAR"] = "YEAR";
153
+ ColumnDataType["ENUM"] = "ENUM";
154
+ ColumnDataType["SET"] = "SET";
155
+ ColumnDataType["BIT"] = "BIT";
156
+ ColumnDataType["LONGBLOB"] = "LONGBLOB";
157
+ ColumnDataType["JSON"] = "JSON";
158
+ })(ColumnDataType || (ColumnDataType = {}));
159
+ const MYSQL_TYPE_TO_TS_TYPE = new Map([
160
+ [ColumnDataType.TINYINT, "number"],
161
+ [ColumnDataType.SMALLINT, "number"],
162
+ [ColumnDataType.MEDIUMINT, "number"],
163
+ [ColumnDataType.INT, "number"],
164
+ [ColumnDataType.BIGINT, "number"],
165
+ [ColumnDataType.DECIMAL, "number"],
166
+ [ColumnDataType.FLOAT, "number"],
167
+ [ColumnDataType.CHAR, "string"],
168
+ [ColumnDataType.VARCHAR, "string"],
169
+ [ColumnDataType.MEDIUMTEXT, "string"],
170
+ [ColumnDataType.TEXT, "string"],
171
+ [ColumnDataType.LONGTEXT, "string"],
172
+ [ColumnDataType.TIMESTAMP, "string"],
173
+ [ColumnDataType.DATETIME, "string"],
174
+ [ColumnDataType.DATE, "string"],
175
+ [ColumnDataType.TIME, "number"],
176
+ [ColumnDataType.YEAR, "number"],
177
+ [ColumnDataType.ENUM, "string"],
178
+ [ColumnDataType.SET, "string"],
179
+ [ColumnDataType.BIT, "number"],
180
+ [ColumnDataType.LONGBLOB, "string"],
181
+ [ColumnDataType.JSON, "string"]
182
+ ]);
183
+ export var KeyType;
184
+ (function (KeyType) {
185
+ KeyType["PRIMARY"] = "primary";
186
+ KeyType["UNIQUE"] = "unique";
187
+ KeyType["MULTIPLE"] = "multiple";
188
+ })(KeyType || (KeyType = {}));
189
+ //# sourceMappingURL=MysqlTableStructureParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MysqlTableStructureParser.js","sourceRoot":"","sources":["../../src/MysqlTableStructureParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { AliasedTable, Key, NotUsingWithPart, SqlQuery } from "./Types";
2
+ import { JoinMethods } from "./select/parts/S1Join";
3
+ import { UsesMethods } from "./select/parts/S0Uses";
4
+ import { WithMethods } from "./select/parts/S0With";
5
+ import { ExecMethods } from "./select/parts/S7Exec";
6
+ import { DeleteWhereMethods } from "./delete/DeleteInterfaces";
7
+ import { InsertSetMethods } from "./insert/InsertInterfaces";
8
+ import { UpdateSetMethods } from "./update/UpdateInterfaces";
9
+ export declare class SQL {
10
+ static insertInto<Entity, EditEntity, Alias extends string, TableRef extends `${string} as ${Alias}`>(table: AliasedTable<Alias, TableRef, Entity, EditEntity, NotUsingWithPart>): InsertSetMethods<EditEntity>;
11
+ static insertIgnoreInto<Entity, EditEntity, Alias extends string, TableRef extends `${string} as ${Alias}`>(table: AliasedTable<Alias, TableRef, Entity, EditEntity, NotUsingWithPart>): InsertSetMethods<EditEntity>;
12
+ static update<Entity, EditEntity, Alias extends string, TableRef extends `${string} as ${Alias}`>(table: AliasedTable<Alias, TableRef, Entity, EditEntity, NotUsingWithPart>): UpdateSetMethods<Entity, Key<TableRef>>;
13
+ static updateIgnore<Entity, EditEntity, Alias extends string, TableRef extends `${string} as ${Alias}`>(table: AliasedTable<Alias, TableRef, Entity, EditEntity, NotUsingWithPart>): UpdateSetMethods<Entity, Key<TableRef>>;
14
+ static deleteFrom<Alias extends string, TableRef extends `${string} as ${Alias}`>(table: AliasedTable<Alias, TableRef, object, object, string | NotUsingWithPart>): DeleteWhereMethods<Key<TableRef>>;
15
+ static selectFrom<Alias extends string, TableRef extends `${string} as ${Alias}`>(table: AliasedTable<Alias, TableRef, object, object, string | NotUsingWithPart>): JoinMethods<Key<Alias>, {}, Key<TableRef>>;
16
+ /**
17
+ * Start building a select query that most probably will be used as a scalar subquery.
18
+ *
19
+ * for example:
20
+ * SELECT
21
+ * (SELECT id FROM child WHERE child.id = parent.id ) <--- scalar subquery
22
+ * FROM parent
23
+ *
24
+ * In the uses part you add parent table refererence.
25
+ */
26
+ static uses<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>): UsesMethods<Key<Alias1>, Key<TableRef1>>;
27
+ static uses<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`, Alias2 extends string, TableRef2 extends `${string} as ${Alias2}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>, table2: AliasedTable<Alias2, TableRef2, object, object, NotUsingWithPart>): UsesMethods<Key<Alias1> & Key<Alias2>, Key<TableRef1> & Key<TableRef2>>;
28
+ static uses<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`, Alias2 extends string, TableRef2 extends `${string} as ${Alias2}`, Alias3 extends string, TableRef3 extends `${string} as ${Alias3}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>, table2: AliasedTable<Alias2, TableRef2, object, object, NotUsingWithPart>, table3: AliasedTable<Alias3, TableRef3, object, object, NotUsingWithPart>): UsesMethods<Key<Alias1> & Key<Alias2> & Key<Alias3>, Key<TableRef1> & Key<TableRef2> & Key<TableRef3>>;
29
+ static uses<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`, Alias2 extends string, TableRef2 extends `${string} as ${Alias2}`, Alias3 extends string, TableRef3 extends `${string} as ${Alias3}`, Alias4 extends string, TableRef4 extends `${string} as ${Alias4}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>, table2: AliasedTable<Alias2, TableRef2, object, object, NotUsingWithPart>, table3: AliasedTable<Alias3, TableRef3, object, object, NotUsingWithPart>, table4: AliasedTable<Alias4, TableRef4, object, object, NotUsingWithPart>): UsesMethods<Key<Alias1> & Key<Alias2> & Key<Alias3> & Key<Alias4>, Key<TableRef1> & Key<TableRef2> & Key<TableRef3> & Key<TableRef4>>;
30
+ /**
31
+ * Start building a select query that uses WITH queries.
32
+ *
33
+ * for example:
34
+ * WITH user2 AS (
35
+ * SELECT id FROM user <-- this query AliasedTable is argument to this method. ( SQL.select()...as("user2") )
36
+ * )
37
+ * SELECT *
38
+ * FROM user2
39
+ *
40
+ * With a
41
+ */
42
+ static with<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>): WithMethods<Key<Alias1>>;
43
+ static with<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`, Alias2 extends string, TableRef2 extends `${string} as ${Alias2}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>, table2: AliasedTable<Alias2, TableRef2, object, object, NotUsingWithPart>): WithMethods<Key<Alias1> & Key<Alias2>>;
44
+ static with<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`, Alias2 extends string, TableRef2 extends `${string} as ${Alias2}`, Alias3 extends string, TableRef3 extends `${string} as ${Alias3}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>, table2: AliasedTable<Alias2, TableRef2, object, object, NotUsingWithPart>, table3: AliasedTable<Alias3, TableRef3, object, object, NotUsingWithPart>): WithMethods<Key<Alias1> & Key<Alias2> & Key<Alias3>>;
45
+ static with<Alias1 extends string, TableRef1 extends `${string} as ${Alias1}`, Alias2 extends string, TableRef2 extends `${string} as ${Alias2}`, Alias3 extends string, TableRef3 extends `${string} as ${Alias3}`, Alias4 extends string, TableRef4 extends `${string} as ${Alias4}`>(table1: AliasedTable<Alias1, TableRef1, object, object, NotUsingWithPart>, table2: AliasedTable<Alias2, TableRef2, object, object, NotUsingWithPart>, table3: AliasedTable<Alias3, TableRef3, object, object, NotUsingWithPart>, table4: AliasedTable<Alias4, TableRef4, object, object, NotUsingWithPart>): WithMethods<Key<Alias1> & Key<Alias2> & Key<Alias3> & Key<Alias4>>;
46
+ /**
47
+ * Creates a prepared query.
48
+ *
49
+ * Prepared query is a fixed query that will be prebuilt for higher performance. It will only replace arguments in a prebuilt SQL query string.
50
+ * Main drawback of this is that query has to be static and can't have anything dynamic in it.
51
+ *
52
+ * This is not Mysql prepared statement, it is only preparing and caching a string of the SQL query.
53
+ *
54
+ * Usage
55
+ *
56
+ * const prepared = SQL.prepare( ( args:{id: number} ) => {
57
+ * const c = MyDb.user("c");
58
+ * return SQL.select().from(c)...where( c.id.eq(args.id).noLimit()
59
+ * })
60
+ *
61
+ * exec(prepared({id: 10}))
62
+ *
63
+ */
64
+ static prepare<PrepareQueryArguments extends {
65
+ [key: string]: any;
66
+ }, Result>(func: (args: PrepareQueryArguments) => ExecMethods<Result>): (args: PrepareQueryArguments) => SqlQuery<Result>;
67
+ /**
68
+ * Create a reference for a query that is used in WITH part and you want to use it in from(X) or join(X) call.
69
+ */
70
+ static createRef<Alias extends string, TableRef extends `${string} as ${Alias}`, Entity, EditEntity, NewAlias extends string>(table: AliasedTable<Alias, TableRef, Entity, EditEntity, NotUsingWithPart>, newAlias: NewAlias): AliasedTable<NewAlias, `${Alias} as ${NewAlias}`, Entity, EditEntity, Alias>;
71
+ }
72
+ //# sourceMappingURL=SQL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQL.d.ts","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAqB,GAAG,EAAE,gBAAgB,EAAwB,QAAQ,EAAC,MAAM,SAAS,CAAC;AAI/G,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAG3D,qBAAa,GAAG;WAGE,UAAU,CACpB,MAAM,EACN,UAAU,EACV,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EAExC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC;WAI/F,gBAAgB,CAC1B,MAAM,EACN,UAAU,EACV,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EAExC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAC3E,gBAAgB,CAAC,UAAU,CAAC;WAIjB,MAAM,CAChB,MAAM,EACN,UAAU,EACV,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EAExC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAC3E,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;WAI5B,YAAY,CACtB,MAAM,EACN,UAAU,EACV,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EAExC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAC3E,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;WAI5B,UAAU,CACpB,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EAExC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAChF,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;WAItB,UAAU,CACpB,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EAExC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAChF,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAI7C;;;;;;;;;OASG;WACW,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;WAC7B,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;WAC5D,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;WAC3F,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAKxI;;;;;;;;;;;OAWG;WACW,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;WACb,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;WAC3B,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;WACzC,IAAI,CACd,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EACjE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,OAAO,MAAM,EAAE,EAEjE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACzE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAC1E,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAKrE;;;;;;;;;;;;;;;;;OAiBG;WACW,OAAO,CAAC,qBAAqB,SAAS;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,qBAAqB,KAAK,QAAQ,CAAC,MAAM,CAAC;IAiClM;;OAEG;WACW,SAAS,CACnB,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,EACxC,MAAM,EACN,UAAU,EACV,QAAQ,SAAS,MAAM,EACzB,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;CAQlL"}
@@ -0,0 +1,94 @@
1
+ import { SelectBuilder } from "./select/SelectBuilder.js";
2
+ import { SQL_ALIAS, SQL_ENTITY, SQL_EXPRESSION } from "./Symbols.js";
3
+ import { escape, escapeId } from "./escape.js";
4
+ import { MysqlTable } from "./MysqlTable.js";
5
+ import { DeleteBuilder } from "./delete/DeleteBuilder.js";
6
+ import { InsertBuilder } from "./insert/InsertBuilder.js";
7
+ import { UpdateBuilder } from "./update/UpdateBuilder.js";
8
+ export class SQL {
9
+ static insertInto(table) {
10
+ return new InsertBuilder().to(table[SQL_EXPRESSION]);
11
+ }
12
+ static insertIgnoreInto(table) {
13
+ return new InsertBuilder().to(table[SQL_EXPRESSION]).ignore();
14
+ }
15
+ static update(table) {
16
+ return new UpdateBuilder().in(table[SQL_EXPRESSION], table[SQL_ALIAS]);
17
+ }
18
+ static updateIgnore(table) {
19
+ return new UpdateBuilder().in(table[SQL_EXPRESSION], table[SQL_ALIAS]).ignore();
20
+ }
21
+ static deleteFrom(table) {
22
+ return new DeleteBuilder().from(table[SQL_EXPRESSION], table[SQL_ALIAS]);
23
+ }
24
+ static selectFrom(table) {
25
+ return new SelectBuilder().selectFrom(table);
26
+ }
27
+ static uses(table1, table2, table3, table4) {
28
+ return new SelectBuilder();
29
+ }
30
+ static with(...tables) {
31
+ return new SelectBuilder().with(...tables);
32
+ }
33
+ /**
34
+ * Creates a prepared query.
35
+ *
36
+ * Prepared query is a fixed query that will be prebuilt for higher performance. It will only replace arguments in a prebuilt SQL query string.
37
+ * Main drawback of this is that query has to be static and can't have anything dynamic in it.
38
+ *
39
+ * This is not Mysql prepared statement, it is only preparing and caching a string of the SQL query.
40
+ *
41
+ * Usage
42
+ *
43
+ * const prepared = SQL.prepare( ( args:{id: number} ) => {
44
+ * const c = MyDb.user("c");
45
+ * return SQL.select().from(c)...where( c.id.eq(args.id).noLimit()
46
+ * })
47
+ *
48
+ * exec(prepared({id: 10}))
49
+ *
50
+ */
51
+ static prepare(func) {
52
+ let sqlQuery = undefined;
53
+ const seenArguments = new Map();
54
+ const getSqlString = () => {
55
+ if (sqlQuery === undefined) {
56
+ const p = new Proxy({}, {
57
+ get(_, p) {
58
+ if (!/^[A-Za-z]+$/.test(p)) {
59
+ throw new Error("Invalid prepare query argument named '" + p + "'. Can only contain ascii letters!");
60
+ }
61
+ const variable = "<<|_arg:|>>" + p + "<<|:_arg|>>";
62
+ seenArguments.set(p, variable);
63
+ return { __prepare_argument: true, expression: variable };
64
+ }
65
+ });
66
+ sqlQuery = func(p).toSqlString();
67
+ }
68
+ return sqlQuery;
69
+ };
70
+ return (args) => {
71
+ return {
72
+ [SQL_ENTITY]: undefined,
73
+ toSqlString: () => {
74
+ let usedQuery = getSqlString();
75
+ seenArguments.forEach((variable, key) => {
76
+ usedQuery = usedQuery.replace(variable, escape(args[key]));
77
+ });
78
+ return usedQuery;
79
+ },
80
+ };
81
+ };
82
+ }
83
+ /**
84
+ * Create a reference for a query that is used in WITH part and you want to use it in from(X) or join(X) call.
85
+ */
86
+ static createRef(table, newAlias) {
87
+ const definition = {};
88
+ for (const k in table) {
89
+ definition[k] = table[k];
90
+ }
91
+ return MysqlTable.defineDbTable(escapeId(table[SQL_ALIAS]), newAlias, definition);
92
+ }
93
+ }
94
+ //# sourceMappingURL=SQL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQL.js","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { COMPARISON_SIGNS, OrderByStructure, PrepareQueryArgument, SQL_BOOL } from "./Types";
2
+ export type Expr<TableRef, Name, Type extends string | number | unknown> = symbol & {
3
+ tableRef: TableRef;
4
+ type: Type;
5
+ } & SqlExpression<TableRef, Name, Type>;
6
+ export type AnyBoolExpr<TableRef> = Expr<TableRef, string | unknown, SQL_BOOL>;
7
+ export type AnyExpr = Expr<string, string | unknown, string | number | unknown>;
8
+ export type Transformer<Input, Output> = ((value: Input) => Output) | ((value: Input) => Promise<Output>);
9
+ export declare class SqlExpression<TableRef, Name extends string | unknown | undefined, Type extends string | number | unknown> {
10
+ readonly expression: string;
11
+ readonly nameAs: Name | undefined;
12
+ readonly transformer: Transformer<unknown, Type>;
13
+ constructor(expression: string, nameAs?: Name, parser?: Transformer<unknown, Type>);
14
+ private asExpr;
15
+ static create<TableRef, Name, Type>(expression: string, nameAs?: string | unknown | undefined, parser?: Transformer<unknown, Type>): Expr<TableRef, Name, Type>;
16
+ cast<CastType extends string | number>(): Expr<TableRef, Name, CastType>;
17
+ as<NewName extends string>(name: NewName): Expr<TableRef, NewName, Type>;
18
+ transform<ResultType>(func: (value: Type) => ResultType): Expr<TableRef, Name, ResultType>;
19
+ asyncTransform<ResultType>(func: (value: Type) => Promise<ResultType>): Expr<TableRef, Name, ResultType>;
20
+ isNull(): Expr<TableRef, unknown, SQL_BOOL>;
21
+ isNotNull(): Expr<TableRef, unknown, SQL_BOOL>;
22
+ notNull(): Expr<TableRef, unknown, SQL_BOOL>;
23
+ in<TableRef2 = never>(values: Type[] | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
24
+ notEq<TableRef2 = never>(col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
25
+ eq<TableRef2 = never>(col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
26
+ lt<TableRef2 = never>(col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
27
+ gt<TableRef2 = never>(col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
28
+ lte<TableRef2 = never>(col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
29
+ gte<TableRef2 = never>(col2: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
30
+ compare<TableRef2 = never>(op: COMPARISON_SIGNS, value: Type | Expr<TableRef2, string | unknown, Type> | PrepareQueryArgument): Expr<TableRef | TableRef2, unknown, SQL_BOOL>;
31
+ like(value: string): Expr<TableRef, unknown, SQL_BOOL>;
32
+ contains(value: string): Expr<TableRef, unknown, SQL_BOOL>;
33
+ startsWith(value: string): Expr<TableRef, unknown, SQL_BOOL>;
34
+ endsWith(value: string): Expr<TableRef, unknown, SQL_BOOL>;
35
+ }
36
+ export type ExprWithOver<TableRef, Name, Type extends string | number | unknown> = symbol & Expr<TableRef, Name, Type> & SqlExpressionWithOver<TableRef, Name, Type>;
37
+ export declare class SqlExpressionWithOver<TableRef, Name, Type extends string | number | unknown> extends SqlExpression<TableRef, Name, Type> {
38
+ static create<TableRef, Name, Type>(expression: string, nameAs?: string | unknown | undefined): ExprWithOver<TableRef, Name, Type>;
39
+ over<TableRef1 extends string>(func: (builder: Over<never>) => Over<TableRef1>): Expr<TableRef | TableRef1, unknown, Type>;
40
+ over<WindowName extends string, TableRef1>(namedWindow: WindowName, func: (builder: Over<TableRef1>) => void): Expr<TableRef | TableRef1 | `(window) as ${WindowName}`, unknown, Type>;
41
+ }
42
+ export declare class Over<TableRef> {
43
+ private _partitionBy;
44
+ private _orderBy;
45
+ orderBy<TableRef2>(...cols: OrderByStructure<Expr<TableRef2, string, any>>): Over<TableRef | TableRef2>;
46
+ partitionBy<TableRef2>(...cols: Expr<TableRef2, string, any>[]): Over<TableRef | TableRef2>;
47
+ toString(): string;
48
+ }
49
+ //# sourceMappingURL=SqlExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlExpression.d.ts","sourceRoot":"","sources":["../../src/SqlExpression.ts"],"names":[],"mappings":"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"}