@devbro/neko-sql 0.1.0

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 (96) hide show
  1. package/README.md +30 -0
  2. package/dist/Blueprint.d.mts +39 -0
  3. package/dist/Blueprint.d.ts +39 -0
  4. package/dist/Blueprint.js +127 -0
  5. package/dist/Blueprint.js.map +1 -0
  6. package/dist/Blueprint.mjs +102 -0
  7. package/dist/Blueprint.mjs.map +1 -0
  8. package/dist/Connection-DBxWn3YO.d.ts +101 -0
  9. package/dist/Connection-Z5qLWvdu.d.mts +101 -0
  10. package/dist/Connection.d.mts +4 -0
  11. package/dist/Connection.d.ts +4 -0
  12. package/dist/Connection.js +30 -0
  13. package/dist/Connection.js.map +1 -0
  14. package/dist/Connection.mjs +6 -0
  15. package/dist/Connection.mjs.map +1 -0
  16. package/dist/Expression.d.mts +1 -0
  17. package/dist/Expression.d.ts +1 -0
  18. package/dist/Expression.js +37 -0
  19. package/dist/Expression.js.map +1 -0
  20. package/dist/Expression.mjs +13 -0
  21. package/dist/Expression.mjs.map +1 -0
  22. package/dist/Migration.d.mts +11 -0
  23. package/dist/Migration.d.ts +11 -0
  24. package/dist/Migration.js +30 -0
  25. package/dist/Migration.js.map +1 -0
  26. package/dist/Migration.mjs +6 -0
  27. package/dist/Migration.mjs.map +1 -0
  28. package/dist/Query.d.mts +4 -0
  29. package/dist/Query.d.ts +4 -0
  30. package/dist/Query.js +163 -0
  31. package/dist/Query.js.map +1 -0
  32. package/dist/Query.mjs +139 -0
  33. package/dist/Query.mjs.map +1 -0
  34. package/dist/QueryGrammar.d.mts +4 -0
  35. package/dist/QueryGrammar.d.ts +4 -0
  36. package/dist/QueryGrammar.js +241 -0
  37. package/dist/QueryGrammar.js.map +1 -0
  38. package/dist/QueryGrammar.mjs +217 -0
  39. package/dist/QueryGrammar.mjs.map +1 -0
  40. package/dist/Schema.d.mts +4 -0
  41. package/dist/Schema.d.ts +4 -0
  42. package/dist/Schema.js +62 -0
  43. package/dist/Schema.js.map +1 -0
  44. package/dist/Schema.mjs +38 -0
  45. package/dist/Schema.mjs.map +1 -0
  46. package/dist/SchemaGrammar.d.mts +17 -0
  47. package/dist/SchemaGrammar.d.ts +17 -0
  48. package/dist/SchemaGrammar.js +138 -0
  49. package/dist/SchemaGrammar.js.map +1 -0
  50. package/dist/SchemaGrammar.mjs +114 -0
  51. package/dist/SchemaGrammar.mjs.map +1 -0
  52. package/dist/databases/index.d.mts +8 -0
  53. package/dist/databases/index.d.ts +8 -0
  54. package/dist/databases/index.js +23 -0
  55. package/dist/databases/index.js.map +1 -0
  56. package/dist/databases/index.mjs +2 -0
  57. package/dist/databases/index.mjs.map +1 -0
  58. package/dist/databases/postgresql/PostgresqlConnection.d.mts +24 -0
  59. package/dist/databases/postgresql/PostgresqlConnection.d.ts +24 -0
  60. package/dist/databases/postgresql/PostgresqlConnection.js +108 -0
  61. package/dist/databases/postgresql/PostgresqlConnection.js.map +1 -0
  62. package/dist/databases/postgresql/PostgresqlConnection.mjs +74 -0
  63. package/dist/databases/postgresql/PostgresqlConnection.mjs.map +1 -0
  64. package/dist/databases/postgresql/PostgresqlQueryGrammar.d.mts +20 -0
  65. package/dist/databases/postgresql/PostgresqlQueryGrammar.d.ts +20 -0
  66. package/dist/databases/postgresql/PostgresqlQueryGrammar.js +65 -0
  67. package/dist/databases/postgresql/PostgresqlQueryGrammar.js.map +1 -0
  68. package/dist/databases/postgresql/PostgresqlQueryGrammar.mjs +41 -0
  69. package/dist/databases/postgresql/PostgresqlQueryGrammar.mjs.map +1 -0
  70. package/dist/databases/postgresql/PostgresqlSchemaGrammar.d.mts +8 -0
  71. package/dist/databases/postgresql/PostgresqlSchemaGrammar.d.ts +8 -0
  72. package/dist/databases/postgresql/PostgresqlSchemaGrammar.js +31 -0
  73. package/dist/databases/postgresql/PostgresqlSchemaGrammar.js.map +1 -0
  74. package/dist/databases/postgresql/PostgresqlSchemaGrammar.mjs +7 -0
  75. package/dist/databases/postgresql/PostgresqlSchemaGrammar.mjs.map +1 -0
  76. package/dist/databases/postgresql/index.d.mts +8 -0
  77. package/dist/databases/postgresql/index.d.ts +8 -0
  78. package/dist/databases/postgresql/index.js +27 -0
  79. package/dist/databases/postgresql/index.js.map +1 -0
  80. package/dist/databases/postgresql/index.mjs +4 -0
  81. package/dist/databases/postgresql/index.mjs.map +1 -0
  82. package/dist/index.d.mts +9 -0
  83. package/dist/index.d.ts +9 -0
  84. package/dist/index.js +37 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/index.mjs +9 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/types-C_aDrXJN.d.mts +48 -0
  89. package/dist/types-C_aDrXJN.d.ts +48 -0
  90. package/dist/types.d.mts +1 -0
  91. package/dist/types.d.ts +1 -0
  92. package/dist/types.js +17 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/types.mjs +1 -0
  95. package/dist/types.mjs.map +1 -0
  96. package/package.json +70 -0
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var QueryGrammar_exports = {};
20
+ __export(QueryGrammar_exports, {
21
+ QueryGrammar: () => QueryGrammar
22
+ });
23
+ module.exports = __toCommonJS(QueryGrammar_exports);
24
+ function toUpperFirst(str) {
25
+ return str.substring(0, 1).toUpperCase() + str.substring(1);
26
+ }
27
+ class QueryGrammar {
28
+ sqlParts = [
29
+ "select",
30
+ "table",
31
+ "join",
32
+ "where",
33
+ "groupBy",
34
+ "having",
35
+ "orderBy",
36
+ "limit",
37
+ "offset"
38
+ ];
39
+ toSql(query) {
40
+ let sql = "";
41
+ let bindings = [];
42
+ for (const part of this.sqlParts) {
43
+ const funcName = "compile" + toUpperFirst(part);
44
+ const r = this[funcName](query.parts[part]);
45
+ if (!sql) {
46
+ sql = r.sql;
47
+ } else if (r.sql) {
48
+ sql += " " + r.sql;
49
+ }
50
+ bindings = [...bindings, ...r.bindings];
51
+ }
52
+ return { sql, bindings };
53
+ }
54
+ compileSelect(selects) {
55
+ const rc = selects.map((v) => {
56
+ return v;
57
+ }).join(", ");
58
+ return { sql: "select " + rc, bindings: [] };
59
+ }
60
+ compileTable(tableName) {
61
+ let rc = "";
62
+ if (tableName.length) {
63
+ rc = "from " + tableName;
64
+ }
65
+ return { sql: rc, bindings: [] };
66
+ }
67
+ compileJoin(joins) {
68
+ let sql = "";
69
+ let bindings = [];
70
+ for (const j of joins) {
71
+ sql += " " + j.type + " join " + j.table + " on ";
72
+ const where = this.compileWhere(j.conditions);
73
+ if (where.sql.startsWith("where ")) {
74
+ where.sql = where.sql.substring("where ".length);
75
+ }
76
+ sql += "(";
77
+ sql += where.sql;
78
+ sql += ")";
79
+ bindings = [...bindings, ...where.bindings];
80
+ }
81
+ return { sql, bindings };
82
+ }
83
+ compileWhere(wheres) {
84
+ let sql = "";
85
+ let bindings = [];
86
+ for (const w of wheres) {
87
+ sql += " " + w.joinCondition + " ";
88
+ if (w.negateCondition) {
89
+ sql += "not ";
90
+ }
91
+ const funcName = "compileWhere" + toUpperFirst(w.type);
92
+ const wh = this[funcName](w);
93
+ sql += wh.sql;
94
+ bindings = [...bindings, ...wh.bindings];
95
+ }
96
+ if (sql.startsWith(" and ")) {
97
+ sql = "where " + sql.substring(" and ".length);
98
+ } else if (sql.startsWith(" or ")) {
99
+ sql = "where " + sql.substring(" or ".length);
100
+ }
101
+ return { sql, bindings };
102
+ }
103
+ compileWhereOperation(w) {
104
+ return {
105
+ sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,
106
+ bindings: [w.value]
107
+ };
108
+ }
109
+ compileWhereOperationColumn(w) {
110
+ return {
111
+ sql: `${w.column1} ${w.operation} ${w.column2}`,
112
+ bindings: []
113
+ };
114
+ }
115
+ compileOrderBy(orderBy) {
116
+ let rc = "";
117
+ if (orderBy.length) {
118
+ rc = "order by " + orderBy.join(", ");
119
+ }
120
+ return { sql: rc, bindings: [] };
121
+ }
122
+ compileLimit(limit) {
123
+ let rc = "";
124
+ if (limit !== null) {
125
+ rc = "limit " + limit;
126
+ }
127
+ return { sql: rc, bindings: [] };
128
+ }
129
+ compileOffset(offset) {
130
+ let rc = "";
131
+ if (offset !== null) {
132
+ rc = "offset " + offset;
133
+ }
134
+ return { sql: rc, bindings: [] };
135
+ }
136
+ compileWhereNull(w) {
137
+ return {
138
+ sql: `${w.column} is null`,
139
+ bindings: []
140
+ };
141
+ }
142
+ compileInsert(query, data) {
143
+ let sql = "insert into " + query.parts.table + " (";
144
+ const columns = [];
145
+ const bindings = [];
146
+ const values = [];
147
+ for (const [k, v] of Object.entries(data)) {
148
+ columns.push(k);
149
+ bindings.push(v);
150
+ values.push(this.getVariablePlaceholder());
151
+ }
152
+ sql += columns.join(", ") + ") values (" + values + ")";
153
+ return { sql, bindings };
154
+ }
155
+ compileUpdate(query, data) {
156
+ let sql = "update " + query.parts.table + " set ";
157
+ const bindings = [];
158
+ const setParts = [];
159
+ for (const [k, v] of Object.entries(data)) {
160
+ setParts.push(`${k} = ${this.getVariablePlaceholder()}`);
161
+ bindings.push(v);
162
+ }
163
+ sql += setParts.join(", ");
164
+ const where_csql = this.compileWhere(query.parts.where);
165
+ sql += " " + where_csql.sql;
166
+ bindings.push(...where_csql.bindings);
167
+ return { sql, bindings };
168
+ }
169
+ compileDelete(query) {
170
+ let sql = "delete from " + query.parts.table;
171
+ const where_csql = this.compileWhere(query.parts.where);
172
+ sql += " " + where_csql.sql;
173
+ return { sql, bindings: where_csql.bindings };
174
+ }
175
+ compileUpsert(query, data, conflictFields, updateFields) {
176
+ let sql = "insert into " + query.parts.table + " (";
177
+ const columns = [];
178
+ const bindings = [];
179
+ const values = [];
180
+ for (const [k, v] of Object.entries(data)) {
181
+ columns.push(k);
182
+ bindings.push(v);
183
+ values.push(this.getVariablePlaceholder());
184
+ }
185
+ sql += columns.join(", ") + ") values (" + values + ")";
186
+ sql += " on conflict (" + conflictFields.join(", ") + ") do update set ";
187
+ const setParts = [];
188
+ for (const f of updateFields) {
189
+ setParts.push(`${f} = excluded.${f}`);
190
+ }
191
+ sql += setParts.join(", ");
192
+ const where_csql = this.compileWhere(query.parts.where);
193
+ sql += " " + where_csql.sql;
194
+ bindings.push(...where_csql.bindings);
195
+ return { sql, bindings };
196
+ }
197
+ compileGroupBy(groupBy) {
198
+ let rc = "";
199
+ if (groupBy.length) {
200
+ rc = "group by " + groupBy.join(", ");
201
+ }
202
+ return { sql: rc, bindings: [] };
203
+ }
204
+ compileHaving(having) {
205
+ let sql = "";
206
+ let bindings = [];
207
+ for (const w of having) {
208
+ sql += " " + w.joinCondition + " ";
209
+ if (w.negateCondition) {
210
+ sql += "not ";
211
+ }
212
+ const funcName = "compileHaving" + toUpperFirst(w.type);
213
+ const wh = this[funcName](w);
214
+ sql += wh.sql;
215
+ bindings = [...bindings, ...wh.bindings];
216
+ }
217
+ if (sql.startsWith(" and ")) {
218
+ sql = "having " + sql.substring(" and ".length);
219
+ } else if (sql.startsWith(" or ")) {
220
+ sql = "having " + sql.substring(" or ".length);
221
+ }
222
+ return { sql, bindings };
223
+ }
224
+ compileHavingOperation(w) {
225
+ return {
226
+ sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,
227
+ bindings: [w.value]
228
+ };
229
+ }
230
+ compileHavingRaw(w) {
231
+ return {
232
+ sql: w.sql,
233
+ bindings: w.bindings
234
+ };
235
+ }
236
+ }
237
+ // Annotate the CommonJS export names for ESM import in node:
238
+ 0 && (module.exports = {
239
+ QueryGrammar
240
+ });
241
+ //# sourceMappingURL=QueryGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/QueryGrammar.ts"],"sourcesContent":["import { Query } from './Query';\nimport {\n Parameter,\n CompiledSql,\n selectType,\n whereNull,\n whereOp,\n whereType,\n whereRaw,\n havingType,\n whereOpColumn,\n joinType,\n} from './types';\n\nfunction toUpperFirst(str: string) {\n return str.substring(0, 1).toUpperCase() + str.substring(1);\n}\nexport abstract class QueryGrammar {\n sqlParts: string[] = [\n 'select',\n 'table',\n 'join',\n 'where',\n 'groupBy',\n 'having',\n 'orderBy',\n 'limit',\n 'offset',\n ];\n\n toSql(query: Query): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const part of this.sqlParts) {\n // @ts-ignore\n const funcName: keyof this = 'compile' + toUpperFirst(part);\n // @ts-ignore\n const r = this[funcName](query.parts[part]);\n if (!sql) {\n sql = r.sql;\n } else if (r.sql) {\n sql += ' ' + r.sql;\n }\n bindings = [...bindings, ...r.bindings];\n }\n return { sql, bindings };\n }\n\n compileSelect(selects: selectType[]): CompiledSql {\n const rc = selects\n .map((v) => {\n return v;\n })\n .join(', ');\n\n return { sql: 'select ' + rc, bindings: [] };\n }\n\n compileTable(tableName: string): CompiledSql {\n let rc = '';\n if (tableName.length) {\n rc = 'from ' + tableName;\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileJoin(joins: joinType[]): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const j of joins) {\n sql += ' ' + j.type + ' join ' + j.table + ' on ';\n\n const where = this.compileWhere(j.conditions);\n if (where.sql.startsWith('where ')) {\n where.sql = where.sql.substring('where '.length);\n }\n\n sql += '(';\n sql += where.sql;\n sql += ')';\n\n bindings = [...bindings, ...where.bindings];\n }\n\n return { sql, bindings };\n }\n\n compileWhere(wheres: whereType[]): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const w of wheres) {\n sql += ' ' + w.joinCondition + ' ';\n if (w.negateCondition) {\n sql += 'not ';\n }\n const funcName = 'compileWhere' + toUpperFirst(w.type);\n // @ts-ignore\n const wh = this[funcName](w);\n sql += wh.sql;\n bindings = [...bindings, ...wh.bindings];\n }\n if (sql.startsWith(' and ')) {\n sql = 'where ' + sql.substring(' and '.length);\n } else if (sql.startsWith(' or ')) {\n sql = 'where ' + sql.substring(' or '.length);\n }\n return { sql, bindings };\n }\n\n compileWhereOperation(w: whereOp): CompiledSql {\n return {\n sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,\n bindings: [w.value],\n };\n }\n\n compileWhereOperationColumn(w: whereOpColumn): CompiledSql {\n return {\n sql: `${w.column1} ${w.operation} ${w.column2}`,\n bindings: [],\n };\n }\n\n compileOrderBy(orderBy: string[]): CompiledSql {\n let rc = '';\n if (orderBy.length) {\n rc = 'order by ' + orderBy.join(', ');\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileLimit(limit: number | null): CompiledSql {\n let rc = '';\n if (limit !== null) {\n rc = 'limit ' + limit;\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileOffset(offset: number | null): CompiledSql {\n let rc = '';\n if (offset !== null) {\n rc = 'offset ' + offset;\n }\n\n return { sql: rc, bindings: [] };\n }\n\n abstract getVariablePlaceholder(): string;\n\n compileWhereNull(w: whereNull): CompiledSql {\n return {\n sql: `${w.column} is null`,\n bindings: [],\n };\n }\n\n compileInsert(query: Query, data: Record<string, Parameter>): CompiledSql {\n let sql = 'insert into ' + query.parts.table + ' (';\n const columns: string[] = [];\n const bindings: Parameter[] = [];\n const values: string[] = [];\n\n for (const [k, v] of Object.entries(data)) {\n columns.push(k);\n bindings.push(v);\n values.push(this.getVariablePlaceholder());\n }\n\n sql += columns.join(', ') + ') values (' + values + ')';\n\n return { sql, bindings };\n }\n\n abstract compileInsertGetId(\n query: Query,\n data: Record<string, Parameter>,\n options: { primaryKey: string[] }\n ): CompiledSql;\n\n compileUpdate(query: Query, data: Record<string, Parameter>): CompiledSql {\n let sql = 'update ' + query.parts.table + ' set ';\n const bindings: Parameter[] = [];\n\n const setParts = [];\n for (const [k, v] of Object.entries(data)) {\n setParts.push(`${k} = ${this.getVariablePlaceholder()}`);\n bindings.push(v);\n }\n\n sql += setParts.join(', ');\n\n const where_csql = this.compileWhere(query.parts.where);\n sql += ' ' + where_csql.sql;\n bindings.push(...where_csql.bindings);\n\n return { sql, bindings };\n }\n\n compileDelete(query: Query): CompiledSql {\n let sql = 'delete from ' + query.parts.table;\n const where_csql = this.compileWhere(query.parts.where);\n sql += ' ' + where_csql.sql;\n return { sql, bindings: where_csql.bindings };\n }\n\n compileUpsert(\n query: Query,\n data: Record<string, Parameter>,\n conflictFields: string[],\n updateFields: string[]\n ): CompiledSql {\n let sql = 'insert into ' + query.parts.table + ' (';\n const columns: string[] = [];\n const bindings: Parameter[] = [];\n const values: string[] = [];\n\n for (const [k, v] of Object.entries(data)) {\n columns.push(k);\n bindings.push(v);\n values.push(this.getVariablePlaceholder());\n }\n\n sql += columns.join(', ') + ') values (' + values + ')';\n\n sql += ' on conflict (' + conflictFields.join(', ') + ') do update set ';\n const setParts = [];\n for (const f of updateFields) {\n setParts.push(`${f} = excluded.${f}`);\n }\n sql += setParts.join(', ');\n\n const where_csql = this.compileWhere(query.parts.where);\n sql += ' ' + where_csql.sql;\n bindings.push(...where_csql.bindings);\n\n return { sql, bindings };\n }\n\n compileGroupBy(groupBy: string[]): CompiledSql {\n let rc = '';\n if (groupBy.length) {\n rc = 'group by ' + groupBy.join(', ');\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileHaving(having: havingType[]): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const w of having) {\n sql += ' ' + w.joinCondition + ' ';\n if (w.negateCondition) {\n sql += 'not ';\n }\n const funcName = 'compileHaving' + toUpperFirst(w.type);\n // @ts-ignore\n const wh = this[funcName](w);\n sql += wh.sql;\n bindings = [...bindings, ...wh.bindings];\n }\n if (sql.startsWith(' and ')) {\n sql = 'having ' + sql.substring(' and '.length);\n } else if (sql.startsWith(' or ')) {\n sql = 'having ' + sql.substring(' or '.length);\n }\n return { sql, bindings };\n }\n\n compileHavingOperation(w: whereOp): CompiledSql {\n return {\n sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,\n bindings: [w.value],\n };\n }\n\n compileHavingRaw(w: whereRaw): CompiledSql {\n return {\n sql: w.sql,\n bindings: w.bindings,\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,217 @@
1
+ function toUpperFirst(str) {
2
+ return str.substring(0, 1).toUpperCase() + str.substring(1);
3
+ }
4
+ class QueryGrammar {
5
+ sqlParts = [
6
+ "select",
7
+ "table",
8
+ "join",
9
+ "where",
10
+ "groupBy",
11
+ "having",
12
+ "orderBy",
13
+ "limit",
14
+ "offset"
15
+ ];
16
+ toSql(query) {
17
+ let sql = "";
18
+ let bindings = [];
19
+ for (const part of this.sqlParts) {
20
+ const funcName = "compile" + toUpperFirst(part);
21
+ const r = this[funcName](query.parts[part]);
22
+ if (!sql) {
23
+ sql = r.sql;
24
+ } else if (r.sql) {
25
+ sql += " " + r.sql;
26
+ }
27
+ bindings = [...bindings, ...r.bindings];
28
+ }
29
+ return { sql, bindings };
30
+ }
31
+ compileSelect(selects) {
32
+ const rc = selects.map((v) => {
33
+ return v;
34
+ }).join(", ");
35
+ return { sql: "select " + rc, bindings: [] };
36
+ }
37
+ compileTable(tableName) {
38
+ let rc = "";
39
+ if (tableName.length) {
40
+ rc = "from " + tableName;
41
+ }
42
+ return { sql: rc, bindings: [] };
43
+ }
44
+ compileJoin(joins) {
45
+ let sql = "";
46
+ let bindings = [];
47
+ for (const j of joins) {
48
+ sql += " " + j.type + " join " + j.table + " on ";
49
+ const where = this.compileWhere(j.conditions);
50
+ if (where.sql.startsWith("where ")) {
51
+ where.sql = where.sql.substring("where ".length);
52
+ }
53
+ sql += "(";
54
+ sql += where.sql;
55
+ sql += ")";
56
+ bindings = [...bindings, ...where.bindings];
57
+ }
58
+ return { sql, bindings };
59
+ }
60
+ compileWhere(wheres) {
61
+ let sql = "";
62
+ let bindings = [];
63
+ for (const w of wheres) {
64
+ sql += " " + w.joinCondition + " ";
65
+ if (w.negateCondition) {
66
+ sql += "not ";
67
+ }
68
+ const funcName = "compileWhere" + toUpperFirst(w.type);
69
+ const wh = this[funcName](w);
70
+ sql += wh.sql;
71
+ bindings = [...bindings, ...wh.bindings];
72
+ }
73
+ if (sql.startsWith(" and ")) {
74
+ sql = "where " + sql.substring(" and ".length);
75
+ } else if (sql.startsWith(" or ")) {
76
+ sql = "where " + sql.substring(" or ".length);
77
+ }
78
+ return { sql, bindings };
79
+ }
80
+ compileWhereOperation(w) {
81
+ return {
82
+ sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,
83
+ bindings: [w.value]
84
+ };
85
+ }
86
+ compileWhereOperationColumn(w) {
87
+ return {
88
+ sql: `${w.column1} ${w.operation} ${w.column2}`,
89
+ bindings: []
90
+ };
91
+ }
92
+ compileOrderBy(orderBy) {
93
+ let rc = "";
94
+ if (orderBy.length) {
95
+ rc = "order by " + orderBy.join(", ");
96
+ }
97
+ return { sql: rc, bindings: [] };
98
+ }
99
+ compileLimit(limit) {
100
+ let rc = "";
101
+ if (limit !== null) {
102
+ rc = "limit " + limit;
103
+ }
104
+ return { sql: rc, bindings: [] };
105
+ }
106
+ compileOffset(offset) {
107
+ let rc = "";
108
+ if (offset !== null) {
109
+ rc = "offset " + offset;
110
+ }
111
+ return { sql: rc, bindings: [] };
112
+ }
113
+ compileWhereNull(w) {
114
+ return {
115
+ sql: `${w.column} is null`,
116
+ bindings: []
117
+ };
118
+ }
119
+ compileInsert(query, data) {
120
+ let sql = "insert into " + query.parts.table + " (";
121
+ const columns = [];
122
+ const bindings = [];
123
+ const values = [];
124
+ for (const [k, v] of Object.entries(data)) {
125
+ columns.push(k);
126
+ bindings.push(v);
127
+ values.push(this.getVariablePlaceholder());
128
+ }
129
+ sql += columns.join(", ") + ") values (" + values + ")";
130
+ return { sql, bindings };
131
+ }
132
+ compileUpdate(query, data) {
133
+ let sql = "update " + query.parts.table + " set ";
134
+ const bindings = [];
135
+ const setParts = [];
136
+ for (const [k, v] of Object.entries(data)) {
137
+ setParts.push(`${k} = ${this.getVariablePlaceholder()}`);
138
+ bindings.push(v);
139
+ }
140
+ sql += setParts.join(", ");
141
+ const where_csql = this.compileWhere(query.parts.where);
142
+ sql += " " + where_csql.sql;
143
+ bindings.push(...where_csql.bindings);
144
+ return { sql, bindings };
145
+ }
146
+ compileDelete(query) {
147
+ let sql = "delete from " + query.parts.table;
148
+ const where_csql = this.compileWhere(query.parts.where);
149
+ sql += " " + where_csql.sql;
150
+ return { sql, bindings: where_csql.bindings };
151
+ }
152
+ compileUpsert(query, data, conflictFields, updateFields) {
153
+ let sql = "insert into " + query.parts.table + " (";
154
+ const columns = [];
155
+ const bindings = [];
156
+ const values = [];
157
+ for (const [k, v] of Object.entries(data)) {
158
+ columns.push(k);
159
+ bindings.push(v);
160
+ values.push(this.getVariablePlaceholder());
161
+ }
162
+ sql += columns.join(", ") + ") values (" + values + ")";
163
+ sql += " on conflict (" + conflictFields.join(", ") + ") do update set ";
164
+ const setParts = [];
165
+ for (const f of updateFields) {
166
+ setParts.push(`${f} = excluded.${f}`);
167
+ }
168
+ sql += setParts.join(", ");
169
+ const where_csql = this.compileWhere(query.parts.where);
170
+ sql += " " + where_csql.sql;
171
+ bindings.push(...where_csql.bindings);
172
+ return { sql, bindings };
173
+ }
174
+ compileGroupBy(groupBy) {
175
+ let rc = "";
176
+ if (groupBy.length) {
177
+ rc = "group by " + groupBy.join(", ");
178
+ }
179
+ return { sql: rc, bindings: [] };
180
+ }
181
+ compileHaving(having) {
182
+ let sql = "";
183
+ let bindings = [];
184
+ for (const w of having) {
185
+ sql += " " + w.joinCondition + " ";
186
+ if (w.negateCondition) {
187
+ sql += "not ";
188
+ }
189
+ const funcName = "compileHaving" + toUpperFirst(w.type);
190
+ const wh = this[funcName](w);
191
+ sql += wh.sql;
192
+ bindings = [...bindings, ...wh.bindings];
193
+ }
194
+ if (sql.startsWith(" and ")) {
195
+ sql = "having " + sql.substring(" and ".length);
196
+ } else if (sql.startsWith(" or ")) {
197
+ sql = "having " + sql.substring(" or ".length);
198
+ }
199
+ return { sql, bindings };
200
+ }
201
+ compileHavingOperation(w) {
202
+ return {
203
+ sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,
204
+ bindings: [w.value]
205
+ };
206
+ }
207
+ compileHavingRaw(w) {
208
+ return {
209
+ sql: w.sql,
210
+ bindings: w.bindings
211
+ };
212
+ }
213
+ }
214
+ export {
215
+ QueryGrammar
216
+ };
217
+ //# sourceMappingURL=QueryGrammar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/QueryGrammar.ts"],"sourcesContent":["import { Query } from './Query';\nimport {\n Parameter,\n CompiledSql,\n selectType,\n whereNull,\n whereOp,\n whereType,\n whereRaw,\n havingType,\n whereOpColumn,\n joinType,\n} from './types';\n\nfunction toUpperFirst(str: string) {\n return str.substring(0, 1).toUpperCase() + str.substring(1);\n}\nexport abstract class QueryGrammar {\n sqlParts: string[] = [\n 'select',\n 'table',\n 'join',\n 'where',\n 'groupBy',\n 'having',\n 'orderBy',\n 'limit',\n 'offset',\n ];\n\n toSql(query: Query): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const part of this.sqlParts) {\n // @ts-ignore\n const funcName: keyof this = 'compile' + toUpperFirst(part);\n // @ts-ignore\n const r = this[funcName](query.parts[part]);\n if (!sql) {\n sql = r.sql;\n } else if (r.sql) {\n sql += ' ' + r.sql;\n }\n bindings = [...bindings, ...r.bindings];\n }\n return { sql, bindings };\n }\n\n compileSelect(selects: selectType[]): CompiledSql {\n const rc = selects\n .map((v) => {\n return v;\n })\n .join(', ');\n\n return { sql: 'select ' + rc, bindings: [] };\n }\n\n compileTable(tableName: string): CompiledSql {\n let rc = '';\n if (tableName.length) {\n rc = 'from ' + tableName;\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileJoin(joins: joinType[]): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const j of joins) {\n sql += ' ' + j.type + ' join ' + j.table + ' on ';\n\n const where = this.compileWhere(j.conditions);\n if (where.sql.startsWith('where ')) {\n where.sql = where.sql.substring('where '.length);\n }\n\n sql += '(';\n sql += where.sql;\n sql += ')';\n\n bindings = [...bindings, ...where.bindings];\n }\n\n return { sql, bindings };\n }\n\n compileWhere(wheres: whereType[]): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const w of wheres) {\n sql += ' ' + w.joinCondition + ' ';\n if (w.negateCondition) {\n sql += 'not ';\n }\n const funcName = 'compileWhere' + toUpperFirst(w.type);\n // @ts-ignore\n const wh = this[funcName](w);\n sql += wh.sql;\n bindings = [...bindings, ...wh.bindings];\n }\n if (sql.startsWith(' and ')) {\n sql = 'where ' + sql.substring(' and '.length);\n } else if (sql.startsWith(' or ')) {\n sql = 'where ' + sql.substring(' or '.length);\n }\n return { sql, bindings };\n }\n\n compileWhereOperation(w: whereOp): CompiledSql {\n return {\n sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,\n bindings: [w.value],\n };\n }\n\n compileWhereOperationColumn(w: whereOpColumn): CompiledSql {\n return {\n sql: `${w.column1} ${w.operation} ${w.column2}`,\n bindings: [],\n };\n }\n\n compileOrderBy(orderBy: string[]): CompiledSql {\n let rc = '';\n if (orderBy.length) {\n rc = 'order by ' + orderBy.join(', ');\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileLimit(limit: number | null): CompiledSql {\n let rc = '';\n if (limit !== null) {\n rc = 'limit ' + limit;\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileOffset(offset: number | null): CompiledSql {\n let rc = '';\n if (offset !== null) {\n rc = 'offset ' + offset;\n }\n\n return { sql: rc, bindings: [] };\n }\n\n abstract getVariablePlaceholder(): string;\n\n compileWhereNull(w: whereNull): CompiledSql {\n return {\n sql: `${w.column} is null`,\n bindings: [],\n };\n }\n\n compileInsert(query: Query, data: Record<string, Parameter>): CompiledSql {\n let sql = 'insert into ' + query.parts.table + ' (';\n const columns: string[] = [];\n const bindings: Parameter[] = [];\n const values: string[] = [];\n\n for (const [k, v] of Object.entries(data)) {\n columns.push(k);\n bindings.push(v);\n values.push(this.getVariablePlaceholder());\n }\n\n sql += columns.join(', ') + ') values (' + values + ')';\n\n return { sql, bindings };\n }\n\n abstract compileInsertGetId(\n query: Query,\n data: Record<string, Parameter>,\n options: { primaryKey: string[] }\n ): CompiledSql;\n\n compileUpdate(query: Query, data: Record<string, Parameter>): CompiledSql {\n let sql = 'update ' + query.parts.table + ' set ';\n const bindings: Parameter[] = [];\n\n const setParts = [];\n for (const [k, v] of Object.entries(data)) {\n setParts.push(`${k} = ${this.getVariablePlaceholder()}`);\n bindings.push(v);\n }\n\n sql += setParts.join(', ');\n\n const where_csql = this.compileWhere(query.parts.where);\n sql += ' ' + where_csql.sql;\n bindings.push(...where_csql.bindings);\n\n return { sql, bindings };\n }\n\n compileDelete(query: Query): CompiledSql {\n let sql = 'delete from ' + query.parts.table;\n const where_csql = this.compileWhere(query.parts.where);\n sql += ' ' + where_csql.sql;\n return { sql, bindings: where_csql.bindings };\n }\n\n compileUpsert(\n query: Query,\n data: Record<string, Parameter>,\n conflictFields: string[],\n updateFields: string[]\n ): CompiledSql {\n let sql = 'insert into ' + query.parts.table + ' (';\n const columns: string[] = [];\n const bindings: Parameter[] = [];\n const values: string[] = [];\n\n for (const [k, v] of Object.entries(data)) {\n columns.push(k);\n bindings.push(v);\n values.push(this.getVariablePlaceholder());\n }\n\n sql += columns.join(', ') + ') values (' + values + ')';\n\n sql += ' on conflict (' + conflictFields.join(', ') + ') do update set ';\n const setParts = [];\n for (const f of updateFields) {\n setParts.push(`${f} = excluded.${f}`);\n }\n sql += setParts.join(', ');\n\n const where_csql = this.compileWhere(query.parts.where);\n sql += ' ' + where_csql.sql;\n bindings.push(...where_csql.bindings);\n\n return { sql, bindings };\n }\n\n compileGroupBy(groupBy: string[]): CompiledSql {\n let rc = '';\n if (groupBy.length) {\n rc = 'group by ' + groupBy.join(', ');\n }\n\n return { sql: rc, bindings: [] };\n }\n\n compileHaving(having: havingType[]): CompiledSql {\n let sql = '';\n let bindings: Parameter[] = [];\n\n for (const w of having) {\n sql += ' ' + w.joinCondition + ' ';\n if (w.negateCondition) {\n sql += 'not ';\n }\n const funcName = 'compileHaving' + toUpperFirst(w.type);\n // @ts-ignore\n const wh = this[funcName](w);\n sql += wh.sql;\n bindings = [...bindings, ...wh.bindings];\n }\n if (sql.startsWith(' and ')) {\n sql = 'having ' + sql.substring(' and '.length);\n } else if (sql.startsWith(' or ')) {\n sql = 'having ' + sql.substring(' or '.length);\n }\n return { sql, bindings };\n }\n\n compileHavingOperation(w: whereOp): CompiledSql {\n return {\n sql: `${w.column} ${w.operation} ${this.getVariablePlaceholder()}`,\n bindings: [w.value],\n };\n }\n\n compileHavingRaw(w: whereRaw): CompiledSql {\n return {\n sql: w.sql,\n bindings: w.bindings,\n };\n }\n}\n"],"mappings":"AAcA,SAAS,aAAa,KAAa;AACjC,SAAO,IAAI,UAAU,GAAG,CAAC,EAAE,YAAY,IAAI,IAAI,UAAU,CAAC;AAC5D;AACO,MAAe,aAAa;AAAA,EACjC,WAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM,OAA2B;AAC/B,QAAI,MAAM;AACV,QAAI,WAAwB,CAAC;AAE7B,eAAW,QAAQ,KAAK,UAAU;AAEhC,YAAM,WAAuB,YAAY,aAAa,IAAI;AAE1D,YAAM,IAAI,KAAK,QAAQ,EAAE,MAAM,MAAM,IAAI,CAAC;AAC1C,UAAI,CAAC,KAAK;AACR,cAAM,EAAE;AAAA,MACV,WAAW,EAAE,KAAK;AAChB,eAAO,MAAM,EAAE;AAAA,MACjB;AACA,iBAAW,CAAC,GAAG,UAAU,GAAG,EAAE,QAAQ;AAAA,IACxC;AACA,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,cAAc,SAAoC;AAChD,UAAM,KAAK,QACR,IAAI,CAAC,MAAM;AACV,aAAO;AAAA,IACT,CAAC,EACA,KAAK,IAAI;AAEZ,WAAO,EAAE,KAAK,YAAY,IAAI,UAAU,CAAC,EAAE;AAAA,EAC7C;AAAA,EAEA,aAAa,WAAgC;AAC3C,QAAI,KAAK;AACT,QAAI,UAAU,QAAQ;AACpB,WAAK,UAAU;AAAA,IACjB;AAEA,WAAO,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE;AAAA,EACjC;AAAA,EAEA,YAAY,OAAgC;AAC1C,QAAI,MAAM;AACV,QAAI,WAAwB,CAAC;AAE7B,eAAW,KAAK,OAAO;AACrB,aAAO,MAAM,EAAE,OAAO,WAAW,EAAE,QAAQ;AAE3C,YAAM,QAAQ,KAAK,aAAa,EAAE,UAAU;AAC5C,UAAI,MAAM,IAAI,WAAW,QAAQ,GAAG;AAClC,cAAM,MAAM,MAAM,IAAI,UAAU,SAAS,MAAM;AAAA,MACjD;AAEA,aAAO;AACP,aAAO,MAAM;AACb,aAAO;AAEP,iBAAW,CAAC,GAAG,UAAU,GAAG,MAAM,QAAQ;AAAA,IAC5C;AAEA,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,aAAa,QAAkC;AAC7C,QAAI,MAAM;AACV,QAAI,WAAwB,CAAC;AAE7B,eAAW,KAAK,QAAQ;AACtB,aAAO,MAAM,EAAE,gBAAgB;AAC/B,UAAI,EAAE,iBAAiB;AACrB,eAAO;AAAA,MACT;AACA,YAAM,WAAW,iBAAiB,aAAa,EAAE,IAAI;AAErD,YAAM,KAAK,KAAK,QAAQ,EAAE,CAAC;AAC3B,aAAO,GAAG;AACV,iBAAW,CAAC,GAAG,UAAU,GAAG,GAAG,QAAQ;AAAA,IACzC;AACA,QAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,YAAM,WAAW,IAAI,UAAU,QAAQ,MAAM;AAAA,IAC/C,WAAW,IAAI,WAAW,MAAM,GAAG;AACjC,YAAM,WAAW,IAAI,UAAU,OAAO,MAAM;AAAA,IAC9C;AACA,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,sBAAsB,GAAyB;AAC7C,WAAO;AAAA,MACL,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,SAAS,IAAI,KAAK,uBAAuB,CAAC;AAAA,MAChE,UAAU,CAAC,EAAE,KAAK;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,4BAA4B,GAA+B;AACzD,WAAO;AAAA,MACL,KAAK,GAAG,EAAE,OAAO,IAAI,EAAE,SAAS,IAAI,EAAE,OAAO;AAAA,MAC7C,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,eAAe,SAAgC;AAC7C,QAAI,KAAK;AACT,QAAI,QAAQ,QAAQ;AAClB,WAAK,cAAc,QAAQ,KAAK,IAAI;AAAA,IACtC;AAEA,WAAO,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE;AAAA,EACjC;AAAA,EAEA,aAAa,OAAmC;AAC9C,QAAI,KAAK;AACT,QAAI,UAAU,MAAM;AAClB,WAAK,WAAW;AAAA,IAClB;AAEA,WAAO,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE;AAAA,EACjC;AAAA,EAEA,cAAc,QAAoC;AAChD,QAAI,KAAK;AACT,QAAI,WAAW,MAAM;AACnB,WAAK,YAAY;AAAA,IACnB;AAEA,WAAO,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE;AAAA,EACjC;AAAA,EAIA,iBAAiB,GAA2B;AAC1C,WAAO;AAAA,MACL,KAAK,GAAG,EAAE,MAAM;AAAA,MAChB,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,cAAc,OAAc,MAA8C;AACxE,QAAI,MAAM,iBAAiB,MAAM,MAAM,QAAQ;AAC/C,UAAM,UAAoB,CAAC;AAC3B,UAAM,WAAwB,CAAC;AAC/B,UAAM,SAAmB,CAAC;AAE1B,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACzC,cAAQ,KAAK,CAAC;AACd,eAAS,KAAK,CAAC;AACf,aAAO,KAAK,KAAK,uBAAuB,CAAC;AAAA,IAC3C;AAEA,WAAO,QAAQ,KAAK,IAAI,IAAI,eAAe,SAAS;AAEpD,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAQA,cAAc,OAAc,MAA8C;AACxE,QAAI,MAAM,YAAY,MAAM,MAAM,QAAQ;AAC1C,UAAM,WAAwB,CAAC;AAE/B,UAAM,WAAW,CAAC;AAClB,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACzC,eAAS,KAAK,GAAG,CAAC,MAAM,KAAK,uBAAuB,CAAC,EAAE;AACvD,eAAS,KAAK,CAAC;AAAA,IACjB;AAEA,WAAO,SAAS,KAAK,IAAI;AAEzB,UAAM,aAAa,KAAK,aAAa,MAAM,MAAM,KAAK;AACtD,WAAO,MAAM,WAAW;AACxB,aAAS,KAAK,GAAG,WAAW,QAAQ;AAEpC,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,cAAc,OAA2B;AACvC,QAAI,MAAM,iBAAiB,MAAM,MAAM;AACvC,UAAM,aAAa,KAAK,aAAa,MAAM,MAAM,KAAK;AACtD,WAAO,MAAM,WAAW;AACxB,WAAO,EAAE,KAAK,UAAU,WAAW,SAAS;AAAA,EAC9C;AAAA,EAEA,cACE,OACA,MACA,gBACA,cACa;AACb,QAAI,MAAM,iBAAiB,MAAM,MAAM,QAAQ;AAC/C,UAAM,UAAoB,CAAC;AAC3B,UAAM,WAAwB,CAAC;AAC/B,UAAM,SAAmB,CAAC;AAE1B,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACzC,cAAQ,KAAK,CAAC;AACd,eAAS,KAAK,CAAC;AACf,aAAO,KAAK,KAAK,uBAAuB,CAAC;AAAA,IAC3C;AAEA,WAAO,QAAQ,KAAK,IAAI,IAAI,eAAe,SAAS;AAEpD,WAAO,mBAAmB,eAAe,KAAK,IAAI,IAAI;AACtD,UAAM,WAAW,CAAC;AAClB,eAAW,KAAK,cAAc;AAC5B,eAAS,KAAK,GAAG,CAAC,eAAe,CAAC,EAAE;AAAA,IACtC;AACA,WAAO,SAAS,KAAK,IAAI;AAEzB,UAAM,aAAa,KAAK,aAAa,MAAM,MAAM,KAAK;AACtD,WAAO,MAAM,WAAW;AACxB,aAAS,KAAK,GAAG,WAAW,QAAQ;AAEpC,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,eAAe,SAAgC;AAC7C,QAAI,KAAK;AACT,QAAI,QAAQ,QAAQ;AAClB,WAAK,cAAc,QAAQ,KAAK,IAAI;AAAA,IACtC;AAEA,WAAO,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE;AAAA,EACjC;AAAA,EAEA,cAAc,QAAmC;AAC/C,QAAI,MAAM;AACV,QAAI,WAAwB,CAAC;AAE7B,eAAW,KAAK,QAAQ;AACtB,aAAO,MAAM,EAAE,gBAAgB;AAC/B,UAAI,EAAE,iBAAiB;AACrB,eAAO;AAAA,MACT;AACA,YAAM,WAAW,kBAAkB,aAAa,EAAE,IAAI;AAEtD,YAAM,KAAK,KAAK,QAAQ,EAAE,CAAC;AAC3B,aAAO,GAAG;AACV,iBAAW,CAAC,GAAG,UAAU,GAAG,GAAG,QAAQ;AAAA,IACzC;AACA,QAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,YAAM,YAAY,IAAI,UAAU,QAAQ,MAAM;AAAA,IAChD,WAAW,IAAI,WAAW,MAAM,GAAG;AACjC,YAAM,YAAY,IAAI,UAAU,OAAO,MAAM;AAAA,IAC/C;AACA,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,uBAAuB,GAAyB;AAC9C,WAAO;AAAA,MACL,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,SAAS,IAAI,KAAK,uBAAuB,CAAC;AAAA,MAChE,UAAU,CAAC,EAAE,KAAK;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,iBAAiB,GAA0B;AACzC,WAAO;AAAA,MACL,KAAK,EAAE;AAAA,MACP,UAAU,EAAE;AAAA,IACd;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,4 @@
1
+ import './Blueprint.mjs';
2
+ export { S as Schema } from './Connection-Z5qLWvdu.mjs';
3
+ import './SchemaGrammar.mjs';
4
+ import './types-C_aDrXJN.mjs';
@@ -0,0 +1,4 @@
1
+ import './Blueprint.js';
2
+ export { S as Schema } from './Connection-DBxWn3YO.js';
3
+ import './SchemaGrammar.js';
4
+ import './types-C_aDrXJN.js';
package/dist/Schema.js ADDED
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Schema_exports = {};
20
+ __export(Schema_exports, {
21
+ Schema: () => Schema
22
+ });
23
+ module.exports = __toCommonJS(Schema_exports);
24
+ var import_Blueprint = require("./Blueprint");
25
+ var import_SchemaGrammar = require("./SchemaGrammar");
26
+ class Schema {
27
+ constructor(connection, grammar) {
28
+ this.connection = connection;
29
+ this.grammar = grammar;
30
+ }
31
+ async createTable(tableName, structMethod) {
32
+ const blueprint = new import_Blueprint.Blueprint();
33
+ blueprint.setTableName(tableName, false);
34
+ structMethod(blueprint);
35
+ const grammar = new import_SchemaGrammar.SchemaGrammar();
36
+ const sql = grammar.toSql(blueprint);
37
+ await this.connection?.runQuery({ sql, bindings: [] });
38
+ }
39
+ async dropTable(tableName) {
40
+ const grammar = new import_SchemaGrammar.SchemaGrammar();
41
+ await this.connection?.runQuery(grammar.compileDropTable(tableName));
42
+ }
43
+ async tables() {
44
+ const grammar = new import_SchemaGrammar.SchemaGrammar();
45
+ return await this.connection?.runQuery(grammar.compileTables());
46
+ }
47
+ async tableExists(table_name) {
48
+ const grammar = new import_SchemaGrammar.SchemaGrammar();
49
+ return (await this.connection?.runQuery(grammar.compileTableExists(table_name)))[0]["exists"];
50
+ }
51
+ async dropTableIfExists(tableName) {
52
+ if (await this.tableExists(tableName)) {
53
+ await this.dropTable(tableName);
54
+ }
55
+ return;
56
+ }
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ Schema
61
+ });
62
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Schema.ts"],"sourcesContent":["import { Blueprint } from './Blueprint';\nimport { Connection } from './Connection';\nimport { SchemaGrammar } from './SchemaGrammar';\n\nexport class Schema {\n constructor(\n private readonly connection: Connection | null,\n private readonly grammar: SchemaGrammar\n ) {}\n\n async createTable(tableName: string, structMethod: (blueprint: Blueprint) => void) {\n const blueprint = new Blueprint();\n blueprint.setTableName(tableName, false);\n structMethod(blueprint);\n\n const grammar = new SchemaGrammar();\n const sql = grammar.toSql(blueprint);\n await this.connection?.runQuery({ sql, bindings: [] });\n }\n\n async dropTable(tableName: string) {\n const grammar = new SchemaGrammar();\n await this.connection?.runQuery(grammar.compileDropTable(tableName));\n }\n\n async tables() {\n const grammar = new SchemaGrammar();\n return await this.connection?.runQuery(grammar.compileTables());\n }\n\n async tableExists(table_name: string): Promise<boolean> {\n const grammar = new SchemaGrammar();\n return (await this.connection?.runQuery(grammar.compileTableExists(table_name)))[0]['exists'];\n }\n\n async dropTableIfExists(tableName: string): Promise<void> {\n if (await this.tableExists(tableName)) {\n await this.dropTable(tableName);\n }\n\n return;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0B;AAE1B,2BAA8B;AAEvB,MAAM,OAAO;AAAA,EAClB,YACmB,YACA,SACjB;AAFiB;AACA;AAAA,EAChB;AAAA,EAEH,MAAM,YAAY,WAAmB,cAA8C;AACjF,UAAM,YAAY,IAAI,2BAAU;AAChC,cAAU,aAAa,WAAW,KAAK;AACvC,iBAAa,SAAS;AAEtB,UAAM,UAAU,IAAI,mCAAc;AAClC,UAAM,MAAM,QAAQ,MAAM,SAAS;AACnC,UAAM,KAAK,YAAY,SAAS,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,UAAU,WAAmB;AACjC,UAAM,UAAU,IAAI,mCAAc;AAClC,UAAM,KAAK,YAAY,SAAS,QAAQ,iBAAiB,SAAS,CAAC;AAAA,EACrE;AAAA,EAEA,MAAM,SAAS;AACb,UAAM,UAAU,IAAI,mCAAc;AAClC,WAAO,MAAM,KAAK,YAAY,SAAS,QAAQ,cAAc,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,YAAY,YAAsC;AACtD,UAAM,UAAU,IAAI,mCAAc;AAClC,YAAQ,MAAM,KAAK,YAAY,SAAS,QAAQ,mBAAmB,UAAU,CAAC,GAAG,CAAC,EAAE,QAAQ;AAAA,EAC9F;AAAA,EAEA,MAAM,kBAAkB,WAAkC;AACxD,QAAI,MAAM,KAAK,YAAY,SAAS,GAAG;AACrC,YAAM,KAAK,UAAU,SAAS;AAAA,IAChC;AAEA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,38 @@
1
+ import { Blueprint } from "./Blueprint";
2
+ import { SchemaGrammar } from "./SchemaGrammar";
3
+ class Schema {
4
+ constructor(connection, grammar) {
5
+ this.connection = connection;
6
+ this.grammar = grammar;
7
+ }
8
+ async createTable(tableName, structMethod) {
9
+ const blueprint = new Blueprint();
10
+ blueprint.setTableName(tableName, false);
11
+ structMethod(blueprint);
12
+ const grammar = new SchemaGrammar();
13
+ const sql = grammar.toSql(blueprint);
14
+ await this.connection?.runQuery({ sql, bindings: [] });
15
+ }
16
+ async dropTable(tableName) {
17
+ const grammar = new SchemaGrammar();
18
+ await this.connection?.runQuery(grammar.compileDropTable(tableName));
19
+ }
20
+ async tables() {
21
+ const grammar = new SchemaGrammar();
22
+ return await this.connection?.runQuery(grammar.compileTables());
23
+ }
24
+ async tableExists(table_name) {
25
+ const grammar = new SchemaGrammar();
26
+ return (await this.connection?.runQuery(grammar.compileTableExists(table_name)))[0]["exists"];
27
+ }
28
+ async dropTableIfExists(tableName) {
29
+ if (await this.tableExists(tableName)) {
30
+ await this.dropTable(tableName);
31
+ }
32
+ return;
33
+ }
34
+ }
35
+ export {
36
+ Schema
37
+ };
38
+ //# sourceMappingURL=Schema.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Schema.ts"],"sourcesContent":["import { Blueprint } from './Blueprint';\nimport { Connection } from './Connection';\nimport { SchemaGrammar } from './SchemaGrammar';\n\nexport class Schema {\n constructor(\n private readonly connection: Connection | null,\n private readonly grammar: SchemaGrammar\n ) {}\n\n async createTable(tableName: string, structMethod: (blueprint: Blueprint) => void) {\n const blueprint = new Blueprint();\n blueprint.setTableName(tableName, false);\n structMethod(blueprint);\n\n const grammar = new SchemaGrammar();\n const sql = grammar.toSql(blueprint);\n await this.connection?.runQuery({ sql, bindings: [] });\n }\n\n async dropTable(tableName: string) {\n const grammar = new SchemaGrammar();\n await this.connection?.runQuery(grammar.compileDropTable(tableName));\n }\n\n async tables() {\n const grammar = new SchemaGrammar();\n return await this.connection?.runQuery(grammar.compileTables());\n }\n\n async tableExists(table_name: string): Promise<boolean> {\n const grammar = new SchemaGrammar();\n return (await this.connection?.runQuery(grammar.compileTableExists(table_name)))[0]['exists'];\n }\n\n async dropTableIfExists(tableName: string): Promise<void> {\n if (await this.tableExists(tableName)) {\n await this.dropTable(tableName);\n }\n\n return;\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAE1B,SAAS,qBAAqB;AAEvB,MAAM,OAAO;AAAA,EAClB,YACmB,YACA,SACjB;AAFiB;AACA;AAAA,EAChB;AAAA,EAEH,MAAM,YAAY,WAAmB,cAA8C;AACjF,UAAM,YAAY,IAAI,UAAU;AAChC,cAAU,aAAa,WAAW,KAAK;AACvC,iBAAa,SAAS;AAEtB,UAAM,UAAU,IAAI,cAAc;AAClC,UAAM,MAAM,QAAQ,MAAM,SAAS;AACnC,UAAM,KAAK,YAAY,SAAS,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,UAAU,WAAmB;AACjC,UAAM,UAAU,IAAI,cAAc;AAClC,UAAM,KAAK,YAAY,SAAS,QAAQ,iBAAiB,SAAS,CAAC;AAAA,EACrE;AAAA,EAEA,MAAM,SAAS;AACb,UAAM,UAAU,IAAI,cAAc;AAClC,WAAO,MAAM,KAAK,YAAY,SAAS,QAAQ,cAAc,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,YAAY,YAAsC;AACtD,UAAM,UAAU,IAAI,cAAc;AAClC,YAAQ,MAAM,KAAK,YAAY,SAAS,QAAQ,mBAAmB,UAAU,CAAC,GAAG,CAAC,EAAE,QAAQ;AAAA,EAC9F;AAAA,EAEA,MAAM,kBAAkB,WAAkC;AACxD,QAAI,MAAM,KAAK,YAAY,SAAS,GAAG;AACrC,YAAM,KAAK,UAAU,SAAS;AAAA,IAChC;AAEA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,17 @@
1
+ import { Blueprint, Column } from './Blueprint.mjs';
2
+ import { P as Parameter, C as CompiledSql } from './types-C_aDrXJN.mjs';
3
+
4
+ declare class SchemaGrammar {
5
+ toSql(blueprint: Blueprint): string;
6
+ compileColumn(column: Column): string;
7
+ escape(value: Parameter): string;
8
+ compilePrimaryKeys(primaryKeys: string[]): string;
9
+ compileTables(schema?: string | string[] | undefined): CompiledSql;
10
+ compileTableExists(tableName: string, schema?: string): CompiledSql;
11
+ compileDropTable(tableName: string): CompiledSql;
12
+ protected compileSchemaWhereClause(schema: string | string[] | undefined, column: string): string;
13
+ protected quoteString(value: string | string[]): string;
14
+ protected doubleQuoteString(value: string | string[]): string;
15
+ }
16
+
17
+ export { SchemaGrammar };