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