typesql-cli 0.15.2 → 0.16.0-experimental.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 (40) hide show
  1. package/README.md +1 -1
  2. package/cli.js +20 -94
  3. package/cli.js.map +1 -1
  4. package/code-generator2.d.ts.map +1 -1
  5. package/code-generator2.js +287 -24
  6. package/code-generator2.js.map +1 -1
  7. package/describe-query.js +3 -3
  8. package/describe-query.js.map +1 -1
  9. package/drivers/libsql.d.ts +2 -2
  10. package/drivers/libsql.d.ts.map +1 -1
  11. package/drivers/libsql.js +2 -2
  12. package/drivers/libsql.js.map +1 -1
  13. package/drivers/postgres.d.ts +2 -3
  14. package/drivers/postgres.d.ts.map +1 -1
  15. package/drivers/postgres.js +1 -2
  16. package/drivers/postgres.js.map +1 -1
  17. package/package.json +1 -1
  18. package/postgres-query-analyzer/describe.d.ts.map +1 -1
  19. package/postgres-query-analyzer/describe.js +8 -3
  20. package/postgres-query-analyzer/describe.js.map +1 -1
  21. package/postgres-query-analyzer/parser.d.ts +2 -2
  22. package/postgres-query-analyzer/parser.d.ts.map +1 -1
  23. package/postgres-query-analyzer/parser.js +4 -4
  24. package/postgres-query-analyzer/parser.js.map +1 -1
  25. package/postgres-query-analyzer/traverse.d.ts +8 -1
  26. package/postgres-query-analyzer/traverse.d.ts.map +1 -1
  27. package/postgres-query-analyzer/traverse.js +231 -76
  28. package/postgres-query-analyzer/traverse.js.map +1 -1
  29. package/queryExectutor.d.ts +4 -3
  30. package/queryExectutor.d.ts.map +1 -1
  31. package/queryExectutor.js +48 -33
  32. package/queryExectutor.js.map +1 -1
  33. package/schema-info.d.ts +17 -0
  34. package/schema-info.d.ts.map +1 -0
  35. package/schema-info.js +142 -0
  36. package/schema-info.js.map +1 -0
  37. package/sqlite-query-analyzer/query-executor.d.ts +5 -5
  38. package/sqlite-query-analyzer/query-executor.d.ts.map +1 -1
  39. package/sqlite-query-analyzer/query-executor.js +20 -30
  40. package/sqlite-query-analyzer/query-executor.js.map +1 -1
package/README.md CHANGED
@@ -10,7 +10,7 @@ TypeSQL supports multiple SQL database backends:
10
10
 
