@wxn0brp/db-storage-sqlite 0.110.2 → 0.110.4
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/README.md +6 -0
- package/dist/find.js +9 -5
- package/dist/remove.js +6 -2
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -73,6 +73,12 @@ await db.users.remove({ name: "John Doe" });
|
|
|
73
73
|
|
|
74
74
|
- All other methods (`add`, `find`, `update`, `remove`) are **fully compatible with ValtheraDB**, preserving all features like `_id` generation, complex filters (`hasFieldsAdvanced`), sorting, pagination, and function-based search.
|
|
75
75
|
|
|
76
|
+
## Environment Variables
|
|
77
|
+
|
|
78
|
+
| Variable | Default | Description |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| `VALTHERA_SQLITE_BATCH_SIZE` | `500` | Maximum number of rows processed per batch in `remove` operations. Reduces to stay under SQLite's variable limit (`SQLITE_MAX_VARIABLE_NUMBER`).
|
|
81
|
+
|
|
76
82
|
## License
|
|
77
83
|
|
|
78
84
|
MIT
|
package/dist/find.js
CHANGED
|
@@ -4,10 +4,12 @@ import { toSqlValue } from "./index.js";
|
|
|
4
4
|
export async function find(slv, config) {
|
|
5
5
|
const { collection, search } = config;
|
|
6
6
|
let sqlResult = [];
|
|
7
|
-
const baseKeys =
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const baseKeys = typeof search === "object" && search !== null && !Array.isArray(search)
|
|
8
|
+
? Object.keys(search)
|
|
9
|
+
.filter(k => search[k] !== undefined)
|
|
10
|
+
.filter(k => !k.startsWith("$"))
|
|
11
|
+
.filter(k => typeof search[k] !== "object")
|
|
12
|
+
: [];
|
|
11
13
|
if (typeof search === "function" || baseKeys.length === 0) {
|
|
12
14
|
const stmt = await slv._prepare(`SELECT * FROM ${collection}`);
|
|
13
15
|
sqlResult = await Promise.resolve(stmt.all());
|
|
@@ -18,6 +20,8 @@ export async function find(slv, config) {
|
|
|
18
20
|
const stmt = await slv._prepare(baseSql);
|
|
19
21
|
sqlResult = await Promise.resolve(stmt.all(...baseValues));
|
|
20
22
|
}
|
|
21
|
-
const result = sqlResult
|
|
23
|
+
const result = sqlResult
|
|
24
|
+
.map(entry => findObj(config, entry))
|
|
25
|
+
.filter(Boolean);
|
|
22
26
|
return findUtil(config, result, []);
|
|
23
27
|
}
|
package/dist/remove.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { find } from "./find.js";
|
|
2
|
+
const BATCH_SIZE = +process.env.VALTHERA_SQLITE_BATCH_SIZE || 500;
|
|
2
3
|
export async function remove(slv, query, one) {
|
|
3
4
|
const { collection } = query;
|
|
4
5
|
const toDelete = await find(slv, {
|
|
@@ -10,7 +11,10 @@ export async function remove(slv, query, one) {
|
|
|
10
11
|
if (!toDelete.length)
|
|
11
12
|
return [];
|
|
12
13
|
const key = slv.primaryKey[collection] || "_id";
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
for (let i = 0; i < toDelete.length; i += BATCH_SIZE) {
|
|
15
|
+
const batch = toDelete.slice(i, i + BATCH_SIZE);
|
|
16
|
+
const stmt = await slv._prepare(`DELETE FROM "${collection}" WHERE "${key}" IN (${batch.map(() => "?").join(", ")})`);
|
|
17
|
+
await Promise.resolve(stmt.run(...batch.map(d => d[key])));
|
|
18
|
+
}
|
|
15
19
|
return toDelete;
|
|
16
20
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wxn0brp/db-storage-sqlite",
|
|
3
|
-
"version": "0.110.
|
|
3
|
+
"version": "0.110.4",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"description": "A pure SQLite storage adapter for the ValtheraDB database library",
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
"@types/better-sqlite3": "^7.6.13",
|
|
23
23
|
"@types/bun": "*",
|
|
24
24
|
"@types/node": "*",
|
|
25
|
-
"@wxn0brp/db-core": "^0.11.0
|
|
26
|
-
"better-sqlite3": "^12.
|
|
25
|
+
"@wxn0brp/db-core": "^0.11.0",
|
|
26
|
+
"better-sqlite3": "^12.10.0",
|
|
27
27
|
"tsc-alias": "^1",
|
|
28
28
|
"typescript": "^6"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@wxn0brp/db-core": "^0.11.0
|
|
32
|
-
"better-sqlite3": "^12.
|
|
31
|
+
"@wxn0brp/db-core": "^0.11.0",
|
|
32
|
+
"better-sqlite3": "^12.10.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependenciesMeta": {
|
|
35
35
|
"@wxn0brp/db-core": {
|