@carbonorm/carbonnode 3.3.9 → 3.4.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.
- package/dist/api/executors/SqlExecutor.d.ts +16 -22
- package/dist/api/orm/queries/DeleteQueryBuilder.d.ts +6 -3
- package/dist/index.cjs.js +136 -176
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +136 -176
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/scripts/assets/handlebars/C6.ts.handlebars +1 -1
- package/src/api/executors/SqlExecutor.ts +56 -70
- package/src/api/handlers/ExpressHandler.ts +23 -3
- package/src/api/orm/queries/DeleteQueryBuilder.ts +14 -15
|
@@ -2,21 +2,13 @@ import { OrmGenerics } from "../types/ormGenerics";
|
|
|
2
2
|
import { DetermineResponseDataType } from "../types/ormInterfaces";
|
|
3
3
|
import { ResultSetHeader } from 'mysql2/promise';
|
|
4
4
|
import { Executor } from "./Executor";
|
|
5
|
+
type QueryType = 'select' | 'update' | 'delete';
|
|
5
6
|
export declare class SqlExecutor<G extends OrmGenerics> extends Executor<G> {
|
|
6
7
|
execute(): Promise<DetermineResponseDataType<G['RequestMethod'], G['RestTableInterface']>>;
|
|
7
8
|
private withConnection;
|
|
8
9
|
serialize: (row: any) => {
|
|
9
10
|
[k: string]: unknown;
|
|
10
11
|
};
|
|
11
|
-
select(table: G['RestShortTableName'], primary: string | undefined, args: any): Promise<{
|
|
12
|
-
rest: {
|
|
13
|
-
[k: string]: unknown;
|
|
14
|
-
}[];
|
|
15
|
-
sql: {
|
|
16
|
-
sql: any;
|
|
17
|
-
values: any;
|
|
18
|
-
};
|
|
19
|
-
}>;
|
|
20
12
|
insert(table: G['RestShortTableName'], data: Record<string, any>): Promise<{
|
|
21
13
|
rest: ResultSetHeader;
|
|
22
14
|
sql: {
|
|
@@ -24,22 +16,24 @@ export declare class SqlExecutor<G extends OrmGenerics> extends Executor<G> {
|
|
|
24
16
|
placeholders: string;
|
|
25
17
|
};
|
|
26
18
|
}>;
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
formatSQLWithParams(sql: string, params: any[] | {
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
}): string;
|
|
22
|
+
private formatValue;
|
|
23
|
+
runQuery(type: QueryType, table: G['RestShortTableName'], args: any): Promise<{
|
|
24
|
+
rest: any;
|
|
29
25
|
sql: {
|
|
30
|
-
sql:
|
|
31
|
-
values: any
|
|
26
|
+
sql: any;
|
|
27
|
+
values: any;
|
|
32
28
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
affected?: undefined;
|
|
30
|
+
} | {
|
|
31
|
+
affected: any;
|
|
32
|
+
rest: never[];
|
|
36
33
|
sql: {
|
|
37
|
-
sql:
|
|
38
|
-
|
|
34
|
+
sql: any;
|
|
35
|
+
values: any;
|
|
39
36
|
};
|
|
40
37
|
}>;
|
|
41
|
-
formatSQLWithParams(sql: string, params: any[] | {
|
|
42
|
-
[key: string]: any;
|
|
43
|
-
}): string;
|
|
44
|
-
private formatValue;
|
|
45
38
|
}
|
|
39
|
+
export {};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { OrmGenerics } from "../../types/ormGenerics";
|
|
2
|
-
import { PaginationBuilder } from "../builders/PaginationBuilder";
|
|
3
2
|
import { SqlBuilderResult } from "../utils/sqlUtils";
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { JoinBuilder } from "../builders/JoinBuilder";
|
|
4
|
+
export declare class DeleteQueryBuilder<G extends OrmGenerics> extends JoinBuilder<G> {
|
|
5
|
+
build(table: string, args: {
|
|
6
|
+
JOIN?: any;
|
|
7
|
+
WHERE?: any;
|
|
8
|
+
}): SqlBuilderResult;
|
|
6
9
|
}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1368,6 +1368,25 @@ var JoinBuilder = /** @class */ (function (_super) {
|
|
|
1368
1368
|
return JoinBuilder;
|
|
1369
1369
|
}(ConditionBuilder));
|
|
1370
1370
|
|
|
1371
|
+
var DeleteQueryBuilder = /** @class */ (function (_super) {
|
|
1372
|
+
tslib.__extends(DeleteQueryBuilder, _super);
|
|
1373
|
+
function DeleteQueryBuilder() {
|
|
1374
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
1375
|
+
}
|
|
1376
|
+
DeleteQueryBuilder.prototype.build = function (table, args) {
|
|
1377
|
+
var params = this.useNamedParams ? {} : [];
|
|
1378
|
+
var sql = "DELETE `".concat(table, "` FROM `").concat(table, "`");
|
|
1379
|
+
if (args.JOIN) {
|
|
1380
|
+
sql += this.buildJoinClauses(args.JOIN, params);
|
|
1381
|
+
}
|
|
1382
|
+
if (args.WHERE) {
|
|
1383
|
+
sql += this.buildWhereClause(args.WHERE, params);
|
|
1384
|
+
}
|
|
1385
|
+
return { sql: sql, params: params };
|
|
1386
|
+
};
|
|
1387
|
+
return DeleteQueryBuilder;
|
|
1388
|
+
}(JoinBuilder));
|
|
1389
|
+
|
|
1371
1390
|
var PaginationBuilder = /** @class */ (function (_super) {
|
|
1372
1391
|
tslib.__extends(PaginationBuilder, _super);
|
|
1373
1392
|
function PaginationBuilder() {
|
|
@@ -1464,6 +1483,42 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1464
1483
|
return SelectQueryBuilder;
|
|
1465
1484
|
}(PaginationBuilder));
|
|
1466
1485
|
|
|
1486
|
+
var UpdateQueryBuilder = /** @class */ (function (_super) {
|
|
1487
|
+
tslib.__extends(UpdateQueryBuilder, _super);
|
|
1488
|
+
function UpdateQueryBuilder() {
|
|
1489
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
1490
|
+
}
|
|
1491
|
+
UpdateQueryBuilder.prototype.build = function (table, data, args) {
|
|
1492
|
+
if (args === void 0) { args = {}; }
|
|
1493
|
+
var params = this.useNamedParams ? {} : [];
|
|
1494
|
+
var sql = "UPDATE `".concat(table, "`");
|
|
1495
|
+
if (args.JOIN) {
|
|
1496
|
+
sql += this.buildJoinClauses(args.JOIN, params);
|
|
1497
|
+
}
|
|
1498
|
+
var setClauses = Object.entries(data).map(function (_a) {
|
|
1499
|
+
var col = _a[0], val = _a[1];
|
|
1500
|
+
if (Array.isArray(params)) {
|
|
1501
|
+
params.push(val);
|
|
1502
|
+
return "`".concat(col, "` = ?");
|
|
1503
|
+
}
|
|
1504
|
+
else {
|
|
1505
|
+
var key = "param".concat(Object.keys(params).length);
|
|
1506
|
+
params[key] = val;
|
|
1507
|
+
return "`".concat(col, "` = :").concat(key);
|
|
1508
|
+
}
|
|
1509
|
+
});
|
|
1510
|
+
sql += " SET ".concat(setClauses.join(', '));
|
|
1511
|
+
if (args.WHERE) {
|
|
1512
|
+
sql += this.buildWhereClause(args.WHERE, params);
|
|
1513
|
+
}
|
|
1514
|
+
if (args.PAGINATION) {
|
|
1515
|
+
sql += this.buildPaginationClause(args.PAGINATION);
|
|
1516
|
+
}
|
|
1517
|
+
return { sql: sql, params: params };
|
|
1518
|
+
};
|
|
1519
|
+
return UpdateQueryBuilder;
|
|
1520
|
+
}(PaginationBuilder));
|
|
1521
|
+
|
|
1467
1522
|
var SqlExecutor = /** @class */ (function (_super) {
|
|
1468
1523
|
tslib.__extends(SqlExecutor, _super);
|
|
1469
1524
|
function SqlExecutor() {
|
|
@@ -1492,7 +1547,7 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
1492
1547
|
case 'DELETE': return [3 /*break*/, 7];
|
|
1493
1548
|
}
|
|
1494
1549
|
return [3 /*break*/, 9];
|
|
1495
|
-
case 1: return [4 /*yield*/, this.select
|
|
1550
|
+
case 1: return [4 /*yield*/, this.runQuery('select', TABLE_NAME, this.request)];
|
|
1496
1551
|
case 2:
|
|
1497
1552
|
rest = _b.sent();
|
|
1498
1553
|
console.log("[SQL EXECUTOR] \u2705 GET result:", rest);
|
|
@@ -1503,13 +1558,12 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
1503
1558
|
console.log("[SQL EXECUTOR] \u2705 POST result:", result);
|
|
1504
1559
|
created = { rest: result, created: true };
|
|
1505
1560
|
return [2 /*return*/, created];
|
|
1506
|
-
case 5: return [4 /*yield*/, this.update
|
|
1561
|
+
case 5: return [4 /*yield*/, this.runQuery('update', TABLE_NAME, this.request)];
|
|
1507
1562
|
case 6:
|
|
1508
1563
|
result = _b.sent();
|
|
1509
|
-
console.log("[SQL EXECUTOR] \u2705 PUT result:", result);
|
|
1510
1564
|
updated = tslib.__assign(tslib.__assign({}, result), { updated: true, rowCount: result.rest.affectedRows });
|
|
1511
1565
|
return [2 /*return*/, updated];
|
|
1512
|
-
case 7: return [4 /*yield*/, this.delete
|
|
1566
|
+
case 7: return [4 /*yield*/, this.runQuery('delete', TABLE_NAME, this.request)];
|
|
1513
1567
|
case 8:
|
|
1514
1568
|
result = _b.sent();
|
|
1515
1569
|
console.log("[SQL EXECUTOR] \u2705 DELETE result:", result);
|
|
@@ -1549,42 +1603,6 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
1549
1603
|
});
|
|
1550
1604
|
});
|
|
1551
1605
|
};
|
|
1552
|
-
SqlExecutor.prototype.select = function (table, primary, args) {
|
|
1553
|
-
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
1554
|
-
var QueryResult, formatted, toUnnamed, _a, sql, values;
|
|
1555
|
-
var _this = this;
|
|
1556
|
-
return tslib.__generator(this, function (_b) {
|
|
1557
|
-
switch (_b.label) {
|
|
1558
|
-
case 0:
|
|
1559
|
-
QueryResult = (new SelectQueryBuilder(this.config, this.request)).build(table, args, primary);
|
|
1560
|
-
console.log("[SQL EXECUTOR] \uD83E\uDDE0 Generated SELECT SQL:", QueryResult);
|
|
1561
|
-
formatted = this.formatSQLWithParams(QueryResult.sql, QueryResult.params);
|
|
1562
|
-
console.log("[SQL EXECUTOR] \uD83E\uDDE0 Formatted SELECT SQL:", formatted);
|
|
1563
|
-
toUnnamed = namedPlaceholders();
|
|
1564
|
-
_a = toUnnamed(QueryResult.sql, QueryResult.params), sql = _a[0], values = _a[1];
|
|
1565
|
-
return [4 /*yield*/, this.withConnection(function (conn) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
1566
|
-
var rows;
|
|
1567
|
-
return tslib.__generator(this, function (_a) {
|
|
1568
|
-
switch (_a.label) {
|
|
1569
|
-
case 0: return [4 /*yield*/, conn.query(sql, values)];
|
|
1570
|
-
case 1:
|
|
1571
|
-
rows = (_a.sent())[0];
|
|
1572
|
-
console.log("[SQL EXECUTOR] \uD83D\uDCE6 Rows fetched:", rows);
|
|
1573
|
-
return [2 /*return*/, {
|
|
1574
|
-
rest: rows.map(this.serialize),
|
|
1575
|
-
sql: {
|
|
1576
|
-
sql: sql,
|
|
1577
|
-
values: values
|
|
1578
|
-
}
|
|
1579
|
-
}];
|
|
1580
|
-
}
|
|
1581
|
-
});
|
|
1582
|
-
}); })];
|
|
1583
|
-
case 1: return [2 /*return*/, _b.sent()];
|
|
1584
|
-
}
|
|
1585
|
-
});
|
|
1586
|
-
});
|
|
1587
|
-
};
|
|
1588
1606
|
SqlExecutor.prototype.insert = function (table, data) {
|
|
1589
1607
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
1590
1608
|
var keys, values, placeholders, sql;
|
|
@@ -1620,79 +1638,6 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
1620
1638
|
});
|
|
1621
1639
|
});
|
|
1622
1640
|
};
|
|
1623
|
-
SqlExecutor.prototype.update = function (table, primary, data) {
|
|
1624
|
-
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
1625
|
-
var keys, values, updates, sql;
|
|
1626
|
-
var _this = this;
|
|
1627
|
-
return tslib.__generator(this, function (_a) {
|
|
1628
|
-
switch (_a.label) {
|
|
1629
|
-
case 0:
|
|
1630
|
-
if (!(primary === null || primary === void 0 ? void 0 : primary.length))
|
|
1631
|
-
throw new Error('Primary key is required for update');
|
|
1632
|
-
keys = Object.keys(data);
|
|
1633
|
-
values = keys.map(function (k) { return data[k]; });
|
|
1634
|
-
updates = keys.map(function (k) { return "`".concat(k, "` = ?"); }).join(', ');
|
|
1635
|
-
sql = "UPDATE `".concat(table, "`\n SET ").concat(updates, "\n WHERE `").concat(primary[0], "` = ?");
|
|
1636
|
-
values.push(data[primary[0]]);
|
|
1637
|
-
console.log("[SQL EXECUTOR] \uD83E\uDDE0 Generated UPDATE SQL:", sql);
|
|
1638
|
-
console.log("[SQL EXECUTOR] \uD83D\uDD22 Values:", values);
|
|
1639
|
-
return [4 /*yield*/, this.withConnection(function (conn) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
1640
|
-
var result;
|
|
1641
|
-
return tslib.__generator(this, function (_a) {
|
|
1642
|
-
switch (_a.label) {
|
|
1643
|
-
case 0: return [4 /*yield*/, conn.execute(sql, values)];
|
|
1644
|
-
case 1:
|
|
1645
|
-
result = (_a.sent())[0];
|
|
1646
|
-
return [2 /*return*/, {
|
|
1647
|
-
rest: result,
|
|
1648
|
-
sql: {
|
|
1649
|
-
sql: sql,
|
|
1650
|
-
values: values
|
|
1651
|
-
}
|
|
1652
|
-
}];
|
|
1653
|
-
}
|
|
1654
|
-
});
|
|
1655
|
-
}); })];
|
|
1656
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
1657
|
-
}
|
|
1658
|
-
});
|
|
1659
|
-
});
|
|
1660
|
-
};
|
|
1661
|
-
SqlExecutor.prototype.delete = function (table, primary, args) {
|
|
1662
|
-
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
1663
|
-
var key, sql;
|
|
1664
|
-
var _this = this;
|
|
1665
|
-
return tslib.__generator(this, function (_a) {
|
|
1666
|
-
switch (_a.label) {
|
|
1667
|
-
case 0:
|
|
1668
|
-
key = primary === null || primary === void 0 ? void 0 : primary[0];
|
|
1669
|
-
if (!key || !(args === null || args === void 0 ? void 0 : args[key]))
|
|
1670
|
-
throw new Error('Primary key and value required for delete');
|
|
1671
|
-
sql = "DELETE\n FROM `".concat(table, "`\n WHERE `").concat(key, "` = ?");
|
|
1672
|
-
console.log("[SQL EXECUTOR] \uD83E\uDDE0 Generated DELETE SQL:", sql);
|
|
1673
|
-
console.log("[SQL EXECUTOR] \uD83D\uDD22 Value:", args[key]);
|
|
1674
|
-
return [4 /*yield*/, this.withConnection(function (conn) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
1675
|
-
var result;
|
|
1676
|
-
return tslib.__generator(this, function (_a) {
|
|
1677
|
-
switch (_a.label) {
|
|
1678
|
-
case 0: return [4 /*yield*/, conn.execute(sql, [args[key]])];
|
|
1679
|
-
case 1:
|
|
1680
|
-
result = (_a.sent())[0];
|
|
1681
|
-
return [2 /*return*/, {
|
|
1682
|
-
rest: result,
|
|
1683
|
-
sql: {
|
|
1684
|
-
sql: sql,
|
|
1685
|
-
args: args
|
|
1686
|
-
}
|
|
1687
|
-
}];
|
|
1688
|
-
}
|
|
1689
|
-
});
|
|
1690
|
-
}); })];
|
|
1691
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
1692
|
-
}
|
|
1693
|
-
});
|
|
1694
|
-
});
|
|
1695
|
-
};
|
|
1696
1641
|
SqlExecutor.prototype.formatSQLWithParams = function (sql, params) {
|
|
1697
1642
|
var _this = this;
|
|
1698
1643
|
if (Array.isArray(params)) {
|
|
@@ -1724,6 +1669,62 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
1724
1669
|
return "'".concat(val.toISOString().slice(0, 19).replace('T', ' '), "'");
|
|
1725
1670
|
return "'".concat(JSON.stringify(val), "'");
|
|
1726
1671
|
};
|
|
1672
|
+
SqlExecutor.prototype.runQuery = function (type, table, args) {
|
|
1673
|
+
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
1674
|
+
var builder, QueryResult, formatted, toUnnamed, _a, sql, values;
|
|
1675
|
+
var _this = this;
|
|
1676
|
+
return tslib.__generator(this, function (_b) {
|
|
1677
|
+
switch (_b.label) {
|
|
1678
|
+
case 0:
|
|
1679
|
+
switch (type) {
|
|
1680
|
+
case 'select':
|
|
1681
|
+
builder = new SelectQueryBuilder(this.config, this.request);
|
|
1682
|
+
break;
|
|
1683
|
+
case 'update':
|
|
1684
|
+
builder = new UpdateQueryBuilder(this.config, this.request);
|
|
1685
|
+
break;
|
|
1686
|
+
case 'delete':
|
|
1687
|
+
builder = new DeleteQueryBuilder(this.config, this.request);
|
|
1688
|
+
break;
|
|
1689
|
+
default:
|
|
1690
|
+
throw new Error("Unsupported query type: ".concat(type));
|
|
1691
|
+
}
|
|
1692
|
+
QueryResult = builder.build(table, args);
|
|
1693
|
+
console.log("[SQL EXECUTOR] \uD83E\uDDE0 Generated ".concat(type.toUpperCase(), " SQL:"), QueryResult);
|
|
1694
|
+
formatted = this.formatSQLWithParams(QueryResult.sql, QueryResult.params);
|
|
1695
|
+
console.log("[SQL EXECUTOR] \uD83E\uDDE0 Formatted ".concat(type.toUpperCase(), " SQL:"), formatted);
|
|
1696
|
+
toUnnamed = namedPlaceholders();
|
|
1697
|
+
_a = toUnnamed(QueryResult.sql, QueryResult.params), sql = _a[0], values = _a[1];
|
|
1698
|
+
return [4 /*yield*/, this.withConnection(function (conn) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
1699
|
+
var result;
|
|
1700
|
+
return tslib.__generator(this, function (_a) {
|
|
1701
|
+
switch (_a.label) {
|
|
1702
|
+
case 0: return [4 /*yield*/, conn.query(sql, values)];
|
|
1703
|
+
case 1:
|
|
1704
|
+
result = (_a.sent())[0];
|
|
1705
|
+
if (type === 'select') {
|
|
1706
|
+
console.log("[SQL EXECUTOR] \uD83D\uDCE6 Rows fetched:", result);
|
|
1707
|
+
return [2 /*return*/, {
|
|
1708
|
+
rest: result.map(this.serialize),
|
|
1709
|
+
sql: { sql: sql, values: values }
|
|
1710
|
+
}];
|
|
1711
|
+
}
|
|
1712
|
+
else {
|
|
1713
|
+
console.log("[SQL EXECUTOR] \u270F\uFE0F Rows affected:", result.affectedRows);
|
|
1714
|
+
return [2 /*return*/, {
|
|
1715
|
+
affected: result.affectedRows,
|
|
1716
|
+
rest: [],
|
|
1717
|
+
sql: { sql: sql, values: values }
|
|
1718
|
+
}];
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
});
|
|
1722
|
+
}); })];
|
|
1723
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
1724
|
+
}
|
|
1725
|
+
});
|
|
1726
|
+
});
|
|
1727
|
+
};
|
|
1727
1728
|
return SqlExecutor;
|
|
1728
1729
|
}(Executor));
|
|
1729
1730
|
|
|
@@ -1738,7 +1739,7 @@ function ExpressHandler(_a) {
|
|
|
1738
1739
|
var _this = this;
|
|
1739
1740
|
var C6 = _a.C6, mysqlPool = _a.mysqlPool;
|
|
1740
1741
|
return function (req, res, next) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
1741
|
-
var method, table, primary, payload, response, err_1;
|
|
1742
|
+
var method, table, primary, payload, primaryKeys, primaryKeyName, response, err_1;
|
|
1742
1743
|
return tslib.__generator(this, function (_a) {
|
|
1743
1744
|
switch (_a.label) {
|
|
1744
1745
|
case 0:
|
|
@@ -1751,18 +1752,36 @@ function ExpressHandler(_a) {
|
|
|
1751
1752
|
res.status(400).json({ error: "Invalid table: ".concat(table) });
|
|
1752
1753
|
return [2 /*return*/];
|
|
1753
1754
|
}
|
|
1755
|
+
primaryKeys = C6.TABLES[table].PRIMARY;
|
|
1756
|
+
if (primary && primaryKeys.length !== 1) {
|
|
1757
|
+
if (primaryKeys.length > 1) {
|
|
1758
|
+
res.status(400).json({ error: "Table ".concat(table, " has multiple primary keys. Cannot implicitly determine key.") });
|
|
1759
|
+
return [2 /*return*/];
|
|
1760
|
+
}
|
|
1761
|
+
res.status(400).json({
|
|
1762
|
+
error: "Table ".concat(table, " has no primary keys. Please specify one.")
|
|
1763
|
+
});
|
|
1764
|
+
return [2 /*return*/];
|
|
1765
|
+
}
|
|
1766
|
+
primaryKeyName = primaryKeys[0];
|
|
1754
1767
|
// 👇 Call restRequest for the resolved method
|
|
1755
1768
|
// TODO - add primary conditionally based on method signature
|
|
1756
1769
|
switch (method) {
|
|
1757
1770
|
case 'GET':
|
|
1758
1771
|
if (primary) {
|
|
1759
|
-
payload[
|
|
1772
|
+
payload[C6C.WHERE][primaryKeyName] = primary;
|
|
1760
1773
|
}
|
|
1761
1774
|
break;
|
|
1762
|
-
case 'POST':
|
|
1763
1775
|
case 'PUT':
|
|
1764
1776
|
case 'DELETE':
|
|
1765
|
-
|
|
1777
|
+
if (primary) {
|
|
1778
|
+
payload[C6C.WHERE][primaryKeyName] = primary;
|
|
1779
|
+
}
|
|
1780
|
+
else {
|
|
1781
|
+
res.status(400).json({ error: "Invalid request: ".concat(method, " requires a primary key.") });
|
|
1782
|
+
}
|
|
1783
|
+
break;
|
|
1784
|
+
case 'POST':
|
|
1766
1785
|
break;
|
|
1767
1786
|
default:
|
|
1768
1787
|
res.status(405).json({ error: "Method ".concat(method, " not allowed") });
|
|
@@ -1809,65 +1828,6 @@ var distSphere = function (fromCol, toCol, fromAlias, toAlias) {
|
|
|
1809
1828
|
return [C6C.ST_DISTANCE_SPHERE, F(fromCol, fromAlias), F(toCol, toAlias)];
|
|
1810
1829
|
};
|
|
1811
1830
|
|
|
1812
|
-
var DeleteQueryBuilder = /** @class */ (function (_super) {
|
|
1813
|
-
tslib.__extends(DeleteQueryBuilder, _super);
|
|
1814
|
-
function DeleteQueryBuilder() {
|
|
1815
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
1816
|
-
}
|
|
1817
|
-
DeleteQueryBuilder.prototype.build = function (table, args) {
|
|
1818
|
-
if (args === void 0) { args = {}; }
|
|
1819
|
-
var params = this.useNamedParams ? {} : [];
|
|
1820
|
-
var sql = args.JOIN ? "DELETE ".concat(table, "\n FROM `").concat(table, "`") : "DELETE\n FROM `".concat(table, "`");
|
|
1821
|
-
if (args.JOIN) {
|
|
1822
|
-
sql += this.buildJoinClauses(args.JOIN, params);
|
|
1823
|
-
}
|
|
1824
|
-
if (args.WHERE) {
|
|
1825
|
-
sql += this.buildWhereClause(args.WHERE, params);
|
|
1826
|
-
}
|
|
1827
|
-
if (args.PAGINATION) {
|
|
1828
|
-
sql += this.buildPaginationClause(args.PAGINATION);
|
|
1829
|
-
}
|
|
1830
|
-
return { sql: sql, params: params };
|
|
1831
|
-
};
|
|
1832
|
-
return DeleteQueryBuilder;
|
|
1833
|
-
}(PaginationBuilder));
|
|
1834
|
-
|
|
1835
|
-
var UpdateQueryBuilder = /** @class */ (function (_super) {
|
|
1836
|
-
tslib.__extends(UpdateQueryBuilder, _super);
|
|
1837
|
-
function UpdateQueryBuilder() {
|
|
1838
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
1839
|
-
}
|
|
1840
|
-
UpdateQueryBuilder.prototype.build = function (table, data, args) {
|
|
1841
|
-
if (args === void 0) { args = {}; }
|
|
1842
|
-
var params = this.useNamedParams ? {} : [];
|
|
1843
|
-
var sql = "UPDATE `".concat(table, "`");
|
|
1844
|
-
if (args.JOIN) {
|
|
1845
|
-
sql += this.buildJoinClauses(args.JOIN, params);
|
|
1846
|
-
}
|
|
1847
|
-
var setClauses = Object.entries(data).map(function (_a) {
|
|
1848
|
-
var col = _a[0], val = _a[1];
|
|
1849
|
-
if (Array.isArray(params)) {
|
|
1850
|
-
params.push(val);
|
|
1851
|
-
return "`".concat(col, "` = ?");
|
|
1852
|
-
}
|
|
1853
|
-
else {
|
|
1854
|
-
var key = "param".concat(Object.keys(params).length);
|
|
1855
|
-
params[key] = val;
|
|
1856
|
-
return "`".concat(col, "` = :").concat(key);
|
|
1857
|
-
}
|
|
1858
|
-
});
|
|
1859
|
-
sql += " SET ".concat(setClauses.join(', '));
|
|
1860
|
-
if (args.WHERE) {
|
|
1861
|
-
sql += this.buildWhereClause(args.WHERE, params);
|
|
1862
|
-
}
|
|
1863
|
-
if (args.PAGINATION) {
|
|
1864
|
-
sql += this.buildPaginationClause(args.PAGINATION);
|
|
1865
|
-
}
|
|
1866
|
-
return { sql: sql, params: params };
|
|
1867
|
-
};
|
|
1868
|
-
return UpdateQueryBuilder;
|
|
1869
|
-
}(PaginationBuilder));
|
|
1870
|
-
|
|
1871
1831
|
function determineRuntimeJsType(mysqlType) {
|
|
1872
1832
|
var base = mysqlType.toLowerCase().split('(')[0];
|
|
1873
1833
|
if ([
|