11
11
  - [pg](https://www.npmjs.com/package/pg) - PostgreSQL client for node.js.
12
12
 
13
- ##### MySQL / MariaDB
13
+ ##### MySQL
14
14
 
15
15
  - [mysql2](https://www.npmjs.com/package/mysql2) - the standard driver for mysql in NodeJS
16
16
 
package/cli.js CHANGED
@@ -51,16 +51,13 @@ const node_path_1 = __importStar(require("node:path"));
51
51
  const chokidar_1 = __importDefault(require("chokidar"));
52
52
  const yargs_1 = __importDefault(require("yargs"));
53
53
  const code_generator_1 = require("./code-generator");
54
- const queryExectutor_1 = require("./queryExectutor");
55
54
  const sql_generator_1 = require("./sql-generator");
56
55
  const Either_1 = require("fp-ts/lib/Either");
57
56
  const code_block_writer_1 = __importDefault(require("code-block-writer"));
58
57
  const glob_1 = require("glob");
59
- const query_executor_1 = require("./sqlite-query-analyzer/query-executor");
60
- const libsql_1 = require("./drivers/libsql");
58
+ const schema_info_1 = require("./schema-info");
61
59
  const code_generator_2 = require("./sqlite-query-analyzer/code-generator");
62
60
  const code_generator2_1 = require("./code-generator2");
63
- const postgres_1 = require("./drivers/postgres");
64
61
  const lodash_uniqby_1 = __importDefault(require("lodash.uniqby"));
65
62
  const CRUD_FOLDER = 'crud';
66
63
  function parseArgs() {
@@ -157,27 +154,27 @@ function compile(watch, config) {
157
154
  return __awaiter(this, void 0, void 0, function* () {
158
155
  const { sqlDir, databaseUri, client: dialect, attach, loadExtensions, authToken } = config;
159
156
  validateDirectories(sqlDir);
160
- const databaseClientResult = yield createClient(databaseUri, dialect, attach, loadExtensions, authToken);
161
- if ((0, Either_1.isLeft)(databaseClientResult)) {
162
- console.error(`Error: ${databaseClientResult.left.description}.`);
157
+ const databaseClientResult = yield (0, schema_info_1.createClient)(databaseUri, dialect, attach, loadExtensions, authToken);
158
+ if (databaseClientResult.isErr()) {
159
+ console.error(`Error: ${databaseClientResult.error.description}.`);
163
160
  return;
164
161
  }
165
162
  const includeCrudTables = config.includeCrudTables || [];
166
- const databaseClient = databaseClientResult.right;
167
- const dbSchema = yield loadSchema(databaseClient);
168
- if ((0, Either_1.isLeft)(dbSchema)) {
169
- console.error(`Error: ${dbSchema.left.description}.`);
163
+ const databaseClient = databaseClientResult.value;
164
+ const dbSchema = yield (0, schema_info_1.loadSchema)(databaseClient);
165
+ if (dbSchema.isErr()) {
166
+ console.error(`Error: ${dbSchema.error.description}.`);
170
167
  return;
171
168
  }
172
- yield generateCrudTables(databaseClient, sqlDir, dbSchema.right, includeCrudTables);
169
+ yield generateCrudTables(databaseClient, sqlDir, dbSchema.value, includeCrudTables);
173
170
  const dirGlob = `${sqlDir}/**/*.sql`;
174
171
  const sqlFiles = (0, glob_1.globSync)(dirGlob);
175
- const filesGeneration = sqlFiles.map((sqlFile) => (0, code_generator_1.generateTsFile)(databaseClient, sqlFile, dbSchema.right, isCrudFile(sqlDir, sqlFile)));
172
+ const filesGeneration = sqlFiles.map((sqlFile) => (0, code_generator_1.generateTsFile)(databaseClient, sqlFile, dbSchema.value, isCrudFile(sqlDir, sqlFile)));
176
173
  yield Promise.all(filesGeneration);
177
174
  writeIndexFile(sqlDir, config);
178
175
  if (watch) {
179
176
  console.log('watching mode!');
180
- watchDirectories(databaseClient, sqlDir, dbSchema.right, config);
177
+ watchDirectories(databaseClient, sqlDir, dbSchema.value, config);
181
178
  }
182
179
  else {
183
180
  // databaseClient.client.closeConnection();
@@ -205,18 +202,18 @@ function generateIndexContent(tsFiles, config) {
205
202
  function writeSql(stmtType, tableName, queryName, config) {
206
203
  return __awaiter(this, void 0, void 0, function* () {
207
204
  const { sqlDir, databaseUri, client: dialect } = config;
208
- const clientResult = yield createClient(databaseUri, dialect);
209
- if ((0, Either_1.isLeft)(clientResult)) {
210
- console.error(clientResult.left.name);
205
+ const clientResult = yield (0, schema_info_1.createClient)(databaseUri, dialect);
206
+ if (clientResult.isErr()) {
207
+ console.error(clientResult.error.name);
211
208
  return false;
212
209
  }
213
- const client = clientResult.right;
214
- const columnsOption = yield loadTableSchema(client, tableName);
215
- if ((0, Either_1.isLeft)(columnsOption)) {
216
- console.error(columnsOption.left.description);
210
+ const client = clientResult.value;
211
+ const columnsOption = yield (0, schema_info_1.loadTableSchema)(client, tableName);
212
+ if (columnsOption.isErr()) {
213
+ console.error(columnsOption.error.description);
217
214
  return false;
218
215
  }
219
- const columns = columnsOption.right;
216
+ const columns = columnsOption.value;
220
217
  const filePath = `${sqlDir}/${queryName}`;
221
218
  const generatedOk = checkAndGenerateSql(client.type, filePath, stmtType, tableName, columns);
222
219
  return generatedOk;
@@ -287,84 +284,13 @@ function filterTables(allTables, includeCrudTables) {
287
284
  }
288
285
  function selectAllTables(client) {
289
286
  return __awaiter(this, void 0, void 0, function* () {
290
- const selectTablesResult = yield selectTables(client);
287
+ const selectTablesResult = yield (0, schema_info_1.selectTables)(client);
291
288
  if ((0, Either_1.isLeft)(selectTablesResult)) {
292
289
  return (0, Either_1.left)(`Error selecting table names: ${selectTablesResult.left.description}`);
293
290
  }
294
291
  return selectTablesResult;
295
292
  });
296
293
  }
297
- function createClient(databaseUri, dialect, attach, loadExtensions, authToken) {
298
- return __awaiter(this, void 0, void 0, function* () {
299
- switch (dialect) {
300
- case 'mysql2':
301
- return (0, queryExectutor_1.createMysqlClient)(databaseUri);
302
- case 'better-sqlite3':
303
- case 'bun:sqlite':
304
- return (0, query_executor_1.createSqliteClient)(dialect, databaseUri, attach || [], loadExtensions || []);
305
- case 'libsql':
306
- return (0, libsql_1.createLibSqlClient)(databaseUri, attach || [], loadExtensions || [], authToken || '');
307
- case 'd1':
308
- return (0, query_executor_1.createD1Client)(dialect, databaseUri, loadExtensions || []);
309
- case 'pg':
310
- return (0, postgres_1.createPostgresClient)(databaseUri);
311
- }
312
- });
313
- }
314
- function loadSchema(databaseClient) {
315
- return __awaiter(this, void 0, void 0, function* () {
316
- switch (databaseClient.type) {
317
- case 'mysql2':
318
- return (0, queryExectutor_1.loadMysqlSchema)(databaseClient.client, databaseClient.schema);
319
- case 'better-sqlite3':
320
- case 'libsql':
321
- case 'bun:sqlite':
322
- case 'd1':
323
- return (0, query_executor_1.loadDbSchema)(databaseClient.client);
324
- case 'pg':
325
- const postgresSchema = yield (0, postgres_1.loadDbSchema)(databaseClient.client);
326
- const columnSchema = postgresSchema.map(schema => schema.map(col => (0, postgres_1.mapToColumnSchema)(col)));
327
- if (columnSchema.isErr()) {
328
- const typesqlError = {
329
- description: columnSchema.error,
330
- name: columnSchema.error
331
- };
332
- return (0, Either_1.left)(typesqlError);
333
- }
334
- return (0, Either_1.right)(columnSchema.value);
335
- }
336
- });
337
- }
338
- function loadTableSchema(databaseClient, tableName) {
339
- return __awaiter(this, void 0, void 0, function* () {
340
- switch (databaseClient.type) {
341
- case 'mysql2':
342
- return (0, queryExectutor_1.loadMySqlTableSchema)(databaseClient.client, databaseClient.schema, tableName);
343
- case 'better-sqlite3':
344
- case 'libsql':
345
- case 'bun:sqlite':
346
- case 'd1':
347
- return yield (0, query_executor_1.loadDbSchema)(databaseClient.client);
348
- case 'pg':
349
- return (0, Either_1.right)([]);
350
- }
351
- });
352
- }
353
- function selectTables(databaseClient) {
354
- return __awaiter(this, void 0, void 0, function* () {
355
- switch (databaseClient.type) {
356
- case 'mysql2':
357
- return yield (0, queryExectutor_1.selectTablesFromSchema)(databaseClient.client);
358
- case 'better-sqlite3':
359
- case 'libsql':
360
- case 'bun:sqlite':
361
- case 'd1':
362
- return (0, query_executor_1.selectSqliteTablesFromSchema)(databaseClient.client);
363
- case 'pg':
364
- return (0, Either_1.right)([]);
365
- }
366
- });
367
- }
368
294
  //https://stackoverflow.com/a/45242825
369
295
  function isCrudFile(sqlDir, sqlFile) {
370
296
  const relative = node_path_1.default.relative(`${sqlDir}/${CRUD_FOLDER}`, sqlFile);
package/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"code-generator2.d.ts","sourceRoot":"","sources":["../../src/code-generator2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,SAAS,EAAE,SAAS,EAAa,iBAAiB,EAAyB,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhI,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIxE,OAAO,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAOjH;AAgWD,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAoD3G;AAgJD,wBAAgB,0CAA0C,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CAM/F"}
1
+ {"version":3,"file":"code-generator2.d.ts","sourceRoot":"","sources":["../../src/code-generator2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,SAAS,EAAE,SAAS,EAAa,iBAAiB,EAAyB,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhI,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIxE,OAAO,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AAOlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAOjH;AAwmBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAoD3G;AA+ID,wBAAgB,0CAA0C,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CAM/F"}
@@ -14,6 +14,7 @@ const describe_query_1 = require("./describe-query");
14
14
  const neverthrow_1 = require("neverthrow");
15
15
  const code_generator_2 = require("./sqlite-query-analyzer/code-generator");
16
16
  const ts_nested_descriptor_1 = require("./ts-nested-descriptor");
17
+ const node_os_1 = require("node:os");
17
18
  function generateCode(client, sql, queryName) {
18
19
  if (isEmptySql(sql)) {
19
20
  return (0, neverthrow_1.okAsync)('');
@@ -43,11 +44,17 @@ function generateTsCode(sqlOld, queryName, schemaDef, client, isCrud = false) {
43
44
  const resultTypeName = `${capitalizedName}Result`;
44
45
  const paramsTypeName = `${capitalizedName}Params`;
45
46
  const orderByTypeName = `${capitalizedName}OrderBy`;
47
+ const dynamicParamsTypeName = `${capitalizedName}DynamicParams`;
48
+ const selectColumnsTypeName = `${capitalizedName}Select`;
49
+ const whereTypeName = `${capitalizedName}Where`;
46
50
  const tsDescriptor = createTsDescriptor(schemaDef);
47
51
  const uniqueParams = (0, code_generator_1.removeDuplicatedParameters2)(tsDescriptor.parameters);
48
52
  const generateOrderBy = tsDescriptor.orderByColumns != null && tsDescriptor.orderByColumns.length > 0;
49
53
  const codeWriter = getCodeWriter(client);
50
54
  codeWriter.writeImports(writer);
55
+ if (tsDescriptor.dynamicQuery2) {
56
+ writer.writeLine(`import { EOL } from 'os';`);
57
+ }
51
58
  const uniqueDataParams = (0, code_generator_1.removeDuplicatedParameters2)(tsDescriptor.data || []);
52
59
  if (uniqueDataParams.length > 0) {
53
60
  writer.blankLine();
@@ -59,6 +66,258 @@ function generateTsCode(sqlOld, queryName, schemaDef, client, isCrud = false) {
59
66
  }
60
67
  writer.blankLine();
61
68
  writeResultType(writer, resultTypeName, tsDescriptor.columns);
69
+ const dynamicQueryInfo = tsDescriptor.dynamicQuery2;
70
+ if (dynamicQueryInfo) {
71
+ writer.blankLine();
72
+ writer.write(`export type ${dynamicParamsTypeName} = `).block(() => {
73
+ writer.writeLine(`select?: ${selectColumnsTypeName};`);
74
+ if (tsDescriptor.parameters.length > 0) {
75
+ writer.writeLine(`params: ${paramsTypeName};`);
76
+ }
77
+ writer.writeLine(`where?: ${whereTypeName}[];`);
78
+ // if (orderByField) {
79
+ // writer.writeLine(`${orderByField};`);
80
+ // }
81
+ });
82
+ writer.blankLine();
83
+ writer.write(`export type ${selectColumnsTypeName} =`).block(() => {
84
+ tsDescriptor.columns.forEach((tsField) => {
85
+ writer.writeLine(`${tsField.name}?: boolean;`);
86
+ });
87
+ });
88
+ writer.blankLine();
89
+ writer.write('const selectFragments = ').inlineBlock(() => {
90
+ dynamicQueryInfo.select.forEach((fragment, index) => {
91
+ const field = tsDescriptor.columns[index].name;
92
+ writer.writeLine(`${field}: \`${fragment.fragmentWitoutAlias}\`,`);
93
+ });
94
+ });
95
+ writer.write(' as const;');
96
+ writer.blankLine();
97
+ writer.writeLine(`const NumericOperatorList = ['=', '<>', '>', '<', '>=', '<='] as const;`);
98
+ writer.writeLine('type NumericOperator = typeof NumericOperatorList[number];');
99
+ if ((0, code_generator_1.hasStringColumn)(tsDescriptor.columns)) {
100
+ writer.writeLine(`type StringOperator = '=' | '<>' | '>' | '<' | '>=' | '<=' | 'LIKE';`);
101
+ }
102
+ writer.writeLine(`type SetOperator = 'IN' | 'NOT IN';`);
103
+ writer.writeLine(`type BetweenOperator = 'BETWEEN';`);
104
+ writer.blankLine();
105
+ writer.write(`export type ${whereTypeName} =`).indent(() => {
106
+ for (const col of tsDescriptor.columns) {
107
+ writer.writeLine(`| ['${col.name}', ${(0, code_generator_1.getOperator)(col.tsType)}, ${col.tsType} | null]`);
108
+ writer.writeLine(`| ['${col.name}', SetOperator, ${col.tsType}[]]`);
109
+ writer.writeLine(`| ['${col.name}', BetweenOperator, ${col.tsType} | null, ${col.tsType} | null]`);
110
+ }
111
+ });
112
+ writer.blankLine();
113
+ let functionArguments = 'client: pg.Client | pg.Pool';
114
+ // if (params.data.length > 0) {
115
+ // functionParams += `, data: ${dataType}`;
116
+ // }
117
+ functionArguments += `, params?: ${dynamicParamsTypeName}`;
118
+ writer.writeLine('let currentIndex: number;');
119
+ writer.write(`export async function ${camelCaseName}(${functionArguments}): Promise<${resultTypeName}[]>`).block(() => {
120
+ writer.writeLine(`currentIndex = ${tsDescriptor.parameters.length};`);
121
+ writer.writeLine('const where = whereConditionsToObject(params?.where);');
122
+ // if (orderByField != null) {
123
+ // writer.writeLine('const orderBy = orderByToObject(params.orderBy);');
124
+ // }
125
+ writer.writeLine('const paramsValues: any = [];');
126
+ if (dynamicQueryInfo.with.length > 0) {
127
+ writer.writeLine(`let withClause = '';`);
128
+ dynamicQueryInfo.with.forEach((withFragment) => {
129
+ var _a;
130
+ const selectConditions = withFragment.dependOnFields.map((fieldIndex) => `params.select.${tsDescriptor.columns[fieldIndex].name}`);
131
+ if (selectConditions.length > 0) {
132
+ selectConditions.unshift('params?.select == null');
133
+ }
134
+ const whereConditions = withFragment.dependOnFields.map((fieldIndex) => `where.${tsDescriptor.columns[fieldIndex].name} != null`);
135
+ const orderByConditions = ((_a = withFragment.dependOnOrderBy) === null || _a === void 0 ? void 0 : _a.map((orderBy) => `orderBy['${orderBy}'] != null`)) || [];
136
+ const allConditions = [...selectConditions, ...whereConditions, ...orderByConditions];
137
+ const paramValues = withFragment.parameters.map((paramIndex) => {
138
+ const param = tsDescriptor.parameters[paramIndex];
139
+ return `params?.params?.${param.name}`;
140
+ });
141
+ if (allConditions.length > 0) {
142
+ writer.write(`if (${allConditions.join(`${node_os_1.EOL}\t|| `)})`).block(() => {
143
+ writer.writeLine(`if (withClause !== '') withClause += ',' + EOL;`);
144
+ writer.write(`withClause += \`${withFragment.fragment}\`;`);
145
+ paramValues.forEach((paramValues) => {
146
+ writer.writeLine(`paramsValues.push(${paramValues});`);
147
+ });
148
+ });
149
+ }
150
+ else {
151
+ writer.write(`withClause.push(\`${withFragment.fragment}\`);`);
152
+ paramValues.forEach((paramValues) => {
153
+ writer.writeLine(`paramsValues.push(${paramValues});`);
154
+ });
155
+ }
156
+ });
157
+ }
158
+ writer.writeLine(`let sql = 'SELECT';`);
159
+ if (dynamicQueryInfo.with.length > 0) {
160
+ writer.write('if (withClause)').block(() => {
161
+ writer.writeLine(`sql = 'WITH' + EOL + withClause + EOL + sql;`);
162
+ });
163
+ }
164
+ dynamicQueryInfo.select.forEach((select, index) => {
165
+ writer.write(`if (params?.select == null || params.select.${tsDescriptor.columns[index].name})`).block(() => {
166
+ writer.writeLine(`sql = appendSelect(sql, \`${select.fragment}\`);`);
167
+ select.parameters.forEach((param) => {
168
+ writer.writeLine(`paramsValues.push(params?.params?.${param} ?? null);`);
169
+ });
170
+ });
171
+ });
172
+ dynamicQueryInfo.from.forEach((from) => {
173
+ var _a;
174
+ const selectConditions = from.dependOnFields.map((fieldIndex) => `params.select.${tsDescriptor.columns[fieldIndex].name}`);
175
+ if (selectConditions.length > 0) {
176
+ selectConditions.unshift('params?.select == null');
177
+ }
178
+ const whereConditions = from.dependOnFields.map((fieldIndex) => `where.${tsDescriptor.columns[fieldIndex].name} != null`);
179
+ const orderByConditions = ((_a = from.dependOnOrderBy) === null || _a === void 0 ? void 0 : _a.map((orderBy) => `orderBy['${orderBy}'] != null`)) || [];
180
+ const allConditions = [...selectConditions, ...whereConditions, ...orderByConditions];
181
+ const paramValues = from.parameters.map((paramIndex) => {
182
+ const param = tsDescriptor.parameters[paramIndex];
183
+ return `params?.params?.${param.name}`;
184
+ });
185
+ if (allConditions.length > 0) {
186
+ writer.write(`if (${allConditions.join(`${node_os_1.EOL}\t|| `)})`).block(() => {
187
+ writer.write(`sql += EOL + \`${from.fragment}\`;`);
188
+ paramValues.forEach((paramValues) => {
189
+ writer.writeLine(`paramsValues.push(${paramValues});`);
190
+ });
191
+ });
192
+ }
193
+ else {
194
+ writer.writeLine(`sql += EOL + \`${from.fragment}\`;`);
195
+ paramValues.forEach((paramValues) => {
196
+ writer.writeLine(`paramsValues.push(${paramValues});`);
197
+ });
198
+ }
199
+ });
200
+ writer.writeLine('sql += EOL + `WHERE 1 = 1`;');
201
+ dynamicQueryInfo.where.forEach((fragment) => {
202
+ const paramValues = fragment.parameters.map((paramIndex) => {
203
+ const param = tsDescriptor.parameters[paramIndex];
204
+ return `params?.params?.${param.name} ?? null`;
205
+ });
206
+ writer.writeLine(`sql += EOL + \`${fragment.fragment}\`;`);
207
+ paramValues.forEach((paramValues) => {
208
+ writer.writeLine(`paramsValues.push(${paramValues});`);
209
+ });
210
+ });
211
+ writer.write('params?.where?.forEach(condition => ').inlineBlock(() => {
212
+ writer.writeLine('const where = whereCondition(condition);');
213
+ dynamicQueryInfo.select.forEach((select, index) => {
214
+ if (select.parameters.length > 0) {
215
+ writer.write(`if (condition[0] == '${tsDescriptor.columns[index].name}')`).block(() => {
216
+ select.parameters.forEach((param) => {
217
+ writer.writeLine(`paramsValues.push(params?.params?.${param} ?? null);`);
218
+ });
219
+ });
220
+ }
221
+ });
222
+ writer.write('if (where?.hasValue)').block(() => {
223
+ writer.writeLine(`sql += EOL + 'AND ' + where.sql;`);
224
+ writer.write('paramsValues.push(...where.values);');
225
+ });
226
+ });
227
+ writer.write(');').newLine();
228
+ writer.write(`return client.query({ text: sql, rowMode: 'array', values: paramsValues })`).newLine();
229
+ writer.indent().write(`.then(res => res.rows.map(row => mapArrayTo${resultTypeName}(row, params?.select)));`);
230
+ });
231
+ writer.blankLine();
232
+ writer.write(`function mapArrayTo${resultTypeName}(data: any, select?: ${selectColumnsTypeName})`).block(() => {
233
+ writer.writeLine(`const result = {} as ${resultTypeName};`);
234
+ writer.writeLine('let rowIndex = -1;');
235
+ tsDescriptor.columns.forEach((tsField) => {
236
+ writer.write(`if (select == null || select.${tsField.name})`).block(() => {
237
+ writer.writeLine('rowIndex++;');
238
+ writer.writeLine(`result.${tsField.name} = ${toDriver('data[rowIndex]', tsField)};`);
239
+ });
240
+ });
241
+ writer.write('return result;');
242
+ });
243
+ writer.blankLine();
244
+ writer.write('function appendSelect(sql: string, selectField: string)').block(() => {
245
+ writer.write(`if (sql.toUpperCase().endsWith('SELECT'))`).block(() => {
246
+ writer.writeLine('return sql + EOL + selectField;');
247
+ });
248
+ writer.write('else').block(() => {
249
+ writer.writeLine(`return sql + ', ' + EOL + selectField;`);
250
+ });
251
+ });
252
+ writer.blankLine();
253
+ writer.write(`function whereConditionsToObject(whereConditions?: ${whereTypeName}[])`).block(() => {
254
+ writer.writeLine('const obj = {} as any;');
255
+ writer.write('whereConditions?.forEach(condition => ').inlineBlock(() => {
256
+ writer.writeLine('obj[condition[0]] = true;');
257
+ });
258
+ writer.write(');');
259
+ writer.writeLine('return obj;');
260
+ });
261
+ // if (orderByField != null) {
262
+ // writer.blankLine();
263
+ // writer.write(`function orderByToObject(orderBy: ${dynamicParamsTypeName}['orderBy'])`).block(() => {
264
+ // writer.writeLine('const obj = {} as any;');
265
+ // writer.write('orderBy?.forEach(order => ').inlineBlock(() => {
266
+ // writer.writeLine('obj[order[0]] = true;');
267
+ // });
268
+ // writer.write(');');
269
+ // writer.writeLine('return obj;');
270
+ // });
271
+ // }
272
+ writer.blankLine();
273
+ writer.write('type WhereConditionResult = ').block(() => {
274
+ writer.writeLine('sql: string;');
275
+ writer.writeLine('hasValue: boolean;');
276
+ writer.writeLine('values: any[];');
277
+ });
278
+ writer.blankLine();
279
+ writer.write(`function whereCondition(condition: ${whereTypeName}): WhereConditionResult | null `).block(() => {
280
+ writer.blankLine();
281
+ writer.writeLine('const selectFragment = selectFragments[condition[0]];');
282
+ writer.writeLine('const operator = condition[1];');
283
+ writer.blankLine();
284
+ if ((0, code_generator_1.hasStringColumn)(tsDescriptor.columns)) {
285
+ writer.write(`if (operator == 'LIKE') `).block(() => {
286
+ writer.write('return ').block(() => {
287
+ writer.writeLine("sql: `${selectFragment} LIKE ${placeholder()}`,");
288
+ writer.writeLine('hasValue: condition[2] != null,');
289
+ writer.writeLine('values: [condition[2]]');
290
+ });
291
+ });
292
+ }
293
+ writer.write(`if (operator == 'BETWEEN') `).block(() => {
294
+ writer.write('return ').block(() => {
295
+ writer.writeLine('sql: `${selectFragment} BETWEEN ${placeholder()} AND ${placeholder()}`,');
296
+ writer.writeLine('hasValue: condition[2] != null && condition[3] != null,');
297
+ writer.writeLine('values: [condition[2], condition[3]]');
298
+ });
299
+ });
300
+ writer.write(`if (operator == 'IN' || operator == 'NOT IN') `).block(() => {
301
+ writer.write('return ').block(() => {
302
+ writer.writeLine("sql: `${selectFragment} ${operator} (${condition[2]?.map(_ => placeholder()).join(', ')})`,");
303
+ writer.writeLine('hasValue: condition[2] != null && condition[2].length > 0,');
304
+ writer.writeLine('values: condition[2]');
305
+ });
306
+ });
307
+ writer.write('if (NumericOperatorList.includes(operator)) ').block(() => {
308
+ writer.write('return ').block(() => {
309
+ writer.writeLine('sql: `${selectFragment} ${operator} ${placeholder()}`,');
310
+ writer.writeLine('hasValue: condition[2] != null,');
311
+ writer.writeLine('values: [condition[2]]');
312
+ });
313
+ });
314
+ writer.writeLine('return null;');
315
+ });
316
+ writer.blankLine();
317
+ writer.write('function placeholder(): string').block(() => {
318
+ writer.writeLine('return `$${++currentIndex}`;');
319
+ });
320
+ }
62
321
  if (tsDescriptor.nestedDescriptor2) {
63
322
  const relations = tsDescriptor.nestedDescriptor2;
64
323
  relations.forEach((relation) => {
@@ -78,23 +337,25 @@ function generateTsCode(sqlOld, queryName, schemaDef, client, isCrud = false) {
78
337
  });
79
338
  });
80
339
  }
81
- writer.blankLine();
82
- const execFunctionParams = {
83
- sql,
84
- queryType: tsDescriptor.queryType,
85
- multipleRowsResult: tsDescriptor.multipleRowsResult,
86
- functionName: queryName,
87
- paramsType: paramsTypeName,
88
- dataType: dataTypeName,
89
- returnType: resultTypeName,
90
- columns: tsDescriptor.columns,
91
- parameters: tsDescriptor.parameters,
92
- data: tsDescriptor.data || [],
93
- returning: schemaDef.returning || false,
94
- generateNested: tsDescriptor.nestedDescriptor2 != null,
95
- nestedType: tsDescriptor.nestedDescriptor2 ? tsDescriptor.nestedDescriptor2[0].name : ''
96
- };
97
- codeWriter.writeExecFunction(writer, execFunctionParams);
340
+ if (!dynamicQueryInfo) {
341
+ writer.blankLine();
342
+ const execFunctionParams = {
343
+ sql,
344
+ queryType: tsDescriptor.queryType,
345
+ multipleRowsResult: tsDescriptor.multipleRowsResult,
346
+ functionName: queryName,
347
+ paramsType: paramsTypeName,
348
+ dataType: dataTypeName,
349
+ returnType: resultTypeName,
350
+ columns: tsDescriptor.columns,
351
+ parameters: tsDescriptor.parameters,
352
+ data: tsDescriptor.data || [],
353
+ returning: schemaDef.returning || false,
354
+ generateNested: tsDescriptor.nestedDescriptor2 != null,
355
+ nestedType: tsDescriptor.nestedDescriptor2 ? tsDescriptor.nestedDescriptor2[0].name : ''
356
+ };
357
+ codeWriter.writeExecFunction(writer, execFunctionParams);
358
+ }
98
359
  if (tsDescriptor.nestedDescriptor2) {
99
360
  const relations = tsDescriptor.nestedDescriptor2;
100
361
  relations.forEach((relation, index) => {
@@ -166,13 +427,16 @@ function createTsDescriptor(schemaDef) {
166
427
  });
167
428
  tsDescriptor.nestedDescriptor2 = nestedDescriptor2;
168
429
  }
430
+ if (schemaDef.dynamicSqlQuery2) {
431
+ tsDescriptor.dynamicQuery2 = schemaDef.dynamicSqlQuery2;
432
+ }
169
433
  return tsDescriptor;
170
434
  }
171
- function mapColumnInfoToTsFieldDescriptor(col) {
435
+ function mapColumnInfoToTsFieldDescriptor(col, dynamicQuery) {
172
436
  const tsField = {
173
437
  name: col.columnName,
174
438
  tsType: (0, postgres_1.mapColumnType)(col.type),
175
- notNull: col.notNull
439
+ notNull: dynamicQuery ? false : col.notNull
176
440
  };
177
441
  return tsField;
178
442
  }
@@ -288,7 +552,7 @@ const postgresCodeWriter = {
288
552
  };
289
553
  function getColumnsForQuery(schemaDef) {
290
554
  if (schemaDef.queryType === 'Select' || schemaDef.returning) {
291
- const columns = schemaDef.columns.map(col => mapColumnInfoToTsFieldDescriptor(col));
555
+ const columns = schemaDef.columns.map(col => mapColumnInfoToTsFieldDescriptor(col, schemaDef.dynamicSqlQuery2 != null));
292
556
  const escapedColumnsNames = (0, code_generator_1.renameInvalidNames)(schemaDef.columns.map((col) => col.columnName));
293
557
  return columns.map((col, index) => (Object.assign(Object.assign({}, col), { name: escapedColumnsNames[index] })));
294
558
  }
@@ -438,20 +702,19 @@ function writeCrudUpdate(writer, crudParamters) {
438
702
  writer.write(`export async function ${queryName}(client: pg.Client | pg.Pool, data: ${dataTypeName}, params: ${paramsTypeName}): Promise<${resultTypeName} | null>`).block(() => {
439
703
  writer.writeLine(`let sql = 'UPDATE ${tableName} SET';`);
440
704
  writer.writeLine('const values: any[] = [];');
441
- writer.writeLine('let update = false;');
442
705
  nonKeys.forEach((col, index) => {
443
706
  writer.write(`if (data.${col} !== undefined)`).block(() => {
707
+ writer.conditionalWriteLine(index > 0, `if (values.length > 0) sql += ',';`);
444
708
  writer.writeLine(`sql += ' ${col} = $${index + 1}';`);
445
709
  writer.writeLine(`values.push(data.${col});`);
446
- writer.writeLine('update = true;');
447
710
  });
448
711
  });
449
712
  const keyName = keys[0];
450
713
  writer.writeLine(`sql += ' WHERE ${keyName} = $${nonKeys.length + 1} RETURNING *';`);
451
714
  writer.writeLine(`values.push(params.${keyName});`);
452
- writer.write('if (update)').block(() => {
715
+ writer.write('if (values.length > 0)').block(() => {
453
716
  writer.writeLine('return client.query({ text: sql, values })');
454
- writer.indent().write(`.then(res => mapArrayTo${resultTypeName}(res));`);
717
+ writer.indent().write(`.then(res => res.rows.length > 0 ? mapArrayTo${resultTypeName}(res) : null);`);
455
718
  });
456
719
  writer.writeLine('return null;');
457
720
  });