@antelopejs/postgres 0.2.4 → 0.2.6
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 +38 -52
- package/dist/connection.js +1 -1
- package/dist/connection.js.map +1 -1
- package/dist/implementations/database/context.d.ts +4 -3
- package/dist/implementations/database/context.js.map +1 -1
- package/dist/implementations/database/duplicate-key.d.ts +3 -1
- package/dist/implementations/database/duplicate-key.js +1 -2
- package/dist/implementations/database/duplicate-key.js.map +1 -1
- package/dist/implementations/database/external-discovery.js +17 -8
- package/dist/implementations/database/external-discovery.js.map +1 -1
- package/dist/implementations/database/external-errors.d.ts +10 -1
- package/dist/implementations/database/external-errors.js +57 -27
- package/dist/implementations/database/external-errors.js.map +1 -1
- package/dist/implementations/database/external-measures.js +3 -3
- package/dist/implementations/database/external-measures.js.map +1 -1
- package/dist/implementations/database/external-payload.d.ts +4 -3
- package/dist/implementations/database/external-payload.js +40 -46
- package/dist/implementations/database/external-payload.js.map +1 -1
- package/dist/implementations/database/external-rows.js +4 -1
- package/dist/implementations/database/external-rows.js.map +1 -1
- package/dist/implementations/database/external-types.js +28 -28
- package/dist/implementations/database/external-types.js.map +1 -1
- package/dist/implementations/database/external-writes.js +16 -12
- package/dist/implementations/database/external-writes.js.map +1 -1
- package/dist/implementations/database/feeds.d.ts +2 -1
- package/dist/implementations/database/feeds.js +2 -2
- package/dist/implementations/database/feeds.js.map +1 -1
- package/dist/implementations/database/fields.js +12 -14
- package/dist/implementations/database/fields.js.map +1 -1
- package/dist/implementations/database/instances.d.ts +3 -2
- package/dist/implementations/database/instances.js +4 -4
- package/dist/implementations/database/instances.js.map +1 -1
- package/dist/implementations/database/member.d.ts +41 -0
- package/dist/implementations/database/member.js +91 -0
- package/dist/implementations/database/member.js.map +1 -0
- package/dist/implementations/database/migrate.js.map +1 -1
- package/dist/implementations/database/payload.d.ts +3 -2
- package/dist/implementations/database/payload.js +33 -49
- package/dist/implementations/database/payload.js.map +1 -1
- package/dist/implementations/database/pipeline.js +4 -5
- package/dist/implementations/database/pipeline.js.map +1 -1
- package/dist/implementations/database/query.d.ts +4 -3
- package/dist/implementations/database/query.js +28 -22
- package/dist/implementations/database/query.js.map +1 -1
- package/dist/implementations/database/result.d.ts +6 -2
- package/dist/implementations/database/result.js +23 -19
- package/dist/implementations/database/result.js.map +1 -1
- package/dist/implementations/database/schema.js +30 -31
- package/dist/implementations/database/schema.js.map +1 -1
- package/dist/implementations/database/selection.js +33 -32
- package/dist/implementations/database/selection.js.map +1 -1
- package/dist/implementations/database/stage.js +4 -3
- package/dist/implementations/database/stage.js.map +1 -1
- package/dist/implementations/database/stages-aggregate.js +2 -1
- package/dist/implementations/database/stages-aggregate.js.map +1 -1
- package/dist/implementations/database/stages-array.js +1 -4
- package/dist/implementations/database/stages-array.js.map +1 -1
- package/dist/implementations/database/stages-core.js +9 -2
- package/dist/implementations/database/stages-core.js.map +1 -1
- package/dist/implementations/database/stages-date.js.map +1 -1
- package/dist/implementations/database/stages-group.js +16 -17
- package/dist/implementations/database/stages-group.js.map +1 -1
- package/dist/implementations/database/stages-join.js +6 -8
- package/dist/implementations/database/stages-join.js.map +1 -1
- package/dist/implementations/database/stages-numeric.js +4 -3
- package/dist/implementations/database/stages-numeric.js.map +1 -1
- package/dist/implementations/database/stages-projection.js +4 -2
- package/dist/implementations/database/stages-projection.js.map +1 -1
- package/dist/implementations/database/stages-rows.js +6 -4
- package/dist/implementations/database/stages-rows.js.map +1 -1
- package/dist/implementations/database/stages-selection.js +8 -6
- package/dist/implementations/database/stages-selection.js.map +1 -1
- package/dist/implementations/database/stages-string.js +4 -2
- package/dist/implementations/database/stages-string.js.map +1 -1
- package/dist/implementations/database/subquery.js +1 -1
- package/dist/implementations/database/subquery.js.map +1 -1
- package/dist/implementations/database/utils.d.ts +10 -2
- package/dist/implementations/database/utils.js +6 -1
- package/dist/implementations/database/utils.js.map +1 -1
- package/dist/implementations/database/value.d.ts +14 -6
- package/dist/implementations/database/value.js +58 -67
- package/dist/implementations/database/value.js.map +1 -1
- package/dist/implementations/database/writes-atomic.js +9 -3
- package/dist/implementations/database/writes-atomic.js.map +1 -1
- package/dist/implementations/database/writes-identity.js +11 -9
- package/dist/implementations/database/writes-identity.js.map +1 -1
- package/dist/implementations/database/writes-insert.js +11 -16
- package/dist/implementations/database/writes-insert.js.map +1 -1
- package/dist/implementations/database/writes-shared.d.ts +2 -2
- package/dist/implementations/database/writes-shared.js +4 -7
- package/dist/implementations/database/writes-shared.js.map +1 -1
- package/dist/implementations/database/writes.js +8 -8
- package/dist/implementations/database/writes.js.map +1 -1
- package/dist/test/contention.test.js +1 -2
- package/dist/test/contention.test.js.map +1 -1
- package/dist/test/indexes.test.js.map +1 -1
- package/dist/test/typed-operations.test.d.ts +1 -0
- package/dist/test/typed-operations.test.js +103 -0
- package/dist/test/typed-operations.test.js.map +1 -0
- package/dist/test/unit/config.spec.js +4 -2
- package/dist/test/unit/config.spec.js.map +1 -1
- package/dist/test/unit/expression-array-fixture.d.ts +19 -1
- package/dist/test/unit/expression-array-fixture.js.map +1 -1
- package/dist/test/unit/expression-array-walk.spec.js +4 -4
- package/dist/test/unit/expression-array-walk.spec.js.map +1 -1
- package/dist/test/unit/expression-array.spec.js +1 -1
- package/dist/test/unit/expression-array.spec.js.map +1 -1
- package/dist/test/unit/expression-date.spec.js +10 -11
- package/dist/test/unit/expression-date.spec.js.map +1 -1
- package/dist/test/unit/expression-numeric.spec.js +7 -10
- package/dist/test/unit/expression-numeric.spec.js.map +1 -1
- package/dist/test/unit/expression-object.spec.js.map +1 -1
- package/dist/test/unit/expression-predicate.spec.js +6 -5
- package/dist/test/unit/expression-predicate.spec.js.map +1 -1
- package/dist/test/unit/expression-string.spec.js +13 -4
- package/dist/test/unit/expression-string.spec.js.map +1 -1
- package/dist/test/unit/expression.spec.js +7 -1
- package/dist/test/unit/expression.spec.js.map +1 -1
- package/dist/test/unit/external-types.spec.js +10 -0
- package/dist/test/unit/external-types.spec.js.map +1 -1
- package/dist/test/unit/feeds.spec.js +18 -6
- package/dist/test/unit/feeds.spec.js.map +1 -1
- package/dist/test/unit/fields.spec.js +3 -6
- package/dist/test/unit/fields.spec.js.map +1 -1
- package/dist/test/unit/member.spec.d.ts +1 -0
- package/dist/test/unit/member.spec.js +234 -0
- package/dist/test/unit/member.spec.js.map +1 -0
- package/dist/test/unit/payload.spec.js +53 -48
- package/dist/test/unit/payload.spec.js.map +1 -1
- package/dist/test/unit/pipeline-fixture.js +5 -8
- package/dist/test/unit/pipeline-fixture.js.map +1 -1
- package/dist/test/unit/pipeline-group.spec.js.map +1 -1
- package/dist/test/unit/pipeline-lambda-ids.spec.d.ts +1 -0
- package/dist/test/unit/pipeline-lambda-ids.spec.js +35 -0
- package/dist/test/unit/pipeline-lambda-ids.spec.js.map +1 -0
- package/dist/test/unit/pipeline-lookup.spec.js +7 -7
- package/dist/test/unit/pipeline-lookup.spec.js.map +1 -1
- package/dist/test/unit/pipeline-projection.spec.js +5 -5
- package/dist/test/unit/pipeline-projection.spec.js.map +1 -1
- package/dist/test/unit/pipeline-selection.spec.js +44 -29
- package/dist/test/unit/pipeline-selection.spec.js.map +1 -1
- package/dist/test/unit/pipeline-stages.spec.js +2 -2
- package/dist/test/unit/pipeline-stages.spec.js.map +1 -1
- package/dist/test/unit/pipeline-substream.spec.js +2 -1
- package/dist/test/unit/pipeline-substream.spec.js.map +1 -1
- package/dist/test/unit/pipeline.spec.js +7 -7
- package/dist/test/unit/pipeline.spec.js.map +1 -1
- package/dist/test/unit/result.spec.js +4 -0
- package/dist/test/unit/result.spec.js.map +1 -1
- package/dist/test/unit/schema.spec.js +18 -0
- package/dist/test/unit/schema.spec.js.map +1 -1
- package/dist/test/unit/selection.spec.js +7 -9
- package/dist/test/unit/selection.spec.js.map +1 -1
- package/dist/test/unit/utils.spec.js +8 -6
- package/dist/test/unit/utils.spec.js.map +1 -1
- package/dist/test/unit/value.spec.js +46 -27
- package/dist/test/unit/value.spec.js.map +1 -1
- package/dist/test/unit/writes-insert.spec.js +2 -3
- package/dist/test/unit/writes-insert.spec.js.map +1 -1
- package/dist/test/unit/writes-replace.spec.js +1 -2
- package/dist/test/unit/writes-replace.spec.js.map +1 -1
- package/dist/test/unit/writes-update.spec.js +2 -3
- package/dist/test/unit/writes-update.spec.js.map +1 -1
- package/dist/test-external/reads.test.js.map +1 -1
- package/package.json +9 -8
- package/dist/test/unit/invalid-fixture.d.ts +0 -3
- package/dist/test/unit/invalid-fixture.js +0 -11
- package/dist/test/unit/invalid-fixture.js.map +0 -1
|
@@ -10,6 +10,7 @@ exports.CompileCursor = CompileCursor;
|
|
|
10
10
|
exports.ReadCursor = ReadCursor;
|
|
11
11
|
exports.CloseCursor = CloseCursor;
|
|
12
12
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
13
|
+
const pg_1 = require("pg");
|
|
13
14
|
const atomic_1 = require("@antelopejs/interface-database/atomic");
|
|
14
15
|
const connection_1 = require("../../connection");
|
|
15
16
|
const config_1 = require("../../config");
|
|
@@ -37,29 +38,35 @@ const guards_1 = require("./guards");
|
|
|
37
38
|
const MISSING_SCHEMA_ID = "Lifecycle query is missing its schema id";
|
|
38
39
|
const LIFECYCLE_STAGE_COUNT = 2;
|
|
39
40
|
const NO_ROWS = 0;
|
|
40
|
-
const LIFECYCLE_HANDLERS =
|
|
41
|
-
[utils_1.CREATE_INSTANCE
|
|
42
|
-
[
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const EXTERNAL_LIFECYCLE =
|
|
49
|
-
[
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
41
|
+
const LIFECYCLE_HANDLERS = new Map([
|
|
42
|
+
[utils_1.CREATE_INSTANCE, instances_1.CreateInstance],
|
|
43
|
+
[
|
|
44
|
+
utils_1.DESTROY_INSTANCE,
|
|
45
|
+
(schemaId, stage) => (0, instances_1.DestroyInstance)(schemaId, (0, schema_1.GetTableNames)(schemaId), stage),
|
|
46
|
+
],
|
|
47
|
+
["listInstances", instances_1.ListInstances],
|
|
48
|
+
]);
|
|
49
|
+
const EXTERNAL_LIFECYCLE = new Map([
|
|
50
|
+
[
|
|
51
|
+
utils_1.CREATE_INSTANCE,
|
|
52
|
+
(_schemaId, stage) => Promise.reject((0, external_refusals_1.ExternalInstanceRefusal)(stage.stage)),
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
utils_1.DESTROY_INSTANCE,
|
|
56
|
+
(_schemaId, stage) => Promise.reject((0, external_refusals_1.ExternalInstanceRefusal)(stage.stage)),
|
|
57
|
+
],
|
|
58
|
+
["listInstances", () => Promise.resolve([])],
|
|
59
|
+
]);
|
|
53
60
|
function Lifecycle(stages) {
|
|
54
61
|
if (stages.length !== LIFECYCLE_STAGE_COUNT ||
|
|
55
62
|
stages[0].stage !== selection_1.SCHEMA_STAGE) {
|
|
56
63
|
return undefined;
|
|
57
64
|
}
|
|
58
65
|
const stage = stages[1];
|
|
59
|
-
|
|
66
|
+
const handler = ((0, config_1.IsExternal)() ? EXTERNAL_LIFECYCLE : LIFECYCLE_HANDLERS).get(stage.stage);
|
|
67
|
+
if (!handler) {
|
|
60
68
|
return undefined;
|
|
61
69
|
}
|
|
62
|
-
const handler = ((0, config_1.IsExternal)() ? EXTERNAL_LIFECYCLE : LIFECYCLE_HANDLERS)[stage.stage];
|
|
63
70
|
const schemaId = stages[0].options?.id;
|
|
64
71
|
(0, node_assert_1.default)((0, guards_1.IsString)(schemaId), MISSING_SCHEMA_ID);
|
|
65
72
|
return (0, schema_1.WaitForSchemaReady)(schemaId).then(() => handler(schemaId, stage));
|
|
@@ -79,10 +86,6 @@ function DecodeResult(relation, rows) {
|
|
|
79
86
|
}
|
|
80
87
|
return decoded.length > 0 ? decoded[0] : relation.absent;
|
|
81
88
|
}
|
|
82
|
-
async function RunRead(relation, context) {
|
|
83
|
-
const result = await (0, connection_1.Query)((0, render_1.Render)(relation), context.params.all());
|
|
84
|
-
return DecodeResult(relation, result.rows);
|
|
85
|
-
}
|
|
86
89
|
async function RunWrite(target, stage, context) {
|
|
87
90
|
const statement = (0, writes_1.CompileWrite)(target, stage, context);
|
|
88
91
|
if (!statement.sql) {
|
|
@@ -97,7 +100,9 @@ async function RunWrite(target, stage, context) {
|
|
|
97
100
|
return await RunManagedWrite(statement, stage, context);
|
|
98
101
|
}
|
|
99
102
|
catch (err) {
|
|
100
|
-
throw await (
|
|
103
|
+
throw await (err instanceof pg_1.DatabaseError
|
|
104
|
+
? (0, duplicate_key_1.DuplicateKeyFailure)(err, target.origin)
|
|
105
|
+
: err);
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
108
|
async function RunManagedWrite(statement, stage, context) {
|
|
@@ -128,7 +133,7 @@ async function RunExternalWrite(statement, external, context) {
|
|
|
128
133
|
return result.rowCount ?? NO_ROWS;
|
|
129
134
|
}
|
|
130
135
|
catch (err) {
|
|
131
|
-
throw (0, external_errors_1.ExternalWriteFailure)(err, external);
|
|
136
|
+
throw (0, external_errors_1.IsDatabaseError)(err) ? (0, external_errors_1.ExternalWriteFailure)(err, external) : err;
|
|
132
137
|
}
|
|
133
138
|
}
|
|
134
139
|
function QueryContext() {
|
|
@@ -158,7 +163,8 @@ async function RunQuery(stages) {
|
|
|
158
163
|
}
|
|
159
164
|
const compiled = await ReadyQuery(stages, QueryContext());
|
|
160
165
|
if (!compiled.split.write) {
|
|
161
|
-
|
|
166
|
+
const result = await (0, connection_1.Query)((0, render_1.Render)(compiled.relation), compiled.context.params.all());
|
|
167
|
+
return DecodeResult(compiled.relation, result.rows);
|
|
162
168
|
}
|
|
163
169
|
if (compiled.root.external &&
|
|
164
170
|
compiled.split.write.stage === writes_atomic_1.ATOMIC_MUTATION) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/implementations/database/query.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/implementations/database/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { TableModel } from "./fields";
|
|
2
2
|
import type { SqlType } from "./types";
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type RowValue = string | number | boolean | Date | Buffer | null | undefined | RowValue[] | RowObject;
|
|
4
|
+
export interface RowObject {
|
|
5
|
+
[name: string]: RowValue;
|
|
6
|
+
}
|
|
7
|
+
export declare function ReviveValue(value: RowValue, type: SqlType): RowValue;
|
|
8
|
+
export declare function DecodeRow(row: RowObject, table: TableModel): RowObject;
|
|
@@ -4,11 +4,16 @@ exports.ReviveValue = ReviveValue;
|
|
|
4
4
|
exports.DecodeRow = DecodeRow;
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
const guards_1 = require("./guards");
|
|
7
|
+
function InstantOf(cell) {
|
|
8
|
+
return (0, guards_1.IsNumber)(cell) || (0, guards_1.IsString)(cell)
|
|
9
|
+
? new Date(cell)
|
|
10
|
+
: new Date(Number.NaN);
|
|
11
|
+
}
|
|
7
12
|
function ReviveTimestamp(value) {
|
|
8
13
|
if (value instanceof Date) {
|
|
9
14
|
return value;
|
|
10
15
|
}
|
|
11
|
-
const date = (
|
|
16
|
+
const date = InstantOf(value);
|
|
12
17
|
return Number.isNaN(date.getTime()) ? value : date;
|
|
13
18
|
}
|
|
14
19
|
function ReviveValue(value, type) {
|
|
@@ -22,45 +27,44 @@ function ReviveValue(value, type) {
|
|
|
22
27
|
return Array.isArray(value)
|
|
23
28
|
? value.map((item) => ReviveValue(item, type.elem))
|
|
24
29
|
: value;
|
|
25
|
-
case "json":
|
|
26
|
-
|
|
30
|
+
case "json": {
|
|
31
|
+
if (!type.keys || !(0, guards_1.IsDocument)(value)) {
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
const result = { ...value };
|
|
35
|
+
for (const [name, keyType] of Object.entries(type.keys)) {
|
|
36
|
+
if (Object.hasOwn(result, name)) {
|
|
37
|
+
result[name] = ReviveValue(result[name], keyType);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
27
42
|
default:
|
|
28
43
|
return value;
|
|
29
44
|
}
|
|
30
45
|
}
|
|
31
|
-
function ReviveKeyTypes(value, keyTypes) {
|
|
32
|
-
if (!keyTypes || !(0, guards_1.IsDocument)(value)) {
|
|
33
|
-
return value;
|
|
34
|
-
}
|
|
35
|
-
const result = { ...value };
|
|
36
|
-
for (const [name, type] of Object.entries(keyTypes)) {
|
|
37
|
-
if (Object.hasOwn(result, name)) {
|
|
38
|
-
result[name] = ReviveValue(result[name], type);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
46
|
function DecodeRow(row, table) {
|
|
44
47
|
const document = {};
|
|
45
|
-
const id
|
|
48
|
+
const { [utils_1.ID_COLUMN]: id, [utils_1.INSTANCE_COLUMN]: instance, [utils_1.EXTRA_COLUMN]: overflow, } = row;
|
|
46
49
|
if (id !== null && id !== undefined) {
|
|
47
50
|
document[utils_1.ID_COLUMN] = id;
|
|
48
51
|
}
|
|
49
|
-
const instance = row[utils_1.INSTANCE_COLUMN];
|
|
50
52
|
if (instance !== null &&
|
|
51
53
|
instance !== undefined &&
|
|
52
54
|
instance !== utils_1.DEFAULT_INSTANCE_ID) {
|
|
53
55
|
document[utils_1.INSTANCE_COLUMN] = instance;
|
|
54
56
|
}
|
|
55
57
|
for (const [name, spec] of Object.entries(table.fields)) {
|
|
56
|
-
const value = row
|
|
58
|
+
const value = Object.hasOwn(row, spec.column)
|
|
59
|
+
? row[spec.column]
|
|
60
|
+
: undefined;
|
|
57
61
|
if (value === null || value === undefined) {
|
|
58
62
|
continue;
|
|
59
63
|
}
|
|
60
64
|
document[name] = ReviveValue(value, spec.type);
|
|
61
65
|
}
|
|
62
66
|
const extra = {
|
|
63
|
-
...
|
|
67
|
+
...overflow,
|
|
64
68
|
};
|
|
65
69
|
delete extra[utils_1.ID_COLUMN];
|
|
66
70
|
delete extra[utils_1.INSTANCE_COLUMN];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/implementations/database/result.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/implementations/database/result.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,11 +20,11 @@ const external_schema_1 = require("./external-schema");
|
|
|
20
20
|
const ddl_1 = require("./ddl");
|
|
21
21
|
const migrate_1 = require("./migrate");
|
|
22
22
|
const fields_1 = require("./fields");
|
|
23
|
-
const definitions =
|
|
24
|
-
const schemaModels =
|
|
25
|
-
const scanNotices =
|
|
26
|
-
const ready =
|
|
27
|
-
const indexing =
|
|
23
|
+
const definitions = new Map();
|
|
24
|
+
const schemaModels = new Map();
|
|
25
|
+
const scanNotices = new Map();
|
|
26
|
+
const ready = new Map();
|
|
27
|
+
const indexing = new Map();
|
|
28
28
|
const guardedWrites = new Set();
|
|
29
29
|
function UnservedScanWarning(schemaId, tableId, indexId) {
|
|
30
30
|
return `A CROSS_INSTANCE query on '${schemaId}.${tableId}' scans index '${indexId}', which is not declared crossInstance: its physical index leads with the instance, so the query stays correct but may be slow. Set crossInstance: true on the index to keep such queries fast`;
|
|
@@ -58,8 +58,8 @@ function QuietNotices(schema) {
|
|
|
58
58
|
return notices;
|
|
59
59
|
}
|
|
60
60
|
async function InitializeExternal(schemaId, schema, parsed) {
|
|
61
|
-
schemaModels
|
|
62
|
-
scanNotices
|
|
61
|
+
schemaModels.set(schemaId, await (0, external_schema_1.DescribeExternalSchema)(schemaId, schema, parsed));
|
|
62
|
+
scanNotices.set(schemaId, QuietNotices(schema));
|
|
63
63
|
}
|
|
64
64
|
async function initialize(schemaId, schema) {
|
|
65
65
|
const model = (0, fields_1.ParseSchema)(schemaId, schema);
|
|
@@ -67,10 +67,10 @@ async function initialize(schemaId, schema) {
|
|
|
67
67
|
await InitializeExternal(schemaId, schema, model);
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
|
-
schemaModels
|
|
71
|
-
scanNotices
|
|
70
|
+
schemaModels.set(schemaId, model);
|
|
71
|
+
scanNotices.set(schemaId, SchemaScanNotices(schemaId, schema, model));
|
|
72
72
|
const plans = await (0, migrate_1.ConvergeTables)(schemaId, schema, model);
|
|
73
|
-
indexing
|
|
73
|
+
indexing.set(schemaId, (0, migrate_1.BuildIndexes)(schemaId, plans));
|
|
74
74
|
guardedWrites.delete(schemaId);
|
|
75
75
|
if (DeclaresUniqueIndex(schema)) {
|
|
76
76
|
guardedWrites.add(schemaId);
|
|
@@ -81,26 +81,26 @@ function DeclaresUniqueIndex(schema) {
|
|
|
81
81
|
}
|
|
82
82
|
exports.Schemas = {
|
|
83
83
|
register(schemaId, schema) {
|
|
84
|
-
definitions
|
|
84
|
+
definitions.set(schemaId, schema);
|
|
85
85
|
const pending = initialize(schemaId, schema).catch((err) => {
|
|
86
|
-
if (ready
|
|
87
|
-
delete
|
|
88
|
-
delete
|
|
89
|
-
delete
|
|
86
|
+
if (ready.get(schemaId) === pending) {
|
|
87
|
+
definitions.delete(schemaId);
|
|
88
|
+
schemaModels.delete(schemaId);
|
|
89
|
+
scanNotices.delete(schemaId);
|
|
90
90
|
guardedWrites.delete(schemaId);
|
|
91
91
|
}
|
|
92
92
|
throw err;
|
|
93
93
|
});
|
|
94
|
-
ready
|
|
94
|
+
ready.set(schemaId, pending);
|
|
95
95
|
pending.catch(() => { });
|
|
96
96
|
return pending;
|
|
97
97
|
},
|
|
98
98
|
unregister(schemaId) {
|
|
99
|
-
delete
|
|
100
|
-
delete
|
|
101
|
-
delete
|
|
102
|
-
delete
|
|
103
|
-
delete
|
|
99
|
+
definitions.delete(schemaId);
|
|
100
|
+
schemaModels.delete(schemaId);
|
|
101
|
+
scanNotices.delete(schemaId);
|
|
102
|
+
ready.delete(schemaId);
|
|
103
|
+
indexing.delete(schemaId);
|
|
104
104
|
guardedWrites.delete(schemaId);
|
|
105
105
|
},
|
|
106
106
|
};
|
|
@@ -111,11 +111,12 @@ function MissingTable(schemaId, tableId) {
|
|
|
111
111
|
return `Unknown table '${schemaId}.${tableId}'`;
|
|
112
112
|
}
|
|
113
113
|
function WaitForSchemaReady(schemaId) {
|
|
114
|
-
return
|
|
114
|
+
return ready.get(schemaId) ?? Promise.resolve();
|
|
115
115
|
}
|
|
116
116
|
function GetSchema(schemaId) {
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
const schema = definitions.get(schemaId);
|
|
118
|
+
(0, node_assert_1.default)(schema, MissingSchema(schemaId));
|
|
119
|
+
return schema;
|
|
119
120
|
}
|
|
120
121
|
function GetTable(schemaId, tableId) {
|
|
121
122
|
const schema = GetSchema(schemaId);
|
|
@@ -123,8 +124,8 @@ function GetTable(schemaId, tableId) {
|
|
|
123
124
|
return schema[tableId];
|
|
124
125
|
}
|
|
125
126
|
function GetTableModel(schemaId, tableId) {
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
const model = schemaModels.get(schemaId);
|
|
128
|
+
(0, node_assert_1.default)(model, MissingSchema(schemaId));
|
|
128
129
|
(0, node_assert_1.default)(Object.hasOwn(model, tableId), MissingTable(schemaId, tableId));
|
|
129
130
|
return model[tableId];
|
|
130
131
|
}
|
|
@@ -140,16 +141,14 @@ function GetIndex(schemaId, tableId, indexId, onlyIndex) {
|
|
|
140
141
|
return { fields: [indexId] };
|
|
141
142
|
}
|
|
142
143
|
function GetCrossInstanceScanNotice(schemaId, tableId) {
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
const notices = scanNotices.get(schemaId);
|
|
145
|
+
(0, node_assert_1.default)(notices, MissingSchema(schemaId));
|
|
145
146
|
(0, node_assert_1.default)(Object.hasOwn(notices, tableId), MissingTable(schemaId, tableId));
|
|
146
147
|
return notices[tableId];
|
|
147
148
|
}
|
|
148
149
|
async function WaitForIndexes(schemaId) {
|
|
149
150
|
await WaitForSchemaReady(schemaId);
|
|
150
|
-
|
|
151
|
-
await indexing[schemaId];
|
|
152
|
-
}
|
|
151
|
+
await indexing.get(schemaId);
|
|
153
152
|
}
|
|
154
153
|
async function WaitForUniqueIndexes(schemaId) {
|
|
155
154
|
if (guardedWrites.has(schemaId)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/implementations/database/schema.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/implementations/database/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,10 @@ exports.RegisteredOrigin = RegisteredOrigin;
|
|
|
8
8
|
exports.BuildRoot = BuildRoot;
|
|
9
9
|
exports.CollectSchemaIds = CollectSchemaIds;
|
|
10
10
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
11
|
-
const common_1 = require("@antelopejs/interface-database/common");
|
|
12
11
|
const schema_1 = require("@antelopejs/interface-database/schema");
|
|
13
12
|
const types_1 = require("./types");
|
|
14
13
|
const ddl_1 = require("./ddl");
|
|
15
|
-
const
|
|
14
|
+
const member_1 = require("./member");
|
|
16
15
|
const identifier_1 = require("./identifier");
|
|
17
16
|
const sql_1 = require("./sql");
|
|
18
17
|
const relation_1 = require("./relation");
|
|
@@ -42,11 +41,12 @@ function RootStage(stages, expected, index) {
|
|
|
42
41
|
return stages[index];
|
|
43
42
|
}
|
|
44
43
|
function RootId(stage) {
|
|
45
|
-
const id = stage
|
|
44
|
+
const id = (0, utils_1.OptionsOf)(stage)?.id;
|
|
46
45
|
(0, node_assert_1.default)((0, guards_1.IsString)(id), `The '${stage.stage}' stage of a table query is missing its id`);
|
|
47
46
|
return id;
|
|
48
47
|
}
|
|
49
|
-
function RootInstanceScope(
|
|
48
|
+
function RootInstanceScope(instance, context) {
|
|
49
|
+
const id = (0, utils_1.OptionsOf)(instance)?.id;
|
|
50
50
|
if (id === schema_1.CROSS_INSTANCE) {
|
|
51
51
|
return schema_1.CROSS_INSTANCE;
|
|
52
52
|
}
|
|
@@ -56,10 +56,8 @@ function RootInstanceScope(id, context) {
|
|
|
56
56
|
function InstancePredicate(alias, value) {
|
|
57
57
|
return `(${(0, sql_1.QualifiedColumn)(alias, utils_1.INSTANCE_COLUMN)} = ${value.sql})`;
|
|
58
58
|
}
|
|
59
|
-
function
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
function RefuseNamedInstance(external, id) {
|
|
59
|
+
function RefuseNamedInstance(external, instance) {
|
|
60
|
+
const id = (0, utils_1.OptionsOf)(instance)?.id;
|
|
63
61
|
const unscoped = [
|
|
64
62
|
undefined,
|
|
65
63
|
null,
|
|
@@ -67,11 +65,11 @@ function RefuseNamedInstance(external, id) {
|
|
|
67
65
|
utils_1.DEFAULT_INSTANCE_ID,
|
|
68
66
|
];
|
|
69
67
|
if (!unscoped.includes(id)) {
|
|
70
|
-
throw
|
|
68
|
+
throw new Error(`${(0, identifier_1.QualifiedName)(external.schema, external.table)} is an external relation and has no instances, so instance '${String(id)}' names nothing: read it through the default instance`);
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
|
-
function ExternalRoot(origin, external,
|
|
74
|
-
RefuseNamedInstance(external,
|
|
71
|
+
function ExternalRoot(origin, external, instance, context) {
|
|
72
|
+
RefuseNamedInstance(external, instance);
|
|
75
73
|
const from = (0, identifier_1.QualifiedName)(external.schema, external.table);
|
|
76
74
|
return (0, relation_1.TableRelation)(from, context.nextAlias(), origin);
|
|
77
75
|
}
|
|
@@ -84,12 +82,12 @@ function BuildRoot(stages, context) {
|
|
|
84
82
|
const rest = stages.slice(ROOT_STAGES.length);
|
|
85
83
|
const external = origin.model.external;
|
|
86
84
|
if (external) {
|
|
87
|
-
const relation = ExternalRoot(origin, external, instance
|
|
85
|
+
const relation = ExternalRoot(origin, external, instance, context);
|
|
88
86
|
return { relation, rest, instance: schema_1.CROSS_INSTANCE, external };
|
|
89
87
|
}
|
|
90
88
|
const alias = context.nextAlias();
|
|
91
89
|
const relation = (0, relation_1.TableRelation)((0, identifier_1.TableReference)(schemaId, tableId), alias, origin);
|
|
92
|
-
const scope = RootInstanceScope(instance
|
|
90
|
+
const scope = RootInstanceScope(instance, context);
|
|
93
91
|
relation.crossInstance = scope === schema_1.CROSS_INSTANCE;
|
|
94
92
|
if (scope !== schema_1.CROSS_INSTANCE) {
|
|
95
93
|
relation.where.push(InstancePredicate(alias, scope));
|
|
@@ -97,33 +95,36 @@ function BuildRoot(stages, context) {
|
|
|
97
95
|
return { relation, rest, instance: scope };
|
|
98
96
|
}
|
|
99
97
|
function CollectValue(value, walk) {
|
|
100
|
-
if (!(
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
walk.visited.add(value);
|
|
104
|
-
if (value instanceof common_1.StagedObject) {
|
|
105
|
-
CollectInto(value.build(), walk);
|
|
98
|
+
if (!("identity" in value) || walk.visited.has(value.identity)) {
|
|
106
99
|
return;
|
|
107
100
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
CollectValue(item, walk);
|
|
117
|
-
|
|
101
|
+
walk.visited.add(value.identity);
|
|
102
|
+
switch (value.kind) {
|
|
103
|
+
case "proxy":
|
|
104
|
+
case "query":
|
|
105
|
+
case "staged":
|
|
106
|
+
CollectInto(value.value.build(), walk);
|
|
107
|
+
return;
|
|
108
|
+
case "list":
|
|
109
|
+
value.items().forEach((item) => CollectValue(item, walk));
|
|
110
|
+
return;
|
|
111
|
+
case "record":
|
|
112
|
+
for (const [, item] of value.document.entries()) {
|
|
113
|
+
CollectValue(item, walk);
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
default:
|
|
117
|
+
return value;
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
function CollectInto(stages, walk) {
|
|
121
121
|
for (const stage of stages) {
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
const id = (0, utils_1.OptionsOf)(stage)?.id;
|
|
123
|
+
if (stage.stage === exports.SCHEMA_STAGE && (0, guards_1.IsString)(id)) {
|
|
124
|
+
walk.ids.add(id);
|
|
124
125
|
}
|
|
125
126
|
for (const arg of stage.args ?? []) {
|
|
126
|
-
CollectValue(arg, walk);
|
|
127
|
+
CollectValue((0, member_1.ClassifyMember)(arg), walk);
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/implementations/database/selection.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/implementations/database/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ exports.FieldOf = FieldOf;
|
|
|
12
12
|
const value_1 = require("./value");
|
|
13
13
|
const row_source_1 = require("./row-source");
|
|
14
14
|
const guards_1 = require("./guards");
|
|
15
|
+
const member_1 = require("./member");
|
|
15
16
|
exports.FIRST_OPERAND = 0;
|
|
16
17
|
exports.SECOND_OPERAND = 1;
|
|
17
18
|
const EMPTY_STATE = "Expression has no value to operate on";
|
|
@@ -49,7 +50,7 @@ function FieldNames(stage, index = exports.FIRST_OPERAND) {
|
|
|
49
50
|
function Lift(handler) {
|
|
50
51
|
return (state, stage, context) => {
|
|
51
52
|
const value = AsValue(state);
|
|
52
|
-
const args = stage.args.map((arg) => (0, value_1.DecodeValue)(arg, context));
|
|
53
|
+
const args = stage.args.map((arg) => (0, value_1.DecodeValue)((0, member_1.ClassifyMember)(arg), context));
|
|
53
54
|
return { current: handler(value, args, stage, context) };
|
|
54
55
|
};
|
|
55
56
|
}
|
|
@@ -66,12 +67,12 @@ function BuildStages(operators, build) {
|
|
|
66
67
|
return stages;
|
|
67
68
|
}
|
|
68
69
|
function FieldOf(source, stage, context) {
|
|
69
|
-
const def = (0, value_1.DecodeValue)(stage.args[exports.SECOND_OPERAND], context);
|
|
70
|
+
const def = (0, value_1.DecodeValue)((0, member_1.ClassifyMember)(stage.args[exports.SECOND_OPERAND]), context);
|
|
70
71
|
const name = stage.args[exports.FIRST_OPERAND];
|
|
71
72
|
if ((0, guards_1.IsString)(name)) {
|
|
72
73
|
return source.field(name, def);
|
|
73
74
|
}
|
|
74
|
-
const key = RequireOperand((0, value_1.DecodeValue)(name, context), stage, exports.FIRST_OPERAND);
|
|
75
|
+
const key = RequireOperand((0, value_1.DecodeValue)((0, member_1.ClassifyMember)(name), context), stage, exports.FIRST_OPERAND);
|
|
75
76
|
return source.dynamicField(key, def);
|
|
76
77
|
}
|
|
77
78
|
//# sourceMappingURL=stage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../../../src/implementations/database/stage.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../../../src/implementations/database/stage.ts"],"names":[],"mappings":"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"}
|