@plurnk/plurnk-execs-sqlite 1.16.4 → 1.17.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
@@ -14,13 +14,13 @@ A `@plurnk/plurnk-execs-*` sibling built on the [plurnk-execs](https://github.co
14
14
 
15
15
  The EXEC target slot is the database file; with no target it defaults to an ephemeral in-memory db:
16
16
 
17
- ```example
18
- ### EXEC0 (sqlite)
19
- SELECT * FROM users;
17
+ ````sqlite
18
+ SELECT 1 AS value;
19
+ ````
20
20
 
21
- ### EXEC0 [sqlite] (./app.db)
22
- SELECT * FROM users;
23
- ```
21
+ ````sqlite (./app.db)
22
+ SELECT name FROM sqlite_master WHERE type = 'table';
23
+ ````
24
24
 
25
25
  With no target, a fresh `:memory:` database exists for that operation only.
26
26
  State does not persist across EXECs. Pass a file path for persistence.
@@ -29,10 +29,9 @@ State does not persist across EXECs. Pass a file path for persistence.
29
29
 
30
30
  With no target, `:memory:` is a scratch calculator over ad-hoc tables — build one inline with `VALUES` and aggregate, no schema or file needed:
31
31
 
32
- ```example
33
- ### EXEC0 (sqlite)
32
+ ````sqlite
34
33
  WITH t(item,qty,price) AS (VALUES ('a',3,2),('b',1,5)) SELECT sum(qty*price) AS total, sum(qty*price)*1.0/sum(qty) AS avg_price FROM t;
35
- ```
34
+ ````
36
35
 
37
36
  **Use floats to avoid integer truncation.** SQLite integer division truncates — `11/4` → `2`. Multiply by `1.0` (or `CAST(x AS REAL)`) to force real division: `11*1.0/4` → `2.75`. Any division over integer columns needs this, or the result is silently floored.
38
37
 
package/dist/Sqlite.js CHANGED
@@ -21,8 +21,8 @@ const stripComments = (sql) => sql.replace(/--[^\n]*/g, "").replace(/\/\*[\s\S]*
21
21
  // ephemeral `:memory:` when no target is given — and writes the result to the
22
22
  // `results` channel as application/json, ready for the jsonpath body-matcher.
23
23
  //
24
- // ### EXEC0 (sqlite)\nSELECT * FROM users → :memory: (ephemeral)
25
- // ### EXEC0 (sqlite/./app.db)\nSELECT * FROM users → ./app.db (persistent)
24
+ // sqlite fence, no target: SELECT 1; → :memory: (ephemeral)
25
+ // sqlite fence, target ./app.db: SELECT * FROM users; → ./app.db (persistent)
26
26
  //
27
27
  // Row-returning statements (SELECT, RETURNING, PRAGMA) write an array of row
28
28
  // objects; mutations write `{ changes, lastInsertRowid }`. The query/mutation
@@ -1 +1 @@
1
- {"version":3,"file":"Sqlite.js","sourceRoot":"","sources":["../src/Sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Sqlite.js","sourceRoot":"","sources":["../src/Sqlite.ts"],"names":[],"mappings":"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"}
package/docs/sqlite.md CHANGED
@@ -3,18 +3,19 @@
3
3
  Runs **one SQL statement** in-process via `node:sqlite` and writes the result to the `results` channel as `application/json` — ready for a jsonpath body-matcher.
4
4
 
5
5
  One statement per operation is enforced. A multi-statement script fails with
6
- `sqlite_multi_statement` (400) and names the rejected tail; partial execution
6
+ `sqlite-multi-statement` (400) and names the rejected tail; partial execution
7
7
  never passes as success. Trailing semicolons and comments are allowed.
8
8
  Dot-commands such as `.tables` and `.schema` belong to the sqlite3 shell rather
9
9
  than SQL. Use their SQL equivalents, such as querying `sqlite_master`.
10
10
 
11
11
  ## Database target
12
12
 
13
- `### EXEC0 [sqlite] (./app.db)` with a SQL body runs against the file `./app.db` (created if absent),
13
+ ````` ````sqlite (./app.db) ````` with a SQL body runs against the file `./app.db` (created if absent),
14
14
  a persistent host-mutating database that requires proposal review. With no
15
15
  target, it runs against a fresh `:memory:` database that is gone when the
16
- operation finishes and bypasses proposal review. A directory is not a database
17
- target; core routes it as a working directory, leaving SQLite in memory.
16
+ operation finishes and bypasses proposal review. A directory is not a database.
17
+ Use `[{"cwd": "./data"}]` on the heading to set the base for a relative database path;
18
+ it does not change whether the operation uses a file or memory.
18
19
 
19
20
  ## Query vs mutation
20
21
 
@@ -24,5 +25,5 @@ The result shape is decided by the statement's columns, never by parsing the SQL
24
25
  - **Mutation** (INSERT / UPDATE / DELETE / CREATE) → `{ changes, lastInsertRowid }`.
25
26
 
26
27
  Large integers come back stringified (JSON cannot hold a bigint). Failures close
27
- `results` as `errored` with an RFC 9457 Problem: invalid authored SQL is 400, a
28
- missing database target is 404, and runtime/open failures are 500.
28
+ `results` as `errored` with an RFC 9457 Problem: invalid authored SQL is 400, and
29
+ runtime/open failures are 500.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-execs-sqlite",
3
- "version": "1.16.4",
3
+ "version": "1.17.0",
4
4
  "description": "SQLite runtime executor for plurnk-service's exec scheme — runs the sqlite runtime tag in-process via node:sqlite, results as application/json.",
5
5
  "keywords": [
6
6
  "plurnk",
@@ -77,6 +77,6 @@
77
77
  "prepublishOnly": "npm audit --audit-level=moderate && npm test"
78
78
  },
79
79
  "peerDependencies": {
80
- "@plurnk/plurnk-execs": "^1.16.4"
80
+ "@plurnk/plurnk-execs": "^1.17.0"
81
81
  }
82
82
  }