@effect-app/infra 4.0.0-beta.82 → 4.0.0-beta.83
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/CHANGELOG.md +7 -0
- package/dist/Store/SQL/Pg.d.ts.map +1 -1
- package/dist/Store/SQL/Pg.js +8 -7
- package/dist/Store/SQL.d.ts.map +1 -1
- package/dist/Store/SQL.js +8 -7
- package/package.json +2 -2
- package/src/Store/SQL/Pg.ts +7 -5
- package/src/Store/SQL.ts +11 -6
- package/test/sql-store.test.ts +111 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.83
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d1fc90a: Strip `_etag` and `id` from the `data` JSON column in SQL store adapters (SQLite + PostgreSQL). These fields are already stored as dedicated columns and were redundantly duplicated inside the JSON blob. On read, `parseRow` now re-injects `id` from the row column. Backward compatible: existing rows with `_etag`/`id` in `data` continue to work as the column values take precedence.
|
|
8
|
+
- effect-app@4.0.0-beta.83
|
|
9
|
+
|
|
3
10
|
## 4.0.0-beta.82
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pg.d.ts","sourceRoot":"","sources":["../../../src/Store/SQL/Pg.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAK/C,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Pg.d.ts","sourceRoot":"","sources":["../../../src/Store/SQL/Pg.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAK/C,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,eAAe,CAAA;AA2RxI,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,wEAG9C"}
|
package/dist/Store/SQL/Pg.js
CHANGED
|
@@ -8,9 +8,9 @@ import { storeId } from "../Memory.js";
|
|
|
8
8
|
import { StoreMaker } from "../service.js";
|
|
9
9
|
import { makeETag } from "../utils.js";
|
|
10
10
|
import { buildWhereSQLQuery, logQuery, pgDialect } from "./query.js";
|
|
11
|
-
const parseRow = (row, defaultValues) => {
|
|
11
|
+
const parseRow = (row, idKey, defaultValues) => {
|
|
12
12
|
const data = (typeof row.data === "string" ? JSON.parse(row.data) : row.data);
|
|
13
|
-
return { ...defaultValues, ...data, _etag: row._etag ?? undefined };
|
|
13
|
+
return { ...defaultValues, ...data, [idKey]: row.id, _etag: row._etag ?? undefined };
|
|
14
14
|
};
|
|
15
15
|
const parseSelectRow = (row, idKey, defaultValues) => {
|
|
16
16
|
const result = { ...defaultValues };
|
|
@@ -46,13 +46,14 @@ function makePgStore({ prefix }) {
|
|
|
46
46
|
const toRow = (e) => {
|
|
47
47
|
const newE = makeETag(e);
|
|
48
48
|
const id = newE[idKey];
|
|
49
|
-
const
|
|
49
|
+
const { _etag, [idKey]: _id, ...rest } = newE;
|
|
50
|
+
const data = JSON.stringify(rest);
|
|
50
51
|
return { id, _etag: newE._etag, data, item: newE };
|
|
51
52
|
};
|
|
52
53
|
const exec = (query, params) => sql.unsafe(query, params).pipe(Effect.orDie);
|
|
53
54
|
const s = {
|
|
54
55
|
all: resolveNamespace.pipe(Effect.flatMap((ns) => exec(`SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = $1`, [ns])
|
|
55
|
-
.pipe(Effect.map((rows) => rows.map((r) => parseRow(r, defaultValues))), Effect.withSpan("PgSQL.all [effect-app/infra/Store]", {
|
|
56
|
+
.pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), Effect.withSpan("PgSQL.all [effect-app/infra/Store]", {
|
|
56
57
|
attributes: {
|
|
57
58
|
"repository.table_name": tableName,
|
|
58
59
|
"repository.model_name": name,
|
|
@@ -64,7 +65,7 @@ function makePgStore({ prefix }) {
|
|
|
64
65
|
.pipe(Effect.map((rows) => {
|
|
65
66
|
const row = rows[0];
|
|
66
67
|
return row
|
|
67
|
-
? Option.some(parseRow(row, defaultValues))
|
|
68
|
+
? Option.some(parseRow(row, idKey, defaultValues))
|
|
68
69
|
: Option.none();
|
|
69
70
|
}), Effect.withSpan("PgSQL.find [effect-app/infra/Store]", {
|
|
70
71
|
attributes: { "repository.table_name": tableName, "repository.model_name": name, id }
|
|
@@ -92,7 +93,7 @@ function makePgStore({ prefix }) {
|
|
|
92
93
|
};
|
|
93
94
|
});
|
|
94
95
|
}
|
|
95
|
-
return rows.map((r) => parseRow(r, defaultValues));
|
|
96
|
+
return rows.map((r) => parseRow(r, idKey, defaultValues));
|
|
96
97
|
}))), Effect.withSpan("PgSQL.filter [effect-app/infra/Store]", {
|
|
97
98
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
98
99
|
}, { captureStackTrace: false }))));
|
|
@@ -171,4 +172,4 @@ export function PgStoreLayer(cfg) {
|
|
|
171
172
|
return StoreMaker
|
|
172
173
|
.toLayer(makePgStore(cfg));
|
|
173
174
|
}
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvU3RvcmUvU1FML1BnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUE4QixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUFnRyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwRSxNQUFNLFFBQVEsR0FBRyxDQUNmLEdBQXdELEVBQ3hELGFBQStCLEVBQ0EsRUFBRTtJQUNqQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFXLENBQUE7SUFDdkYsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBbUMsQ0FBQTtBQUN0RyxDQUFDLENBQUE7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUNyQixHQUE0QixFQUM1QixLQUFr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
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvU3RvcmUvU1FML1BnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUE4QixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUFnRyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwRSxNQUFNLFFBQVEsR0FBRyxDQUNmLEdBQXdELEVBQ3hELEtBQWtCLEVBQ2xCLGFBQStCLEVBQ0EsRUFBRTtJQUNqQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFXLENBQUE7SUFDdkYsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQW1DLENBQUE7QUFDdkgs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
|
package/dist/Store/SQL.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQL.d.ts","sourceRoot":"","sources":["../../src/Store/SQL.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAK/C,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"SQL.d.ts","sourceRoot":"","sources":["../../src/Store/SQL.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAK/C,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;AA8TvI,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,wEAGlD"}
|
package/dist/Store/SQL.js
CHANGED
|
@@ -8,9 +8,9 @@ import { storeId } from "./Memory.js";
|
|
|
8
8
|
import { StoreMaker } from "./service.js";
|
|
9
9
|
import { buildWhereSQLQuery, logQuery, sqliteDialect } from "./SQL/query.js";
|
|
10
10
|
import { makeETag } from "./utils.js";
|
|
11
|
-
const parseRow = (row, defaultValues) => {
|
|
11
|
+
const parseRow = (row, idKey, defaultValues) => {
|
|
12
12
|
const data = (typeof row.data === "string" ? JSON.parse(row.data) : row.data);
|
|
13
|
-
return { ...defaultValues, ...data, _etag: row._etag ?? undefined };
|
|
13
|
+
return { ...defaultValues, ...data, [idKey]: row.id, _etag: row._etag ?? undefined };
|
|
14
14
|
};
|
|
15
15
|
const parseSelectRow = (row, idKey, defaultValues) => {
|
|
16
16
|
const result = { ...defaultValues };
|
|
@@ -54,13 +54,14 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
54
54
|
const toRow = (e) => {
|
|
55
55
|
const newE = makeETag(e);
|
|
56
56
|
const id = newE[idKey];
|
|
57
|
-
const
|
|
57
|
+
const { _etag, [idKey]: _id, ...rest } = newE;
|
|
58
|
+
const data = JSON.stringify(rest);
|
|
58
59
|
return { id, _etag: newE._etag, data, item: newE };
|
|
59
60
|
};
|
|
60
61
|
const exec = (query, params) => sql.unsafe(query, params).pipe(Effect.orDie);
|
|
61
62
|
const s = {
|
|
62
63
|
all: resolveNamespace.pipe(Effect.flatMap((ns) => exec(`SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = ?`, [ns])
|
|
63
|
-
.pipe(Effect.map((rows) => rows.map((r) => parseRow(r, defaultValues))), Effect.withSpan("SQL.all [effect-app/infra/Store]", {
|
|
64
|
+
.pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), Effect.withSpan("SQL.all [effect-app/infra/Store]", {
|
|
64
65
|
attributes: {
|
|
65
66
|
"repository.table_name": tableName,
|
|
66
67
|
"repository.model_name": name,
|
|
@@ -71,7 +72,7 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
71
72
|
.pipe(Effect.map((rows) => {
|
|
72
73
|
const row = rows[0];
|
|
73
74
|
return row
|
|
74
|
-
? Option.some(parseRow(row, defaultValues))
|
|
75
|
+
? Option.some(parseRow(row, idKey, defaultValues))
|
|
75
76
|
: Option.none();
|
|
76
77
|
}), Effect.withSpan("SQL.find [effect-app/infra/Store]", {
|
|
77
78
|
attributes: { "repository.table_name": tableName, "repository.model_name": name, id }
|
|
@@ -122,7 +123,7 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
122
123
|
};
|
|
123
124
|
});
|
|
124
125
|
}
|
|
125
|
-
return rows.map((r) => parseRow(r, defaultValues));
|
|
126
|
+
return rows.map((r) => parseRow(r, idKey, defaultValues));
|
|
126
127
|
}))), Effect.withSpan("SQL.filter [effect-app/infra/Store]", {
|
|
127
128
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
128
129
|
}, { captureStackTrace: false }))));
|
|
@@ -200,4 +201,4 @@ export function SQLiteStoreLayer(cfg) {
|
|
|
200
201
|
return StoreMaker
|
|
201
202
|
.toLayer(makeSQLStoreInt(sqliteDialect, "JSON")(cfg));
|
|
202
203
|
}
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBOEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDckMsT0FBTyxFQUFnRyxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBbUIsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQyxNQUFNLFFBQVEsR0FBRyxDQUNmLEdBQXVELEVBQ3ZELGFBQStCLEVBQ0EsRUFBRTtJQUNqQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFXLENBQUE7SUFDdkYsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBbUMsQ0FBQTtBQUN0RyxDQUFDLENBQUE7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUNyQixHQUE0QixFQUM1QixLQUFrQixFQUNs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
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBOEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDckMsT0FBTyxFQUFnRyxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBbUIsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQyxNQUFNLFFBQVEsR0FBRyxDQUNmLEdBQXVELEVBQ3ZELEtBQWtCLEVBQ2xCLGFBQStCLEVBQ0EsRUFBRTtJQUNqQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFXLENBQUE7SUFDdkYsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQW1DLENBQUE7QUFDdkgsQ0FBQyxD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.83",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "7.0.1",
|
|
15
15
|
"query-string": "^9.3.1",
|
|
16
|
-
"effect-app": "4.0.0-beta.
|
|
16
|
+
"effect-app": "4.0.0-beta.83"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.9.2",
|
package/src/Store/SQL/Pg.ts
CHANGED
|
@@ -13,10 +13,11 @@ import { buildWhereSQLQuery, logQuery, pgDialect } from "./query.js"
|
|
|
13
13
|
|
|
14
14
|
const parseRow = <Encoded extends FieldValues>(
|
|
15
15
|
row: { id: string; _etag: string | null; data: unknown },
|
|
16
|
+
idKey: PropertyKey,
|
|
16
17
|
defaultValues: Partial<Encoded>
|
|
17
18
|
): PersistenceModelType<Encoded> => {
|
|
18
19
|
const data = (typeof row.data === "string" ? JSON.parse(row.data) : row.data) as object
|
|
19
|
-
return { ...defaultValues, ...data, _etag: row._etag ?? undefined } as PersistenceModelType<Encoded>
|
|
20
|
+
return { ...defaultValues, ...data, [idKey]: row.id, _etag: row._etag ?? undefined } as PersistenceModelType<Encoded>
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
const parseSelectRow = (
|
|
@@ -69,7 +70,8 @@ function makePgStore({ prefix }: StorageConfig) {
|
|
|
69
70
|
const toRow = (e: PM) => {
|
|
70
71
|
const newE = makeETag(e)
|
|
71
72
|
const id = newE[idKey] as string
|
|
72
|
-
const
|
|
73
|
+
const { _etag, [idKey]: _id, ...rest } = newE as any
|
|
74
|
+
const data = JSON.stringify(rest)
|
|
73
75
|
return { id, _etag: newE._etag!, data, item: newE }
|
|
74
76
|
}
|
|
75
77
|
|
|
@@ -80,7 +82,7 @@ function makePgStore({ prefix }: StorageConfig) {
|
|
|
80
82
|
all: resolveNamespace.pipe(Effect.flatMap((ns) =>
|
|
81
83
|
exec(`SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = $1`, [ns])
|
|
82
84
|
.pipe(
|
|
83
|
-
Effect.map((rows) => (rows as any[]).map((r) => parseRow<Encoded>(r, defaultValues))),
|
|
85
|
+
Effect.map((rows) => (rows as any[]).map((r) => parseRow<Encoded>(r, idKey, defaultValues))),
|
|
84
86
|
Effect.withSpan("PgSQL.all [effect-app/infra/Store]", {
|
|
85
87
|
attributes: {
|
|
86
88
|
"repository.table_name": tableName,
|
|
@@ -99,7 +101,7 @@ function makePgStore({ prefix }: StorageConfig) {
|
|
|
99
101
|
Effect.map((rows) => {
|
|
100
102
|
const row = (rows as any[])[0]
|
|
101
103
|
return row
|
|
102
|
-
? Option.some(parseRow<Encoded>(row, defaultValues))
|
|
104
|
+
? Option.some(parseRow<Encoded>(row, idKey, defaultValues))
|
|
103
105
|
: Option.none()
|
|
104
106
|
}),
|
|
105
107
|
Effect.withSpan("PgSQL.find [effect-app/infra/Store]", {
|
|
@@ -155,7 +157,7 @@ function makePgStore({ prefix }: StorageConfig) {
|
|
|
155
157
|
} as M
|
|
156
158
|
})
|
|
157
159
|
}
|
|
158
|
-
return (rows as any[]).map((r) => parseRow<Encoded>(r, defaultValues) as any as M)
|
|
160
|
+
return (rows as any[]).map((r) => parseRow<Encoded>(r, idKey, defaultValues) as any as M)
|
|
159
161
|
})
|
|
160
162
|
)
|
|
161
163
|
),
|
package/src/Store/SQL.ts
CHANGED
|
@@ -11,12 +11,14 @@ import { type FilterArgs, type PersistenceModelType, type StorageConfig, type St
|
|
|
11
11
|
import { buildWhereSQLQuery, logQuery, type SQLDialect, sqliteDialect } from "./SQL/query.js"
|
|
12
12
|
import { makeETag } from "./utils.js"
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
/** @internal */
|
|
15
|
+
export const parseRow = <Encoded extends FieldValues>(
|
|
15
16
|
row: { id: string; _etag: string | null; data: string },
|
|
17
|
+
idKey: PropertyKey,
|
|
16
18
|
defaultValues: Partial<Encoded>
|
|
17
19
|
): PersistenceModelType<Encoded> => {
|
|
18
20
|
const data = (typeof row.data === "string" ? JSON.parse(row.data) : row.data) as object
|
|
19
|
-
return { ...defaultValues, ...data, _etag: row._etag ?? undefined } as PersistenceModelType<Encoded>
|
|
21
|
+
return { ...defaultValues, ...data, [idKey]: row.id, _etag: row._etag ?? undefined } as PersistenceModelType<Encoded>
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
const parseSelectRow = <Encoded extends FieldValues>(
|
|
@@ -76,7 +78,8 @@ function makeSQLStoreInt(dialect: SQLDialect, jsonColumnType: string) {
|
|
|
76
78
|
const toRow = (e: PM) => {
|
|
77
79
|
const newE = makeETag(e)
|
|
78
80
|
const id = newE[idKey] as string
|
|
79
|
-
const
|
|
81
|
+
const { _etag, [idKey]: _id, ...rest } = newE as any
|
|
82
|
+
const data = JSON.stringify(rest)
|
|
80
83
|
return { id, _etag: newE._etag!, data, item: newE }
|
|
81
84
|
}
|
|
82
85
|
|
|
@@ -87,7 +90,7 @@ function makeSQLStoreInt(dialect: SQLDialect, jsonColumnType: string) {
|
|
|
87
90
|
all: resolveNamespace.pipe(Effect.flatMap((ns) =>
|
|
88
91
|
exec(`SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = ?`, [ns])
|
|
89
92
|
.pipe(
|
|
90
|
-
Effect.map((rows) => (rows as any[]).map((r) => parseRow<Encoded>(r, defaultValues))),
|
|
93
|
+
Effect.map((rows) => (rows as any[]).map((r) => parseRow<Encoded>(r, idKey, defaultValues))),
|
|
91
94
|
Effect.withSpan("SQL.all [effect-app/infra/Store]", {
|
|
92
95
|
attributes: {
|
|
93
96
|
"repository.table_name": tableName,
|
|
@@ -105,7 +108,7 @@ function makeSQLStoreInt(dialect: SQLDialect, jsonColumnType: string) {
|
|
|
105
108
|
Effect.map((rows) => {
|
|
106
109
|
const row = (rows as any[])[0]
|
|
107
110
|
return row
|
|
108
|
-
? Option.some(parseRow<Encoded>(row, defaultValues))
|
|
111
|
+
? Option.some(parseRow<Encoded>(row, idKey, defaultValues))
|
|
109
112
|
: Option.none()
|
|
110
113
|
}),
|
|
111
114
|
Effect.withSpan("SQL.find [effect-app/infra/Store]", {
|
|
@@ -189,7 +192,9 @@ function makeSQLStoreInt(dialect: SQLDialect, jsonColumnType: string) {
|
|
|
189
192
|
} as M
|
|
190
193
|
})
|
|
191
194
|
}
|
|
192
|
-
return (rows as any[]).map((r) =>
|
|
195
|
+
return (rows as any[]).map((r) =>
|
|
196
|
+
parseRow<Encoded>(r, idKey, defaultValues) as any as M
|
|
197
|
+
)
|
|
193
198
|
})
|
|
194
199
|
)
|
|
195
200
|
),
|
package/test/sql-store.test.ts
CHANGED
|
@@ -310,13 +310,121 @@ describe("SQL Store (SQLite integration)", () => {
|
|
|
310
310
|
`CREATE TABLE IF NOT EXISTS "test_items" (id TEXT PRIMARY KEY, _etag TEXT, data JSON NOT NULL)`
|
|
311
311
|
)
|
|
312
312
|
db.prepare(`INSERT INTO "test_items" (id, _etag, data) VALUES (?, ?, ?)`)
|
|
313
|
-
.run("1", "etag1", JSON.stringify({
|
|
313
|
+
.run("1", "etag1", JSON.stringify({ name: "Alice", age: 30 }))
|
|
314
314
|
|
|
315
315
|
const rows = db.prepare(`SELECT * FROM "test_items"`).all()
|
|
316
316
|
expect(rows.length).toBe(1)
|
|
317
317
|
expect((rows[0] as any).id).toBe("1")
|
|
318
318
|
}))
|
|
319
319
|
|
|
320
|
+
it("data column should not contain _etag or id", () =>
|
|
321
|
+
withDb((db) => {
|
|
322
|
+
db.exec(
|
|
323
|
+
`CREATE TABLE IF NOT EXISTS "test_clean" (id TEXT PRIMARY KEY, _etag TEXT, data JSON NOT NULL)`
|
|
324
|
+
)
|
|
325
|
+
// Simulate what toRow now produces: data without id or _etag
|
|
326
|
+
const data = { name: "Alice", age: 30, tags: ["admin"] }
|
|
327
|
+
db.prepare(`INSERT INTO "test_clean" (id, _etag, data) VALUES (?, ?, ?)`)
|
|
328
|
+
.run("1", "etag1", JSON.stringify(data))
|
|
329
|
+
|
|
330
|
+
const row = db.prepare(`SELECT * FROM "test_clean" WHERE id = ?`).get("1") as any
|
|
331
|
+
const parsed = JSON.parse(row.data) as any
|
|
332
|
+
expect(parsed).not.toHaveProperty("id")
|
|
333
|
+
expect(parsed).not.toHaveProperty("_etag")
|
|
334
|
+
expect(parsed.name).toBe("Alice")
|
|
335
|
+
expect(parsed.age).toBe(30)
|
|
336
|
+
expect(parsed.tags).toEqual(["admin"])
|
|
337
|
+
// id and _etag come from their own columns
|
|
338
|
+
expect(row.id).toBe("1")
|
|
339
|
+
expect(row._etag).toBe("etag1")
|
|
340
|
+
}))
|
|
341
|
+
|
|
342
|
+
it("backward compat: rows with id/_etag in data still work with queries", () =>
|
|
343
|
+
withDb((db) => {
|
|
344
|
+
db.exec(
|
|
345
|
+
`CREATE TABLE IF NOT EXISTS "test_compat" (id TEXT PRIMARY KEY, _etag TEXT, data JSON NOT NULL)`
|
|
346
|
+
)
|
|
347
|
+
// Old format: id and _etag inside data
|
|
348
|
+
db.prepare(`INSERT INTO "test_compat" (id, _etag, data) VALUES (?, ?, ?)`)
|
|
349
|
+
.run("1", "etag1", JSON.stringify({ id: "1", _etag: "old_etag", name: "Alice", age: 30 }))
|
|
350
|
+
// New format: id and _etag stripped from data
|
|
351
|
+
db.prepare(`INSERT INTO "test_compat" (id, _etag, data) VALUES (?, ?, ?)`)
|
|
352
|
+
.run("2", "etag2", JSON.stringify({ name: "Bob", age: 25 }))
|
|
353
|
+
|
|
354
|
+
// Both should be queryable by name
|
|
355
|
+
const q1 = buildWhereSQLQuery(
|
|
356
|
+
sqliteDialect, "id",
|
|
357
|
+
[{ t: "where", path: "name", op: "eq", value: "Alice" }],
|
|
358
|
+
"test_compat", {}
|
|
359
|
+
)
|
|
360
|
+
const r1 = query(db, q1.sql, q1.params)
|
|
361
|
+
expect(r1.length).toBe(1)
|
|
362
|
+
expect((r1[0] as any).id).toBe("1")
|
|
363
|
+
|
|
364
|
+
const q2 = buildWhereSQLQuery(
|
|
365
|
+
sqliteDialect, "id",
|
|
366
|
+
[{ t: "where", path: "name", op: "eq", value: "Bob" }],
|
|
367
|
+
"test_compat", {}
|
|
368
|
+
)
|
|
369
|
+
const r2 = query(db, q2.sql, q2.params)
|
|
370
|
+
expect(r2.length).toBe(1)
|
|
371
|
+
expect((r2[0] as any).id).toBe("2")
|
|
372
|
+
|
|
373
|
+
// Both queryable by id column
|
|
374
|
+
const q3 = buildWhereSQLQuery(
|
|
375
|
+
sqliteDialect, "id",
|
|
376
|
+
[{ t: "where", path: "id", op: "in", value: ["1", "2"] as any }],
|
|
377
|
+
"test_compat", {}
|
|
378
|
+
)
|
|
379
|
+
expect(query(db, q3.sql, q3.params).length).toBe(2)
|
|
380
|
+
}))
|
|
381
|
+
|
|
382
|
+
it("queries work when data does not contain id", () =>
|
|
383
|
+
withDb((db) => {
|
|
384
|
+
db.exec(
|
|
385
|
+
`CREATE TABLE IF NOT EXISTS "test_noid" (id TEXT PRIMARY KEY, _etag TEXT, data JSON NOT NULL)`
|
|
386
|
+
)
|
|
387
|
+
const people = [
|
|
388
|
+
{ name: "Alice", age: 30 },
|
|
389
|
+
{ name: "Bob", age: 25 },
|
|
390
|
+
{ name: "Charlie", age: 35 }
|
|
391
|
+
]
|
|
392
|
+
const insert = db.prepare(
|
|
393
|
+
`INSERT INTO "test_noid" (id, _etag, data) VALUES (?, ?, ?)`
|
|
394
|
+
)
|
|
395
|
+
people.forEach((p, i) => insert.run(String(i + 1), `etag_${i + 1}`, JSON.stringify(p)))
|
|
396
|
+
|
|
397
|
+
// Filter by field in data
|
|
398
|
+
const q1 = buildWhereSQLQuery(
|
|
399
|
+
sqliteDialect, "id",
|
|
400
|
+
[{ t: "where", path: "age", op: "gt", value: 28 as any }],
|
|
401
|
+
"test_noid", {}
|
|
402
|
+
)
|
|
403
|
+
expect(query(db, q1.sql, q1.params).length).toBe(2) // Alice(30), Charlie(35)
|
|
404
|
+
|
|
405
|
+
// Filter by id column
|
|
406
|
+
const q2 = buildWhereSQLQuery(
|
|
407
|
+
sqliteDialect, "id",
|
|
408
|
+
[{ t: "where", path: "id", op: "eq", value: "2" }],
|
|
409
|
+
"test_noid", {}
|
|
410
|
+
)
|
|
411
|
+
const r2 = query(db, q2.sql, q2.params)
|
|
412
|
+
expect(r2.length).toBe(1)
|
|
413
|
+
expect((r2[0] as any).id).toBe("2")
|
|
414
|
+
expect((JSON.parse((r2[0] as any).data) as any).name).toBe("Bob")
|
|
415
|
+
|
|
416
|
+
// Order + limit still works
|
|
417
|
+
const q3 = buildWhereSQLQuery(
|
|
418
|
+
sqliteDialect, "id", [], "test_noid", {},
|
|
419
|
+
undefined,
|
|
420
|
+
[{ key: "age", direction: "ASC" }] as any,
|
|
421
|
+
undefined, 2
|
|
422
|
+
)
|
|
423
|
+
const r3 = query(db, q3.sql, q3.params)
|
|
424
|
+
expect(r3.length).toBe(2)
|
|
425
|
+
expect((JSON.parse((r3[0] as any).data) as any).name).toBe("Bob") // youngest first
|
|
426
|
+
}))
|
|
427
|
+
|
|
320
428
|
it("query builder generates valid SQL for SQLite", () =>
|
|
321
429
|
withDb((db) => {
|
|
322
430
|
db.exec(
|
|
@@ -334,7 +442,8 @@ describe("SQL Store (SQLite integration)", () => {
|
|
|
334
442
|
`INSERT INTO "test_people" (id, _etag, data) VALUES (?, ?, ?)`
|
|
335
443
|
)
|
|
336
444
|
for (const p of people) {
|
|
337
|
-
|
|
445
|
+
const { id, ...data } = p
|
|
446
|
+
insert.run(id, `etag_${id}`, JSON.stringify(data))
|
|
338
447
|
}
|
|
339
448
|
|
|
340
449
|
// Test eq
|