@citadeldb/wasm 0.8.1 → 0.9.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/README.md CHANGED
@@ -19,12 +19,24 @@ await init();
19
19
 
20
20
  const db = new CitadelDb("my-passphrase");
21
21
 
22
- // SQL
22
+ // Single statement
23
23
  db.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);");
24
24
  db.execute("INSERT INTO users (id, name) VALUES (1, 'Alice'), (2, 'Bob');");
25
25
  const result = db.query("SELECT * FROM users;");
26
26
  // { columns: ["id", "name"], rows: [[1, "Alice"], [2, "Bob"]] }
27
27
 
28
+ // Multi-statement script — returns one outcome per statement
29
+ const outcomes = db.run(`
30
+ CREATE TABLE posts (id INTEGER PRIMARY KEY, title TEXT NOT NULL);
31
+ INSERT INTO posts VALUES (1, 'Hello'), (2, 'World');
32
+ SELECT * FROM posts;
33
+ `);
34
+ // [
35
+ // { type: "ok" },
36
+ // { type: "rowsAffected", value: 2 },
37
+ // { type: "query", columns: ["id", "title"], rows: [[1, "Hello"], [2, "World"]] }
38
+ // ]
39
+
28
40
  // Key-value
29
41
  db.put(new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6]));
30
42
  const value = db.get(new Uint8Array([1, 2, 3]));
@@ -45,9 +57,10 @@ db.free();
45
57
  | Method | Description |
46
58
  |--------|-------------|
47
59
  | `new CitadelDb(passphrase)` | Create an in-memory encrypted database |
48
- | `execute(sql)` | Execute DDL/DML, returns rows affected |
49
- | `executeBatch(sql)` | Execute multiple statements |
50
- | `query(sql)` | Execute SELECT, returns `{ columns, rows }` |
60
+ | `execute(sql)` | Execute single DDL/DML statement, returns rows affected |
61
+ | `query(sql)` | Execute single SELECT, returns `{ columns, rows }` |
62
+ | `run(sql)` | Execute `;`-separated statements, returns `[{type, ...}, ...]` |
63
+ | `executeBatch(sql)` | Execute `;`-separated statements, discards results |
51
64
  | `put(key, value)` | Insert into default table |
52
65
  | `get(key)` | Get from default table |
53
66
  | `delete(key)` | Delete from default table |
package/citadel_wasm.d.ts CHANGED
@@ -37,6 +37,11 @@ export class CitadelDb {
37
37
  * Returns `{ columns: string[], rows: any[][] }`.
38
38
  */
39
39
  query(sql: string): any;
40
+ /**
41
+ * Execute `;`-separated SQL statements. Returns an array of
42
+ * tagged outcome objects, one per statement.
43
+ */
44
+ run(sql: string): Array<any>;
40
45
  /**
41
46
  * Get database statistics.
42
47
  * Returns `{ entryCount: number, totalPages: number, treeDepth: number }`.
@@ -70,6 +75,7 @@ export interface InitOutput {
70
75
  readonly citadeldb_new: (a: number, b: number, c: number) => void;
71
76
  readonly citadeldb_put: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
72
77
  readonly citadeldb_query: (a: number, b: number, c: number, d: number) => void;
78
+ readonly citadeldb_run: (a: number, b: number, c: number, d: number) => void;
73
79
  readonly citadeldb_stats: (a: number, b: number) => void;
74
80
  readonly citadeldb_tableDelete: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
75
81
  readonly citadeldb_tableGet: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
package/citadel_wasm.js CHANGED
@@ -168,6 +168,29 @@ export class CitadelDb {
168
168
  wasm.__wbindgen_add_to_stack_pointer(16);
169
169
  }
170
170
  }
171
+ /**
172
+ * Execute `;`-separated SQL statements. Returns an array of
173
+ * tagged outcome objects, one per statement.
174
+ * @param {string} sql
175
+ * @returns {Array<any>}
176
+ */
177
+ run(sql) {
178
+ try {
179
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
180
+ const ptr0 = passStringToWasm0(sql, wasm.__wbindgen_export3, wasm.__wbindgen_export4);
181
+ const len0 = WASM_VECTOR_LEN;
182
+ wasm.citadeldb_run(retptr, this.__wbg_ptr, ptr0, len0);
183
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
184
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
185
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
186
+ if (r2) {
187
+ throw takeObject(r1);
188
+ }
189
+ return takeObject(r0);
190
+ } finally {
191
+ wasm.__wbindgen_add_to_stack_pointer(16);
192
+ }
193
+ }
171
194
  /**
172
195
  * Get database statistics.
173
196
  * Returns `{ entryCount: number, totalPages: number, treeDepth: number }`.
Binary file
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@citadeldb/wasm",
3
3
  "type": "module",
4
4
  "description": "WASM bindings for Citadel encrypted database",
5
- "version": "0.8.1",
5
+ "version": "0.9.0",
6
6
  "license": "MIT OR Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",