tina4-nodejs 3.13.85 → 3.13.86
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/CLAUDE.md +37 -31
- package/package.json +22 -5
- package/packages/cli/dist/bin.js +97 -91
- package/packages/core/dist/index.js +97 -91
- package/packages/core/public/js/tina4-dev-admin.min.js +90 -87
- package/packages/core/src/session.ts +2 -2
- package/packages/core/src/sessionHandlers/databaseHandler.ts +5 -6
- package/packages/frond/dist/index.js +11 -5
- package/packages/frond/src/engine.ts +27 -5
- package/packages/orm/dist/index.js +97 -91
- package/packages/orm/src/adapters/firebird.ts +11 -11
- package/packages/orm/src/adapters/mongodb.ts +13 -13
- package/packages/orm/src/adapters/mssql.ts +14 -14
- package/packages/orm/src/adapters/mysql.ts +14 -14
- package/packages/orm/src/adapters/odbc.ts +15 -15
- package/packages/orm/src/adapters/postgres.ts +17 -17
- package/packages/orm/src/adapters/sqlite.ts +14 -14
- package/packages/orm/src/autoCrud.ts +1 -1
- package/packages/orm/src/cachedDatabase.ts +1 -1
- package/packages/orm/src/database.ts +2 -2
- package/packages/orm/src/types.ts +4 -4
package/packages/cli/dist/bin.js
CHANGED
|
@@ -1182,7 +1182,7 @@ var init_sqlite = __esm({
|
|
|
1182
1182
|
this.db.exec("ROLLBACK");
|
|
1183
1183
|
throw e;
|
|
1184
1184
|
}
|
|
1185
|
-
return { totalAffected,
|
|
1185
|
+
return { totalAffected, lastId };
|
|
1186
1186
|
}
|
|
1187
1187
|
query(sql, params) {
|
|
1188
1188
|
const stmt = this.db.prepare(sql);
|
|
@@ -1208,13 +1208,13 @@ var init_sqlite = __esm({
|
|
|
1208
1208
|
}
|
|
1209
1209
|
insert(table2, data) {
|
|
1210
1210
|
if (Array.isArray(data)) {
|
|
1211
|
-
if (data.length === 0) return { success: true,
|
|
1211
|
+
if (data.length === 0) return { success: true, affectedRows: 0 };
|
|
1212
1212
|
const keys2 = Object.keys(data[0]);
|
|
1213
1213
|
const placeholders2 = keys2.map(() => "?").join(", ");
|
|
1214
1214
|
const sql2 = `INSERT INTO "${table2}" ("${keys2.join('", "')}") VALUES (${placeholders2})`;
|
|
1215
1215
|
const paramsList = data.map((row) => keys2.map((k) => row[k]));
|
|
1216
1216
|
const result = this.executeMany(sql2, paramsList);
|
|
1217
|
-
return { success: true,
|
|
1217
|
+
return { success: true, affectedRows: result.totalAffected, lastId: result.lastId };
|
|
1218
1218
|
}
|
|
1219
1219
|
const keys = Object.keys(data);
|
|
1220
1220
|
const placeholders = keys.map(() => "?").join(", ");
|
|
@@ -1223,9 +1223,9 @@ var init_sqlite = __esm({
|
|
|
1223
1223
|
try {
|
|
1224
1224
|
const result = this.db.prepare(sql).run(...toSqlParams(values));
|
|
1225
1225
|
this._lastInsertId = result.lastInsertRowid;
|
|
1226
|
-
return { success: true,
|
|
1226
|
+
return { success: true, affectedRows: Number(result.changes), lastId: result.lastInsertRowid };
|
|
1227
1227
|
} catch (e) {
|
|
1228
|
-
return { success: false,
|
|
1228
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1229
1229
|
}
|
|
1230
1230
|
}
|
|
1231
1231
|
update(table2, data, filter, params) {
|
|
@@ -1235,9 +1235,9 @@ var init_sqlite = __esm({
|
|
|
1235
1235
|
const values = [...Object.values(data), ...Object.values(filter)];
|
|
1236
1236
|
try {
|
|
1237
1237
|
const result = this.db.prepare(sql).run(...toSqlParams(values));
|
|
1238
|
-
return { success: true,
|
|
1238
|
+
return { success: true, affectedRows: Number(result.changes) };
|
|
1239
1239
|
} catch (e) {
|
|
1240
|
-
return { success: false,
|
|
1240
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1241
1241
|
}
|
|
1242
1242
|
}
|
|
1243
1243
|
delete(table2, filter, params) {
|
|
@@ -1245,17 +1245,17 @@ var init_sqlite = __esm({
|
|
|
1245
1245
|
let totalAffected = 0;
|
|
1246
1246
|
for (const row of filter) {
|
|
1247
1247
|
const result = this.delete(table2, row);
|
|
1248
|
-
totalAffected += result.
|
|
1248
|
+
totalAffected += result.affectedRows;
|
|
1249
1249
|
}
|
|
1250
|
-
return { success: true,
|
|
1250
|
+
return { success: true, affectedRows: totalAffected };
|
|
1251
1251
|
}
|
|
1252
1252
|
if (typeof filter === "string") {
|
|
1253
1253
|
const sql2 = filter ? `DELETE FROM "${table2}" WHERE ${filter}` : `DELETE FROM "${table2}"`;
|
|
1254
1254
|
try {
|
|
1255
1255
|
const result = this.db.prepare(sql2).run(...toSqlParams(params ?? []));
|
|
1256
|
-
return { success: true,
|
|
1256
|
+
return { success: true, affectedRows: Number(result.changes) };
|
|
1257
1257
|
} catch (e) {
|
|
1258
|
-
return { success: false,
|
|
1258
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1259
1259
|
}
|
|
1260
1260
|
}
|
|
1261
1261
|
const whereClauses = Object.keys(filter).map((k) => `"${k}" = ?`).join(" AND ");
|
|
@@ -1263,9 +1263,9 @@ var init_sqlite = __esm({
|
|
|
1263
1263
|
const values = Object.values(filter);
|
|
1264
1264
|
try {
|
|
1265
1265
|
const result = this.db.prepare(sql).run(...toSqlParams(values));
|
|
1266
|
-
return { success: true,
|
|
1266
|
+
return { success: true, affectedRows: Number(result.changes) };
|
|
1267
1267
|
} catch (e) {
|
|
1268
|
-
return { success: false,
|
|
1268
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1269
1269
|
}
|
|
1270
1270
|
}
|
|
1271
1271
|
_inTransaction = false;
|
|
@@ -1506,7 +1506,7 @@ var init_postgres = __esm({
|
|
|
1506
1506
|
}
|
|
1507
1507
|
/**
|
|
1508
1508
|
* Normalise an `id` column value (typed `unknown` because pg row values are
|
|
1509
|
-
* `unknown`) into the shape `_lastInsertId` / `DatabaseResult.
|
|
1509
|
+
* `unknown`) into the shape `_lastInsertId` / `DatabaseResult.lastId`
|
|
1510
1510
|
* expect. At runtime PG returns numeric PKs as number/bigint (the int8/numeric
|
|
1511
1511
|
* type parsers above coerce them to Number); a numeric string is coerced to a
|
|
1512
1512
|
* number so the SERIAL path always returns the integer id.
|
|
@@ -1541,8 +1541,8 @@ var init_postgres = __esm({
|
|
|
1541
1541
|
for (const params of paramsList) {
|
|
1542
1542
|
const result = await this.executeAsync(sql, params);
|
|
1543
1543
|
totalAffected++;
|
|
1544
|
-
if (result && typeof result === "object" && "
|
|
1545
|
-
lastId = result.
|
|
1544
|
+
if (result && typeof result === "object" && "lastId" in result) {
|
|
1545
|
+
lastId = result.lastId;
|
|
1546
1546
|
}
|
|
1547
1547
|
}
|
|
1548
1548
|
if (owns) await this.commitAsync();
|
|
@@ -1555,7 +1555,7 @@ var init_postgres = __esm({
|
|
|
1555
1555
|
}
|
|
1556
1556
|
throw e;
|
|
1557
1557
|
}
|
|
1558
|
-
return { totalAffected,
|
|
1558
|
+
return { totalAffected, lastId };
|
|
1559
1559
|
}
|
|
1560
1560
|
/** Async execute for real usage. */
|
|
1561
1561
|
async executeAsync(sql, params) {
|
|
@@ -1603,17 +1603,17 @@ var init_postgres = __esm({
|
|
|
1603
1603
|
async insertAsync(table2, data) {
|
|
1604
1604
|
this.ensureConnected();
|
|
1605
1605
|
if (Array.isArray(data)) {
|
|
1606
|
-
if (data.length === 0) return { success: true,
|
|
1606
|
+
if (data.length === 0) return { success: true, affectedRows: 0 };
|
|
1607
1607
|
const keys2 = Object.keys(data[0]);
|
|
1608
1608
|
const placeholders2 = keys2.map(() => "?").join(", ");
|
|
1609
1609
|
const sql2 = `INSERT INTO "${table2}" ("${keys2.join('", "')}") VALUES (${placeholders2})`;
|
|
1610
1610
|
const paramsList = data.map((row) => keys2.map((k) => row[k]));
|
|
1611
1611
|
try {
|
|
1612
1612
|
const result = await this.executeManyAsync(sql2, paramsList);
|
|
1613
|
-
if (result.
|
|
1614
|
-
return { success: true,
|
|
1613
|
+
if (result.lastId !== void 0) this._lastInsertId = result.lastId;
|
|
1614
|
+
return { success: true, affectedRows: result.totalAffected, lastId: result.lastId };
|
|
1615
1615
|
} catch (e) {
|
|
1616
|
-
return { success: false,
|
|
1616
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1617
1617
|
}
|
|
1618
1618
|
}
|
|
1619
1619
|
const keys = Object.keys(data);
|
|
@@ -1627,11 +1627,11 @@ var init_postgres = __esm({
|
|
|
1627
1627
|
if (id !== null) this._lastInsertId = id;
|
|
1628
1628
|
return {
|
|
1629
1629
|
success: true,
|
|
1630
|
-
|
|
1631
|
-
|
|
1630
|
+
affectedRows: result.rowCount ?? 1,
|
|
1631
|
+
lastId: id ?? void 0
|
|
1632
1632
|
};
|
|
1633
1633
|
} catch (e) {
|
|
1634
|
-
return { success: false,
|
|
1634
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1635
1635
|
}
|
|
1636
1636
|
}
|
|
1637
1637
|
update(table2, data, filter, params) {
|
|
@@ -1648,9 +1648,9 @@ var init_postgres = __esm({
|
|
|
1648
1648
|
const values = [...Object.values(data), ...Object.values(filter)];
|
|
1649
1649
|
try {
|
|
1650
1650
|
const result = await this.client.query(sql, values);
|
|
1651
|
-
return { success: true,
|
|
1651
|
+
return { success: true, affectedRows: result.rowCount ?? 0 };
|
|
1652
1652
|
} catch (e) {
|
|
1653
|
-
return { success: false,
|
|
1653
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1654
1654
|
}
|
|
1655
1655
|
}
|
|
1656
1656
|
delete(table2, filter, params) {
|
|
@@ -1665,9 +1665,9 @@ var init_postgres = __esm({
|
|
|
1665
1665
|
const values = Object.values(filter);
|
|
1666
1666
|
try {
|
|
1667
1667
|
const result = await this.client.query(sql, values);
|
|
1668
|
-
return { success: true,
|
|
1668
|
+
return { success: true, affectedRows: result.rowCount ?? 0 };
|
|
1669
1669
|
} catch (e) {
|
|
1670
|
-
return { success: false,
|
|
1670
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1671
1671
|
}
|
|
1672
1672
|
}
|
|
1673
1673
|
startTransaction() {
|
|
@@ -1901,7 +1901,7 @@ var init_mysql = __esm({
|
|
|
1901
1901
|
}
|
|
1902
1902
|
throw e;
|
|
1903
1903
|
}
|
|
1904
|
-
return { totalAffected,
|
|
1904
|
+
return { totalAffected, lastId };
|
|
1905
1905
|
}
|
|
1906
1906
|
async executeAsync(sql, params) {
|
|
1907
1907
|
this.ensureConnected();
|
|
@@ -1947,17 +1947,17 @@ var init_mysql = __esm({
|
|
|
1947
1947
|
async insertAsync(table2, data) {
|
|
1948
1948
|
this.ensureConnected();
|
|
1949
1949
|
if (Array.isArray(data)) {
|
|
1950
|
-
if (data.length === 0) return { success: true,
|
|
1950
|
+
if (data.length === 0) return { success: true, affectedRows: 0 };
|
|
1951
1951
|
const keys2 = Object.keys(data[0]);
|
|
1952
1952
|
const placeholders2 = keys2.map(() => "?").join(", ");
|
|
1953
1953
|
const sql2 = `INSERT INTO \`${table2}\` (\`${keys2.join("`, `")}\`) VALUES (${placeholders2})`;
|
|
1954
1954
|
const paramsList = data.map((row) => keys2.map((k) => row[k]));
|
|
1955
1955
|
try {
|
|
1956
1956
|
const result = await this.executeManyAsync(sql2, paramsList);
|
|
1957
|
-
if (result.
|
|
1958
|
-
return { success: true,
|
|
1957
|
+
if (result.lastId !== void 0) this._lastInsertId = result.lastId;
|
|
1958
|
+
return { success: true, affectedRows: result.totalAffected, lastId: result.lastId };
|
|
1959
1959
|
} catch (e) {
|
|
1960
|
-
return { success: false,
|
|
1960
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1961
1961
|
}
|
|
1962
1962
|
}
|
|
1963
1963
|
const keys = Object.keys(data);
|
|
@@ -1969,11 +1969,11 @@ var init_mysql = __esm({
|
|
|
1969
1969
|
this._lastInsertId = result.insertId ?? null;
|
|
1970
1970
|
return {
|
|
1971
1971
|
success: true,
|
|
1972
|
-
|
|
1973
|
-
|
|
1972
|
+
affectedRows: result.affectedRows ?? 1,
|
|
1973
|
+
lastId: result.insertId
|
|
1974
1974
|
};
|
|
1975
1975
|
} catch (e) {
|
|
1976
|
-
return { success: false,
|
|
1976
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1977
1977
|
}
|
|
1978
1978
|
}
|
|
1979
1979
|
update(table2, data, filter, params) {
|
|
@@ -1987,9 +1987,9 @@ var init_mysql = __esm({
|
|
|
1987
1987
|
const values = [...Object.values(data), ...Object.values(filter)];
|
|
1988
1988
|
try {
|
|
1989
1989
|
const result = await this.queryPromise(sql, values);
|
|
1990
|
-
return { success: true,
|
|
1990
|
+
return { success: true, affectedRows: result.affectedRows ?? 0 };
|
|
1991
1991
|
} catch (e) {
|
|
1992
|
-
return { success: false,
|
|
1992
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
1993
1993
|
}
|
|
1994
1994
|
}
|
|
1995
1995
|
delete(table2, filter, params) {
|
|
@@ -2002,9 +2002,9 @@ var init_mysql = __esm({
|
|
|
2002
2002
|
const values = Object.values(filter);
|
|
2003
2003
|
try {
|
|
2004
2004
|
const result = await this.queryPromise(sql, values);
|
|
2005
|
-
return { success: true,
|
|
2005
|
+
return { success: true, affectedRows: result.affectedRows ?? 0 };
|
|
2006
2006
|
} catch (e) {
|
|
2007
|
-
return { success: false,
|
|
2007
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2008
2008
|
}
|
|
2009
2009
|
}
|
|
2010
2010
|
startTransaction() {
|
|
@@ -2345,17 +2345,17 @@ var init_mssql = __esm({
|
|
|
2345
2345
|
async insertAsync(table2, data) {
|
|
2346
2346
|
this.ensureConnected();
|
|
2347
2347
|
if (Array.isArray(data)) {
|
|
2348
|
-
if (data.length === 0) return { success: true,
|
|
2348
|
+
if (data.length === 0) return { success: true, affectedRows: 0 };
|
|
2349
2349
|
const keys2 = Object.keys(data[0]);
|
|
2350
2350
|
const placeholders2 = keys2.map(() => "?").join(", ");
|
|
2351
2351
|
const sql2 = `INSERT INTO [${table2}] ([${keys2.join("], [")}]) VALUES (${placeholders2})`;
|
|
2352
2352
|
const paramsList = data.map((row) => keys2.map((k) => row[k]));
|
|
2353
2353
|
try {
|
|
2354
2354
|
const result = await this.executeManyAsync(sql2, paramsList);
|
|
2355
|
-
if (result.
|
|
2356
|
-
return { success: true,
|
|
2355
|
+
if (result.lastId !== void 0) this._lastInsertId = result.lastId;
|
|
2356
|
+
return { success: true, affectedRows: result.totalAffected, lastId: result.lastId };
|
|
2357
2357
|
} catch (e) {
|
|
2358
|
-
return { success: false,
|
|
2358
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2359
2359
|
}
|
|
2360
2360
|
}
|
|
2361
2361
|
const keys = Object.keys(data);
|
|
@@ -2371,12 +2371,12 @@ var init_mssql = __esm({
|
|
|
2371
2371
|
// A single-object insert affects exactly one row. Do NOT use
|
|
2372
2372
|
// result.rowCount here: the statement is "INSERT ...; SELECT
|
|
2373
2373
|
// SCOPE_IDENTITY()", and tedious sums the row counts of BOTH statements
|
|
2374
|
-
// (1 for the INSERT + 1 for the SELECT), which reported
|
|
2375
|
-
|
|
2376
|
-
|
|
2374
|
+
// (1 for the INSERT + 1 for the SELECT), which reported affectedRows=2.
|
|
2375
|
+
affectedRows: 1,
|
|
2376
|
+
lastId: id ?? void 0
|
|
2377
2377
|
};
|
|
2378
2378
|
} catch (e) {
|
|
2379
|
-
return { success: false,
|
|
2379
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2380
2380
|
}
|
|
2381
2381
|
}
|
|
2382
2382
|
update(table2, data, filter, params) {
|
|
@@ -2393,9 +2393,9 @@ var init_mssql = __esm({
|
|
|
2393
2393
|
const values = [...Object.values(data), ...Object.values(filter)];
|
|
2394
2394
|
try {
|
|
2395
2395
|
const result = await this.execSqlPromise(sql, values);
|
|
2396
|
-
return { success: true,
|
|
2396
|
+
return { success: true, affectedRows: result.rowCount };
|
|
2397
2397
|
} catch (e) {
|
|
2398
|
-
return { success: false,
|
|
2398
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2399
2399
|
}
|
|
2400
2400
|
}
|
|
2401
2401
|
delete(table2, filter, params) {
|
|
@@ -2410,9 +2410,9 @@ var init_mssql = __esm({
|
|
|
2410
2410
|
const values = Object.values(filter);
|
|
2411
2411
|
try {
|
|
2412
2412
|
const result = await this.execSqlPromise(sql, values);
|
|
2413
|
-
return { success: true,
|
|
2413
|
+
return { success: true, affectedRows: result.rowCount };
|
|
2414
2414
|
} catch (e) {
|
|
2415
|
-
return { success: false,
|
|
2415
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2416
2416
|
}
|
|
2417
2417
|
}
|
|
2418
2418
|
startTransaction() {
|
|
@@ -2781,16 +2781,16 @@ var init_firebird = __esm({
|
|
|
2781
2781
|
async insertAsync(table2, data) {
|
|
2782
2782
|
this.ensureConnected();
|
|
2783
2783
|
if (Array.isArray(data)) {
|
|
2784
|
-
if (data.length === 0) return { success: true,
|
|
2784
|
+
if (data.length === 0) return { success: true, affectedRows: 0 };
|
|
2785
2785
|
const keys2 = Object.keys(data[0]);
|
|
2786
2786
|
const placeholders2 = keys2.map(() => "?").join(", ");
|
|
2787
2787
|
const sql2 = `INSERT INTO "${table2}" ("${keys2.join('", "')}") VALUES (${placeholders2})`;
|
|
2788
2788
|
const paramsList = data.map((row) => keys2.map((k) => row[k]));
|
|
2789
2789
|
try {
|
|
2790
2790
|
const result = await this.executeManyAsync(sql2, paramsList);
|
|
2791
|
-
return { success: true,
|
|
2791
|
+
return { success: true, affectedRows: result.totalAffected, lastId: result.lastId };
|
|
2792
2792
|
} catch (e) {
|
|
2793
|
-
return { success: false,
|
|
2793
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2794
2794
|
}
|
|
2795
2795
|
}
|
|
2796
2796
|
const keys = Object.keys(data);
|
|
@@ -2801,10 +2801,10 @@ var init_firebird = __esm({
|
|
|
2801
2801
|
await this.executePromise(sql, values);
|
|
2802
2802
|
return {
|
|
2803
2803
|
success: true,
|
|
2804
|
-
|
|
2804
|
+
affectedRows: 1
|
|
2805
2805
|
};
|
|
2806
2806
|
} catch (e) {
|
|
2807
|
-
return { success: false,
|
|
2807
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2808
2808
|
}
|
|
2809
2809
|
}
|
|
2810
2810
|
update(table2, data, filter, params) {
|
|
@@ -2818,9 +2818,9 @@ var init_firebird = __esm({
|
|
|
2818
2818
|
const values = [...Object.values(data), ...Object.values(filter)];
|
|
2819
2819
|
try {
|
|
2820
2820
|
await this.executePromise(sql, values);
|
|
2821
|
-
return { success: true,
|
|
2821
|
+
return { success: true, affectedRows: 1 };
|
|
2822
2822
|
} catch (e) {
|
|
2823
|
-
return { success: false,
|
|
2823
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2824
2824
|
}
|
|
2825
2825
|
}
|
|
2826
2826
|
delete(table2, filter, params) {
|
|
@@ -2833,9 +2833,9 @@ var init_firebird = __esm({
|
|
|
2833
2833
|
const values = Object.values(filter);
|
|
2834
2834
|
try {
|
|
2835
2835
|
await this.executePromise(sql, values);
|
|
2836
|
-
return { success: true,
|
|
2836
|
+
return { success: true, affectedRows: 1 };
|
|
2837
2837
|
} catch (e) {
|
|
2838
|
-
return { success: false,
|
|
2838
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
2839
2839
|
}
|
|
2840
2840
|
}
|
|
2841
2841
|
startTransaction() {
|
|
@@ -3331,14 +3331,14 @@ var init_mongodb = __esm({
|
|
|
3331
3331
|
const col = this.db.collection(table2);
|
|
3332
3332
|
try {
|
|
3333
3333
|
if (Array.isArray(data)) {
|
|
3334
|
-
if (data.length === 0) return { success: true,
|
|
3334
|
+
if (data.length === 0) return { success: true, affectedRows: 0 };
|
|
3335
3335
|
const result2 = await col.insertMany(data, { session: this.session });
|
|
3336
|
-
return { success: true,
|
|
3336
|
+
return { success: true, affectedRows: result2.insertedCount };
|
|
3337
3337
|
}
|
|
3338
3338
|
const result = await col.insertOne(data, { session: this.session });
|
|
3339
|
-
return { success: true,
|
|
3339
|
+
return { success: true, affectedRows: 1, lastId: void 0 };
|
|
3340
3340
|
} catch (e) {
|
|
3341
|
-
return { success: false,
|
|
3341
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3342
3342
|
}
|
|
3343
3343
|
}
|
|
3344
3344
|
update(table2, data, filter) {
|
|
@@ -3349,9 +3349,9 @@ var init_mongodb = __esm({
|
|
|
3349
3349
|
const col = this.db.collection(table2);
|
|
3350
3350
|
try {
|
|
3351
3351
|
const result = await col.updateMany(filter, { $set: data }, { session: this.session });
|
|
3352
|
-
return { success: true,
|
|
3352
|
+
return { success: true, affectedRows: result.modifiedCount };
|
|
3353
3353
|
} catch (e) {
|
|
3354
|
-
return { success: false,
|
|
3354
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3355
3355
|
}
|
|
3356
3356
|
}
|
|
3357
3357
|
delete(table2, filter) {
|
|
@@ -3367,21 +3367,21 @@ var init_mongodb = __esm({
|
|
|
3367
3367
|
const r = await col.deleteMany(f, { session: this.session });
|
|
3368
3368
|
total += r.deletedCount;
|
|
3369
3369
|
}
|
|
3370
|
-
return { success: true,
|
|
3370
|
+
return { success: true, affectedRows: total };
|
|
3371
3371
|
}
|
|
3372
3372
|
if (typeof filter === "string") {
|
|
3373
3373
|
if (!filter.trim()) {
|
|
3374
3374
|
const r2 = await col.deleteMany({}, { session: this.session });
|
|
3375
|
-
return { success: true,
|
|
3375
|
+
return { success: true, affectedRows: r2.deletedCount };
|
|
3376
3376
|
}
|
|
3377
3377
|
const { filter: parsedFilter } = parseWhereClause(filter, []);
|
|
3378
3378
|
const r = await col.deleteMany(parsedFilter, { session: this.session });
|
|
3379
|
-
return { success: true,
|
|
3379
|
+
return { success: true, affectedRows: r.deletedCount };
|
|
3380
3380
|
}
|
|
3381
3381
|
const result = await col.deleteMany(filter, { session: this.session });
|
|
3382
|
-
return { success: true,
|
|
3382
|
+
return { success: true, affectedRows: result.deletedCount };
|
|
3383
3383
|
} catch (e) {
|
|
3384
|
-
return { success: false,
|
|
3384
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3385
3385
|
}
|
|
3386
3386
|
}
|
|
3387
3387
|
startTransaction() {
|
|
@@ -3641,8 +3641,8 @@ var init_odbc = __esm({
|
|
|
3641
3641
|
async executeAsync(sql, params) {
|
|
3642
3642
|
this.ensureConnected();
|
|
3643
3643
|
const result = await this.connection.query(sql, params ?? []);
|
|
3644
|
-
if (result && typeof result === "object" && "
|
|
3645
|
-
this._lastInsertId = result.
|
|
3644
|
+
if (result && typeof result === "object" && "lastId" in result) {
|
|
3645
|
+
this._lastInsertId = result.lastId;
|
|
3646
3646
|
}
|
|
3647
3647
|
return result;
|
|
3648
3648
|
}
|
|
@@ -3663,7 +3663,7 @@ var init_odbc = __esm({
|
|
|
3663
3663
|
throw e;
|
|
3664
3664
|
}
|
|
3665
3665
|
if (lastId !== void 0) this._lastInsertId = lastId;
|
|
3666
|
-
return { totalAffected,
|
|
3666
|
+
return { totalAffected, lastId };
|
|
3667
3667
|
}
|
|
3668
3668
|
/** Run a SELECT and return all matching rows. */
|
|
3669
3669
|
async queryAsync(sql, params) {
|
|
@@ -3699,9 +3699,9 @@ var init_odbc = __esm({
|
|
|
3699
3699
|
const values = Object.values(data);
|
|
3700
3700
|
try {
|
|
3701
3701
|
await this.connection.query(sql, values);
|
|
3702
|
-
return { success: true,
|
|
3702
|
+
return { success: true, affectedRows: 1, lastId: this._lastInsertId ?? void 0 };
|
|
3703
3703
|
} catch (e) {
|
|
3704
|
-
return { success: false,
|
|
3704
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3705
3705
|
}
|
|
3706
3706
|
}
|
|
3707
3707
|
/** Update rows in a table matching filter. */
|
|
@@ -3713,9 +3713,9 @@ var init_odbc = __esm({
|
|
|
3713
3713
|
const values = [...Object.values(data), ...Object.values(filter)];
|
|
3714
3714
|
try {
|
|
3715
3715
|
await this.connection.query(sql, values);
|
|
3716
|
-
return { success: true,
|
|
3716
|
+
return { success: true, affectedRows: 1 };
|
|
3717
3717
|
} catch (e) {
|
|
3718
|
-
return { success: false,
|
|
3718
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3719
3719
|
}
|
|
3720
3720
|
}
|
|
3721
3721
|
/** Delete rows from a table. */
|
|
@@ -3725,17 +3725,17 @@ var init_odbc = __esm({
|
|
|
3725
3725
|
let totalAffected = 0;
|
|
3726
3726
|
for (const row of filter) {
|
|
3727
3727
|
const result = await this.deleteAsync(table2, row);
|
|
3728
|
-
totalAffected += result.
|
|
3728
|
+
totalAffected += result.affectedRows;
|
|
3729
3729
|
}
|
|
3730
|
-
return { success: true,
|
|
3730
|
+
return { success: true, affectedRows: totalAffected };
|
|
3731
3731
|
}
|
|
3732
3732
|
if (typeof filter === "string") {
|
|
3733
3733
|
const sql2 = filter ? `DELETE FROM "${table2}" WHERE ${filter}` : `DELETE FROM "${table2}"`;
|
|
3734
3734
|
try {
|
|
3735
3735
|
await this.connection.query(sql2, []);
|
|
3736
|
-
return { success: true,
|
|
3736
|
+
return { success: true, affectedRows: 1 };
|
|
3737
3737
|
} catch (e) {
|
|
3738
|
-
return { success: false,
|
|
3738
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3739
3739
|
}
|
|
3740
3740
|
}
|
|
3741
3741
|
const whereClauses = Object.keys(filter).map((k) => `"${k}" = ?`).join(" AND ");
|
|
@@ -3743,9 +3743,9 @@ var init_odbc = __esm({
|
|
|
3743
3743
|
const values = Object.values(filter);
|
|
3744
3744
|
try {
|
|
3745
3745
|
await this.connection.query(sql, values);
|
|
3746
|
-
return { success: true,
|
|
3746
|
+
return { success: true, affectedRows: 1 };
|
|
3747
3747
|
} catch (e) {
|
|
3748
|
-
return { success: false,
|
|
3748
|
+
return { success: false, affectedRows: 0, error: e.message };
|
|
3749
3749
|
}
|
|
3750
3750
|
}
|
|
3751
3751
|
/** Begin a transaction. */
|
|
@@ -3925,7 +3925,7 @@ function extractLastInsertId(result) {
|
|
|
3925
3925
|
const r = result;
|
|
3926
3926
|
if (r.lastInsertRowid !== void 0 && r.lastInsertRowid !== null) return r.lastInsertRowid;
|
|
3927
3927
|
if (r.rows?.[0]?.id !== void 0 && r.rows[0].id !== null) return r.rows[0].id;
|
|
3928
|
-
if (r.
|
|
3928
|
+
if (r.lastId !== void 0 && r.lastId !== null) return r.lastId;
|
|
3929
3929
|
}
|
|
3930
3930
|
return null;
|
|
3931
3931
|
}
|
|
@@ -13039,11 +13039,14 @@ function resolveVar(expr, context) {
|
|
|
13039
13039
|
return value;
|
|
13040
13040
|
}
|
|
13041
13041
|
function findOutsideQuotes(expr, needle) {
|
|
13042
|
+
if (!expr.includes(needle)) return -1;
|
|
13042
13043
|
let inQuote = null;
|
|
13043
13044
|
let depth = 0;
|
|
13044
13045
|
let bracketDepth = 0;
|
|
13045
13046
|
let i = 0;
|
|
13046
|
-
|
|
13047
|
+
const needleLen = needle.length;
|
|
13048
|
+
const lastStart = expr.length - needleLen;
|
|
13049
|
+
while (i <= lastStart) {
|
|
13047
13050
|
const ch = expr[i];
|
|
13048
13051
|
if ((ch === '"' || ch === "'") && depth === 0 && bracketDepth === 0) {
|
|
13049
13052
|
if (inQuote === null) {
|
|
@@ -13062,7 +13065,7 @@ function findOutsideQuotes(expr, needle) {
|
|
|
13062
13065
|
else if (ch === ")") depth--;
|
|
13063
13066
|
else if (ch === "[") bracketDepth++;
|
|
13064
13067
|
else if (ch === "]") bracketDepth--;
|
|
13065
|
-
if (depth === 0 && bracketDepth === 0 && expr.
|
|
13068
|
+
if (depth === 0 && bracketDepth === 0 && expr.startsWith(needle, i)) {
|
|
13066
13069
|
return i;
|
|
13067
13070
|
}
|
|
13068
13071
|
i++;
|
|
@@ -13070,13 +13073,16 @@ function findOutsideQuotes(expr, needle) {
|
|
|
13070
13073
|
return -1;
|
|
13071
13074
|
}
|
|
13072
13075
|
function splitOutsideQuotes(expr, sep5) {
|
|
13076
|
+
if (!expr.includes(sep5)) return [expr];
|
|
13073
13077
|
const parts = [];
|
|
13074
13078
|
let currentStart = 0;
|
|
13075
13079
|
let inQuote = null;
|
|
13076
13080
|
let depth = 0;
|
|
13077
13081
|
let bracketDepth = 0;
|
|
13078
13082
|
let i = 0;
|
|
13079
|
-
|
|
13083
|
+
const sepLen = sep5.length;
|
|
13084
|
+
const lastStart = expr.length - sepLen;
|
|
13085
|
+
while (i <= lastStart) {
|
|
13080
13086
|
const ch = expr[i];
|
|
13081
13087
|
if ((ch === '"' || ch === "'") && depth === 0 && bracketDepth === 0) {
|
|
13082
13088
|
if (inQuote === null) {
|
|
@@ -13095,9 +13101,9 @@ function splitOutsideQuotes(expr, sep5) {
|
|
|
13095
13101
|
else if (ch === ")") depth--;
|
|
13096
13102
|
else if (ch === "[") bracketDepth++;
|
|
13097
13103
|
else if (ch === "]") bracketDepth--;
|
|
13098
|
-
if (depth === 0 && bracketDepth === 0 && expr.
|
|
13104
|
+
if (depth === 0 && bracketDepth === 0 && expr.startsWith(sep5, i)) {
|
|
13099
13105
|
parts.push(expr.slice(currentStart, i));
|
|
13100
|
-
i +=
|
|
13106
|
+
i += sepLen;
|
|
13101
13107
|
currentStart = i;
|
|
13102
13108
|
continue;
|
|
13103
13109
|
}
|