joist-orm 0.1.538 → 1.0.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/build/{BaseEntity.d.ts → src/BaseEntity.d.ts} +2 -1
- package/build/{BaseEntity.js → src/BaseEntity.js} +13 -9
- package/build/src/BaseEntity.js.map +1 -0
- package/build/{EntityManager.d.ts → src/EntityManager.d.ts} +139 -110
- package/build/{EntityManager.js → src/EntityManager.js} +281 -262
- package/build/src/EntityManager.js.map +1 -0
- package/build/{QueryBuilder.d.ts → src/QueryBuilder.d.ts} +53 -3
- package/build/src/QueryBuilder.js +341 -0
- package/build/src/QueryBuilder.js.map +1 -0
- package/build/src/Todo.d.ts +25 -0
- package/build/src/Todo.js +52 -0
- package/build/src/Todo.js.map +1 -0
- package/build/src/changes.d.ts +34 -0
- package/build/src/changes.js +37 -0
- package/build/src/changes.js.map +1 -0
- package/build/src/config.d.ts +43 -0
- package/build/src/config.js +114 -0
- package/build/src/config.js.map +1 -0
- package/build/{createOrUpdatePartial.d.ts → src/createOrUpdatePartial.d.ts} +2 -1
- package/build/{createOrUpdatePartial.js → src/createOrUpdatePartial.js} +42 -10
- package/build/src/createOrUpdatePartial.js.map +1 -0
- package/build/src/dataloaders/findDataLoader.d.ts +5 -0
- package/build/src/dataloaders/findDataLoader.js +28 -0
- package/build/src/dataloaders/findDataLoader.js.map +1 -0
- package/build/src/dataloaders/loadDataLoader.d.ts +3 -0
- package/build/src/dataloaders/loadDataLoader.js +37 -0
- package/build/src/dataloaders/loadDataLoader.js.map +1 -0
- package/build/src/dataloaders/manyToManyDataLoader.d.ts +5 -0
- package/build/src/dataloaders/manyToManyDataLoader.js +78 -0
- package/build/src/dataloaders/manyToManyDataLoader.js.map +1 -0
- package/build/src/dataloaders/manyToManyFindDataLoader.d.ts +5 -0
- package/build/src/dataloaders/manyToManyFindDataLoader.js +33 -0
- package/build/src/dataloaders/manyToManyFindDataLoader.js.map +1 -0
- package/build/src/dataloaders/oneToManyDataLoader.d.ts +4 -0
- package/build/src/dataloaders/oneToManyDataLoader.js +40 -0
- package/build/src/dataloaders/oneToManyDataLoader.js.map +1 -0
- package/build/src/dataloaders/oneToManyFindDataLoader.d.ts +5 -0
- package/build/src/dataloaders/oneToManyFindDataLoader.js +32 -0
- package/build/src/dataloaders/oneToManyFindDataLoader.js.map +1 -0
- package/build/src/dataloaders/oneToOneDataLoader.d.ts +4 -0
- package/build/src/dataloaders/oneToOneDataLoader.js +40 -0
- package/build/src/dataloaders/oneToOneDataLoader.js.map +1 -0
- package/build/src/drivers/IdAssigner.d.ts +33 -0
- package/build/src/drivers/IdAssigner.js +106 -0
- package/build/src/drivers/IdAssigner.js.map +1 -0
- package/build/src/drivers/InMemoryDriver.d.ts +29 -0
- package/build/src/drivers/InMemoryDriver.js +306 -0
- package/build/src/drivers/InMemoryDriver.js.map +1 -0
- package/build/src/drivers/PostgresDriver.d.ts +40 -0
- package/build/src/drivers/PostgresDriver.js +376 -0
- package/build/src/drivers/PostgresDriver.js.map +1 -0
- package/build/src/drivers/driver.d.ts +23 -0
- package/build/src/drivers/driver.js +3 -0
- package/build/src/drivers/driver.js.map +1 -0
- package/build/src/drivers/index.d.ts +4 -0
- package/build/src/drivers/index.js +17 -0
- package/build/src/drivers/index.js.map +1 -0
- package/build/{getProperties.d.ts → src/getProperties.d.ts} +0 -0
- package/build/{getProperties.js → src/getProperties.js} +1 -1
- package/build/src/getProperties.js.map +1 -0
- package/build/src/index.d.ts +62 -0
- package/build/src/index.js +263 -0
- package/build/src/index.js.map +1 -0
- package/build/src/keys.d.ts +30 -0
- package/build/{keys.js → src/keys.js} +48 -16
- package/build/src/keys.js.map +1 -0
- package/build/{loadLens.d.ts → src/loadLens.d.ts} +2 -2
- package/build/{loadLens.js → src/loadLens.js} +1 -1
- package/build/src/loadLens.js.map +1 -0
- package/build/src/loaded.d.ts +49 -0
- package/build/src/loaded.js +9 -0
- package/build/src/loaded.js.map +1 -0
- package/build/{newTestInstance.d.ts → src/newTestInstance.d.ts} +37 -3
- package/build/src/newTestInstance.js +342 -0
- package/build/src/newTestInstance.js.map +1 -0
- package/build/{collections → src/relations}/AbstractRelationImpl.d.ts +6 -5
- package/build/{collections → src/relations}/AbstractRelationImpl.js +0 -0
- package/build/src/relations/AbstractRelationImpl.js.map +1 -0
- package/build/src/relations/Collection.d.ts +26 -0
- package/build/src/relations/Collection.js +19 -0
- package/build/src/relations/Collection.js.map +1 -0
- package/build/{collections → src/relations}/CustomCollection.d.ts +6 -2
- package/build/{collections → src/relations}/CustomCollection.js +17 -9
- package/build/src/relations/CustomCollection.js.map +1 -0
- package/build/{collections → src/relations}/CustomReference.d.ts +7 -2
- package/build/{collections → src/relations}/CustomReference.js +16 -9
- package/build/src/relations/CustomReference.js.map +1 -0
- package/build/src/relations/LargeCollection.d.ts +17 -0
- package/build/src/relations/LargeCollection.js +3 -0
- package/build/src/relations/LargeCollection.js.map +1 -0
- package/build/{collections → src/relations}/ManyToManyCollection.d.ts +9 -2
- package/build/src/relations/ManyToManyCollection.js +249 -0
- package/build/src/relations/ManyToManyCollection.js.map +1 -0
- package/build/src/relations/ManyToManyLargeCollection.d.ts +25 -0
- package/build/src/relations/ManyToManyLargeCollection.js +97 -0
- package/build/src/relations/ManyToManyLargeCollection.js.map +1 -0
- package/build/src/relations/ManyToOneReference.d.ts +77 -0
- package/build/{collections → src/relations}/ManyToOneReference.js +101 -48
- package/build/src/relations/ManyToOneReference.js.map +1 -0
- package/build/{collections → src/relations}/OneToManyCollection.d.ts +10 -2
- package/build/{collections → src/relations}/OneToManyCollection.js +54 -59
- package/build/src/relations/OneToManyCollection.js.map +1 -0
- package/build/src/relations/OneToManyLargeCollection.d.ts +25 -0
- package/build/src/relations/OneToManyLargeCollection.js +83 -0
- package/build/src/relations/OneToManyLargeCollection.js.map +1 -0
- package/build/src/relations/OneToOneReference.d.ts +82 -0
- package/build/src/relations/OneToOneReference.js +168 -0
- package/build/src/relations/OneToOneReference.js.map +1 -0
- package/build/src/relations/PolymorphicReference.d.ts +69 -0
- package/build/src/relations/PolymorphicReference.js +210 -0
- package/build/src/relations/PolymorphicReference.js.map +1 -0
- package/build/src/relations/Reference.d.ts +29 -0
- package/build/src/relations/Reference.js +23 -0
- package/build/src/relations/Reference.js.map +1 -0
- package/build/src/relations/Relation.d.ts +10 -0
- package/build/src/relations/Relation.js +13 -0
- package/build/src/relations/Relation.js.map +1 -0
- package/build/src/relations/hasAsyncProperty.d.ts +36 -0
- package/build/src/relations/hasAsyncProperty.js +55 -0
- package/build/src/relations/hasAsyncProperty.js.map +1 -0
- package/build/{collections → src/relations}/hasManyDerived.d.ts +2 -1
- package/build/{collections → src/relations}/hasManyDerived.js +1 -1
- package/build/src/relations/hasManyDerived.js.map +1 -0
- package/build/{collections → src/relations}/hasManyThrough.d.ts +0 -0
- package/build/{collections → src/relations}/hasManyThrough.js +2 -2
- package/build/src/relations/hasManyThrough.js.map +1 -0
- package/build/{collections → src/relations}/hasOneDerived.d.ts +3 -2
- package/build/{collections → src/relations}/hasOneDerived.js +1 -1
- package/build/src/relations/hasOneDerived.js.map +1 -0
- package/build/{collections → src/relations}/hasOneThrough.d.ts +0 -0
- package/build/{collections → src/relations}/hasOneThrough.js +2 -2
- package/build/src/relations/hasOneThrough.js.map +1 -0
- package/build/src/relations/index.d.ts +18 -0
- package/build/src/relations/index.js +53 -0
- package/build/src/relations/index.js.map +1 -0
- package/build/{reverseHint.d.ts → src/reverseHint.d.ts} +2 -1
- package/build/{reverseHint.js → src/reverseHint.js} +13 -9
- package/build/src/reverseHint.js.map +1 -0
- package/build/src/rules.d.ts +23 -0
- package/build/src/rules.js +23 -0
- package/build/src/rules.js.map +1 -0
- package/build/src/serde.d.ts +121 -0
- package/build/src/serde.js +190 -0
- package/build/src/serde.js.map +1 -0
- package/build/{utils.d.ts → src/utils.d.ts} +2 -0
- package/build/{utils.js → src/utils.js} +10 -1
- package/build/src/utils.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/package.json +30 -15
- package/build/BaseEntity.js.map +0 -1
- package/build/EntityManager.js.map +0 -1
- package/build/EntityPersister.d.ts +0 -30
- package/build/EntityPersister.js +0 -197
- package/build/EntityPersister.js.map +0 -1
- package/build/QueryBuilder.js +0 -195
- package/build/QueryBuilder.js.map +0 -1
- package/build/changes.d.ts +0 -23
- package/build/changes.js +0 -14
- package/build/changes.js.map +0 -1
- package/build/collections/AbstractRelationImpl.js.map +0 -1
- package/build/collections/CustomCollection.js.map +0 -1
- package/build/collections/CustomReference.js.map +0 -1
- package/build/collections/ManyToManyCollection.js +0 -288
- package/build/collections/ManyToManyCollection.js.map +0 -1
- package/build/collections/ManyToOneReference.d.ts +0 -50
- package/build/collections/ManyToOneReference.js.map +0 -1
- package/build/collections/OneToManyCollection.js.map +0 -1
- package/build/collections/OneToOneReference.d.ts +0 -51
- package/build/collections/OneToOneReference.js +0 -132
- package/build/collections/OneToOneReference.js.map +0 -1
- package/build/collections/hasManyDerived.js.map +0 -1
- package/build/collections/hasManyThrough.js.map +0 -1
- package/build/collections/hasOneDerived.js.map +0 -1
- package/build/collections/hasOneThrough.js.map +0 -1
- package/build/collections/index.d.ts +0 -19
- package/build/collections/index.js +0 -49
- package/build/collections/index.js.map +0 -1
- package/build/createOrUpdatePartial.js.map +0 -1
- package/build/getProperties.js.map +0 -1
- package/build/index.d.ts +0 -140
- package/build/index.js +0 -278
- package/build/index.js.map +0 -1
- package/build/keys.d.ts +0 -21
- package/build/keys.js.map +0 -1
- package/build/loadLens.js.map +0 -1
- package/build/newTestInstance.js +0 -153
- package/build/newTestInstance.js.map +0 -1
- package/build/reverseHint.js.map +0 -1
- package/build/serde.d.ts +0 -47
- package/build/serde.js +0 -93
- package/build/serde.js.map +0 -1
- package/build/utils.js.map +0 -1
- package/package.json.bak +0 -27
- package/src/BaseEntity.ts +0 -104
- package/src/EntityManager.ts +0 -1263
- package/src/EntityPersister.ts +0 -240
- package/src/QueryBuilder.ts +0 -289
- package/src/changes.ts +0 -40
- package/src/collections/AbstractRelationImpl.ts +0 -28
- package/src/collections/CustomCollection.ts +0 -152
- package/src/collections/CustomReference.ts +0 -138
- package/src/collections/ManyToManyCollection.ts +0 -346
- package/src/collections/ManyToOneReference.ts +0 -215
- package/src/collections/OneToManyCollection.ts +0 -254
- package/src/collections/OneToOneReference.ts +0 -153
- package/src/collections/hasManyDerived.ts +0 -29
- package/src/collections/hasManyThrough.ts +0 -20
- package/src/collections/hasOneDerived.ts +0 -26
- package/src/collections/hasOneThrough.ts +0 -20
- package/src/collections/index.ts +0 -74
- package/src/createOrUpdatePartial.ts +0 -144
- package/src/getProperties.ts +0 -27
- package/src/index.ts +0 -400
- package/src/keys.ts +0 -75
- package/src/loadLens.ts +0 -126
- package/src/newTestInstance.ts +0 -205
- package/src/reverseHint.ts +0 -43
- package/src/serde.ts +0 -97
- package/src/utils.ts +0 -63
- package/tsconfig.json +0 -21
- package/tsconfig.tsbuildinfo +0 -2646
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityManager.js","sourceRoot":"","sources":["../../src/EntityManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Entity, EntityConstructor, FilterOf, OrderOf } from "./EntityManager";
|
|
1
|
+
import { Knex } from "knex";
|
|
2
|
+
import { Entity, EntityConstructor, EntityMetadata, FilterOf, OrderOf } from "./EntityManager";
|
|
3
3
|
export declare type OrderBy = "ASC" | "DESC";
|
|
4
4
|
export declare type BooleanFilter<N> = true | false | N;
|
|
5
5
|
export declare type ValueFilter<V, N> = V | V[] | N | {
|
|
@@ -21,9 +21,59 @@ export declare type ValueFilter<V, N> = V | V[] | N | {
|
|
|
21
21
|
} | {
|
|
22
22
|
ilike: V;
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* An ADT version of `ValueFilter`.
|
|
26
|
+
*
|
|
27
|
+
* The ValueFilter is a
|
|
28
|
+
*/
|
|
29
|
+
export declare type ParsedValueFilter<V> = {
|
|
30
|
+
kind: "eq";
|
|
31
|
+
value: V | null;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "in";
|
|
34
|
+
value: V[];
|
|
35
|
+
} | {
|
|
36
|
+
kind: "gt";
|
|
37
|
+
value: V;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "gte";
|
|
40
|
+
value: V;
|
|
41
|
+
} | {
|
|
42
|
+
kind: "ne";
|
|
43
|
+
value: V | null;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "lt";
|
|
46
|
+
value: V;
|
|
47
|
+
} | {
|
|
48
|
+
kind: "lte";
|
|
49
|
+
value: V;
|
|
50
|
+
} | {
|
|
51
|
+
kind: "like";
|
|
52
|
+
value: V;
|
|
53
|
+
} | {
|
|
54
|
+
kind: "ilike";
|
|
55
|
+
value: V;
|
|
56
|
+
} | {
|
|
57
|
+
kind: "pass";
|
|
58
|
+
};
|
|
59
|
+
export declare function parseValueFilter<V>(filter: ValueFilter<V, any>): ParsedValueFilter<V>;
|
|
24
60
|
export declare type EntityFilter<T, I, F, N> = T | I | I[] | F | N | {
|
|
25
61
|
ne: T | I | N;
|
|
26
62
|
};
|
|
63
|
+
export declare type ParsedEntityFilter = {
|
|
64
|
+
kind: "eq";
|
|
65
|
+
id: number | null;
|
|
66
|
+
} | {
|
|
67
|
+
kind: "ne";
|
|
68
|
+
id: number | null;
|
|
69
|
+
} | {
|
|
70
|
+
kind: "in";
|
|
71
|
+
ids: number[];
|
|
72
|
+
} | {
|
|
73
|
+
kind: "join";
|
|
74
|
+
subFilter: any;
|
|
75
|
+
};
|
|
76
|
+
export declare function parseEntityFilter(meta: EntityMetadata<any>, filter: any): ParsedEntityFilter;
|
|
27
77
|
export declare type BooleanGraphQLFilter = true | false | null;
|
|
28
78
|
export declare type Primitive = string | boolean | Date | number;
|
|
29
79
|
/** This essentially matches the ValueFilter but with looser types to placate GraphQL. */
|
|
@@ -61,5 +111,5 @@ export declare type FilterAndSettings<T> = {
|
|
|
61
111
|
* be a user-facing QueryBuilder, i.e. users should use Knex for that and just use SQL
|
|
62
112
|
* directly (for any non-trivial queries that `EntityManager.find` does not support).
|
|
63
113
|
*/
|
|
64
|
-
export declare function buildQuery<T extends Entity>(knex: Knex, type: EntityConstructor<T>, filter: FilterAndSettings<T>): QueryBuilder<{}, unknown[]>;
|
|
114
|
+
export declare function buildQuery<T extends Entity>(knex: Knex, type: EntityConstructor<T>, filter: FilterAndSettings<T>): Knex.QueryBuilder<{}, unknown[]>;
|
|
65
115
|
export {};
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildQuery = exports.parseEntityFilter = exports.parseValueFilter = void 0;
|
|
4
|
+
const joist_utils_1 = require("joist-utils");
|
|
5
|
+
const EntityManager_1 = require("./EntityManager");
|
|
6
|
+
const index_1 = require("./index");
|
|
7
|
+
const keys_1 = require("./keys");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
function parseValueFilter(filter) {
|
|
10
|
+
if (filter === null) {
|
|
11
|
+
return { kind: "eq", value: filter };
|
|
12
|
+
}
|
|
13
|
+
else if (filter === undefined) {
|
|
14
|
+
return { kind: "pass" };
|
|
15
|
+
}
|
|
16
|
+
else if (Array.isArray(filter)) {
|
|
17
|
+
return { kind: "in", value: filter };
|
|
18
|
+
}
|
|
19
|
+
else if (typeof filter === "object") {
|
|
20
|
+
const keys = Object.keys(filter);
|
|
21
|
+
if (keys.length === 2) {
|
|
22
|
+
// Probe for `findGql` op & value
|
|
23
|
+
const op = filter["op"];
|
|
24
|
+
const value = filter["value"];
|
|
25
|
+
if (op === undefined && value === undefined) {
|
|
26
|
+
throw new Error(`ValueFilter only supports a single field being set ${filter}`);
|
|
27
|
+
}
|
|
28
|
+
return { kind: op, value: value ?? null };
|
|
29
|
+
}
|
|
30
|
+
if (keys.length !== 1) {
|
|
31
|
+
throw new Error(`ValueFilter only supports a single field being set ${filter}`);
|
|
32
|
+
}
|
|
33
|
+
const key = keys[0];
|
|
34
|
+
switch (key) {
|
|
35
|
+
case "eq":
|
|
36
|
+
return { kind: "eq", value: filter[key] ?? null };
|
|
37
|
+
case "ne":
|
|
38
|
+
return { kind: "ne", value: filter[key] ?? null };
|
|
39
|
+
case "in":
|
|
40
|
+
return { kind: "in", value: filter[key] };
|
|
41
|
+
case "gt":
|
|
42
|
+
case "gte":
|
|
43
|
+
case "lt":
|
|
44
|
+
case "lte":
|
|
45
|
+
case "like":
|
|
46
|
+
case "ilike":
|
|
47
|
+
return { kind: key, value: filter[key] };
|
|
48
|
+
}
|
|
49
|
+
throw new Error("unsupported");
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// This is a primitive like a string, number
|
|
53
|
+
return { kind: "eq", value: filter ?? null };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.parseValueFilter = parseValueFilter;
|
|
57
|
+
function parseEntityFilter(meta, filter) {
|
|
58
|
+
if (filter === null || filter === undefined) {
|
|
59
|
+
return { kind: "eq", id: null };
|
|
60
|
+
}
|
|
61
|
+
else if (typeof filter === "string" || typeof filter === "number") {
|
|
62
|
+
return { kind: "eq", id: (0, keys_1.keyToNumber)(meta, filter) };
|
|
63
|
+
}
|
|
64
|
+
else if (Array.isArray(filter)) {
|
|
65
|
+
return { kind: "in", ids: filter.map((id) => (0, keys_1.keyToNumber)(meta, id)) };
|
|
66
|
+
}
|
|
67
|
+
else if ((0, EntityManager_1.isEntity)(filter)) {
|
|
68
|
+
return { kind: "eq", id: (0, keys_1.keyToNumber)(meta, filter.id || -1) };
|
|
69
|
+
}
|
|
70
|
+
else if (typeof filter === "object") {
|
|
71
|
+
const keys = Object.keys(filter);
|
|
72
|
+
if (keys.length === 1 && keys[0] === "ne") {
|
|
73
|
+
const value = filter["ne"];
|
|
74
|
+
if (value === null || value === undefined) {
|
|
75
|
+
return { kind: "ne", id: null };
|
|
76
|
+
}
|
|
77
|
+
else if (typeof value === "string" || typeof value === "number") {
|
|
78
|
+
return { kind: "ne", id: (0, keys_1.keyToNumber)(meta, value) };
|
|
79
|
+
}
|
|
80
|
+
else if ((0, EntityManager_1.isEntity)(value)) {
|
|
81
|
+
return { kind: "ne", id: (0, keys_1.keyToNumber)(meta, value.id || -1) };
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
throw new Error(`Unsupported "ne" value ${value}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { kind: "join", subFilter: filter };
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
throw new Error(`Unrecognized filter ${filter}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.parseEntityFilter = parseEntityFilter;
|
|
94
|
+
const operators = ["eq", "gt", "gte", "ne", "lt", "lte", "like", "ilike", "in"];
|
|
95
|
+
const opToFn = {
|
|
96
|
+
eq: "=",
|
|
97
|
+
gt: ">",
|
|
98
|
+
gte: ">=",
|
|
99
|
+
ne: "!=",
|
|
100
|
+
lt: "<",
|
|
101
|
+
lte: "<=",
|
|
102
|
+
like: "LIKE",
|
|
103
|
+
ilike: "ILIKE",
|
|
104
|
+
in: "...",
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Builds the SQL/knex queries for `EntityManager.find` calls.
|
|
108
|
+
*
|
|
109
|
+
* Note this is generally for our own internal implementation details and not meant to
|
|
110
|
+
* be a user-facing QueryBuilder, i.e. users should use Knex for that and just use SQL
|
|
111
|
+
* directly (for any non-trivial queries that `EntityManager.find` does not support).
|
|
112
|
+
*/
|
|
113
|
+
function buildQuery(knex, type, filter) {
|
|
114
|
+
const meta = (0, EntityManager_1.getMetadata)(type);
|
|
115
|
+
const { where, orderBy, limit, offset } = filter;
|
|
116
|
+
const aliases = {};
|
|
117
|
+
function getAlias(tableName) {
|
|
118
|
+
const abbrev = abbreviation(tableName);
|
|
119
|
+
const i = aliases[abbrev] || 0;
|
|
120
|
+
aliases[abbrev] = i + 1;
|
|
121
|
+
return `${abbrev}${i}`;
|
|
122
|
+
}
|
|
123
|
+
const alias = getAlias(meta.tableName);
|
|
124
|
+
let query = knex.select(`${alias}.*`).from(`${meta.tableName} AS ${alias}`);
|
|
125
|
+
// Define a function for recursively adding joins & filters
|
|
126
|
+
function addClauses(meta, alias, where, orderBy) {
|
|
127
|
+
// Combine the where and orderBy keys so that we can add them to aliases as that same time
|
|
128
|
+
// Filter out undefined values as they should be ignored (for now?)
|
|
129
|
+
const keys = [
|
|
130
|
+
...(where ? Object.keys(where).filter((key) => where[key] !== undefined) : []),
|
|
131
|
+
...(orderBy ? Object.keys(orderBy).filter((key) => orderBy[key] !== undefined) : []),
|
|
132
|
+
];
|
|
133
|
+
keys.forEach((key) => {
|
|
134
|
+
const field = meta.fields[key] ?? (0, utils_1.fail)(`${key} not found`);
|
|
135
|
+
// We may/may not have a where clause or orderBy for this key, but we should have at least one of them.
|
|
136
|
+
const clause = where && where[key];
|
|
137
|
+
const hasClause = where && key in where;
|
|
138
|
+
const order = orderBy && orderBy[key];
|
|
139
|
+
const hasOrder = !!order;
|
|
140
|
+
if (field.kind === "poly") {
|
|
141
|
+
if (Array.isArray(clause)) {
|
|
142
|
+
const ids = clause.map((e) => (0, index_1.maybeResolveReferenceToId)(e));
|
|
143
|
+
const idsByConstructor = (0, joist_utils_1.groupBy)(ids, (id) => (0, index_1.getConstructorFromTaggedId)(id).name);
|
|
144
|
+
query = query.where((query) => field.serde.columns.reduce((query, { columnName, otherMetadata, mapToDb }) => {
|
|
145
|
+
const ids = idsByConstructor[otherMetadata().cstr.name];
|
|
146
|
+
return ids && ids.length > 0 ? query.orWhereIn(`${alias}.${columnName}`, ids.map(mapToDb)) : query;
|
|
147
|
+
}, query));
|
|
148
|
+
}
|
|
149
|
+
else if ((0, EntityManager_1.isEntity)(clause) || typeof clause === "string") {
|
|
150
|
+
query = addPolyClause(query, alias, field, meta, clause);
|
|
151
|
+
}
|
|
152
|
+
else if (clause === null) {
|
|
153
|
+
query = field.components.reduce((query, component) => addPolyClause(query, alias, field, meta, component.otherMetadata().cstr, clause), query);
|
|
154
|
+
}
|
|
155
|
+
else if (typeof clause === "object" && Object.keys(clause).length === 1 && "ne" in clause) {
|
|
156
|
+
const { ne: value } = clause;
|
|
157
|
+
if ((0, EntityManager_1.isEntity)(value) || typeof value === "string") {
|
|
158
|
+
const column = polyColumnFor(meta, field, value);
|
|
159
|
+
query = query.where((query) => query
|
|
160
|
+
.whereNot(`${alias}.${column.columnName}`, column.mapToDb(value))
|
|
161
|
+
// for some reason whereNot excludes null values, so explicitly include them here
|
|
162
|
+
.orWhereNull(`${alias}.${column.columnName}`));
|
|
163
|
+
}
|
|
164
|
+
else if (value === null) {
|
|
165
|
+
query = query.where((b) => field.components.reduce((b, { columnName }) => b.orWhereNotNull(`${alias}.${columnName}`), b));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else if (field.kind === "o2o") {
|
|
170
|
+
// Add `otherTable.column = ...` clause, unless `key` is not in `where`, i.e. there is only an orderBy for this fk
|
|
171
|
+
const otherMeta = field.otherMetadata();
|
|
172
|
+
const otherAlias = getAlias(otherMeta.tableName);
|
|
173
|
+
const otherColumn = otherMeta.fields[field.otherFieldName];
|
|
174
|
+
query = query.leftJoin(`${otherMeta.tableName} AS ${otherAlias}`, `${otherAlias}.${otherColumn.serde.columns[0].columnName}`, `${alias}.id`);
|
|
175
|
+
const [shouldAddClauses, _query] = hasClause
|
|
176
|
+
? addForeignKeyClause(query, otherAlias, otherMeta.fields["id"].serde.columns[0], clause)
|
|
177
|
+
: [false, query];
|
|
178
|
+
query = _query;
|
|
179
|
+
if (shouldAddClauses || hasOrder) {
|
|
180
|
+
addClauses(otherMeta, otherAlias, shouldAddClauses ? clause : undefined, hasOrder ? order : undefined);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (field.kind === "m2o") {
|
|
184
|
+
const serde = (meta.fields[key] ?? (0, utils_1.fail)(`${key} not found`)).serde;
|
|
185
|
+
// TODO Currently hardcoded to single-column support; poly is handled above this
|
|
186
|
+
const column = serde.columns[0];
|
|
187
|
+
// Add `otherTable.column = ...` clause, unless `key` is not in `where`, i.e. there is only an orderBy for this fk
|
|
188
|
+
const [whereNeedsJoin, _query] = hasClause ? addForeignKeyClause(query, alias, column, clause) : [false, query];
|
|
189
|
+
query = _query;
|
|
190
|
+
if (whereNeedsJoin || hasOrder) {
|
|
191
|
+
// Add a join for this column
|
|
192
|
+
const otherMeta = field.otherMetadata();
|
|
193
|
+
const otherAlias = getAlias(otherMeta.tableName);
|
|
194
|
+
query = query.innerJoin(`${otherMeta.tableName} AS ${otherAlias}`, `${alias}.${column.columnName}`, `${otherAlias}.id`);
|
|
195
|
+
// Then recurse to add its conditions to the query
|
|
196
|
+
addClauses(otherMeta, otherAlias, whereNeedsJoin ? clause : undefined, hasOrder ? order : undefined);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const serde = (meta.fields[key] ?? (0, utils_1.fail)(`${key} not found`)).serde;
|
|
201
|
+
// TODO Currently hardcoded to single-column support; poly is handled above this
|
|
202
|
+
const column = serde.columns[0];
|
|
203
|
+
query = hasClause ? addPrimitiveClause(query, alias, column, clause) : query;
|
|
204
|
+
// This is not a foreign key column, so it'll have the primitive filters/order bys
|
|
205
|
+
if (order) {
|
|
206
|
+
query = query.orderBy(`${alias}.${column.columnName}`, order);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
addClauses(meta, alias, where, orderBy);
|
|
212
|
+
// Even if they already added orders, add id as the last one to get deterministic output
|
|
213
|
+
query = query.orderBy(`${alias}.id`);
|
|
214
|
+
query = query.limit(limit || EntityManager_1.entityLimit);
|
|
215
|
+
if (offset) {
|
|
216
|
+
query = query.offset(offset);
|
|
217
|
+
}
|
|
218
|
+
return query;
|
|
219
|
+
}
|
|
220
|
+
exports.buildQuery = buildQuery;
|
|
221
|
+
function abbreviation(tableName) {
|
|
222
|
+
return tableName
|
|
223
|
+
.split("_")
|
|
224
|
+
.map((w) => w[0])
|
|
225
|
+
.join("");
|
|
226
|
+
}
|
|
227
|
+
function polyColumnFor(meta, field, value) {
|
|
228
|
+
const cstr = typeof value === "function" ? value : (0, index_1.maybeGetConstructorFromReference)(value);
|
|
229
|
+
return (field.serde.columns.find((c) => c.otherMetadata().cstr === cstr) ??
|
|
230
|
+
(0, utils_1.fail)(`${cstr.name} cannot be used as a filter on ${field.fieldName}`));
|
|
231
|
+
}
|
|
232
|
+
function addPolyClause(query, alias, field, meta, value, clause) {
|
|
233
|
+
clause = clause === undefined ? value : clause;
|
|
234
|
+
const column = polyColumnFor(meta, field, value);
|
|
235
|
+
const [, result] = addForeignKeyClause(query, alias, column, clause);
|
|
236
|
+
return result;
|
|
237
|
+
}
|
|
238
|
+
function addForeignKeyClause(query, alias, column, clause) {
|
|
239
|
+
// I.e. this could be { authorFk: authorEntity | null | id | { ...recurse... } }
|
|
240
|
+
const clauseKeys = typeof clause === "object" && clause !== null
|
|
241
|
+
? Object.keys(clause).filter((key) => clause[key] !== undefined)
|
|
242
|
+
: [];
|
|
243
|
+
if ((0, EntityManager_1.isEntity)(clause) || typeof clause === "string" || Array.isArray(clause)) {
|
|
244
|
+
// I.e. { authorFk: authorEntity | id | id[] }
|
|
245
|
+
if ((0, EntityManager_1.isEntity)(clause) && clause.id === undefined) {
|
|
246
|
+
// The user is filtering on an unsaved entity, which will just never have any rows, so throw in -1
|
|
247
|
+
return [false, query.where(`${alias}.${column.columnName}`, -1)];
|
|
248
|
+
}
|
|
249
|
+
else if (Array.isArray(clause)) {
|
|
250
|
+
return [
|
|
251
|
+
false,
|
|
252
|
+
query.whereIn(`${alias}.${column.columnName}`, clause.map((id) => column.mapToDb(id))),
|
|
253
|
+
];
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
return [false, query.where(`${alias}.${column.columnName}`, column.mapToDb(clause))];
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else if (clause === null) {
|
|
260
|
+
// I.e. { authorFk: null | undefined }
|
|
261
|
+
return [false, query.whereNull(`${alias}.${column.columnName}`)];
|
|
262
|
+
}
|
|
263
|
+
else if (clauseKeys.length === 1 && clauseKeys[0] === "id") {
|
|
264
|
+
// I.e. { authorFk: { id: string } } || { authorFk: { id: string[] } }
|
|
265
|
+
// If only querying on the id, we can skip the join
|
|
266
|
+
return [false, addPrimitiveClause(query, alias, column, clause["id"])];
|
|
267
|
+
}
|
|
268
|
+
else if (clauseKeys.length === 1 && clauseKeys[0] === "ne") {
|
|
269
|
+
// I.e. { authorFk: { ne: string | null | undefined } }
|
|
270
|
+
const value = clause["ne"];
|
|
271
|
+
if (value === null || value === undefined) {
|
|
272
|
+
return [false, query.whereNotNull(`${alias}.${column.columnName}`)];
|
|
273
|
+
}
|
|
274
|
+
else if (typeof value === "string") {
|
|
275
|
+
return [false, query.whereNot(`${alias}.${column.columnName}`, column.mapToDb(value))];
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
throw new Error("Not implemented");
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
// I.e. { authorFk: { ...authorFilter... } }
|
|
283
|
+
return [clause !== undefined, query];
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function addPrimitiveClause(query, alias, column, clause) {
|
|
287
|
+
if (clause && typeof clause === "object" && operators.find((op) => Object.keys(clause).includes(op))) {
|
|
288
|
+
// I.e. `{ primitiveField: { gt: value } }`
|
|
289
|
+
const op = Object.keys(clause)[0];
|
|
290
|
+
return addPrimitiveOperator(query, alias, column, op, clause[op]);
|
|
291
|
+
}
|
|
292
|
+
else if (clause && typeof clause === "object" && "op" in clause) {
|
|
293
|
+
// I.e. { primitiveField: { op: "gt", value: 1 } }`
|
|
294
|
+
return addPrimitiveOperator(query, alias, column, clause.op, clause.value);
|
|
295
|
+
}
|
|
296
|
+
else if (Array.isArray(clause)) {
|
|
297
|
+
// I.e. `{ primitiveField: value[] }`
|
|
298
|
+
if (column.isArray) {
|
|
299
|
+
return query.where(`${alias}.${column.columnName}`, "@>", column.mapToDb(clause));
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
return query.whereIn(`${alias}.${column.columnName}`, clause.map((v) => column.mapToDb(v)));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else if (clause === null) {
|
|
306
|
+
// I.e. `{ primitiveField: null }`
|
|
307
|
+
return query.whereNull(`${alias}.${column.columnName}`);
|
|
308
|
+
}
|
|
309
|
+
else if (clause === undefined) {
|
|
310
|
+
// I.e. `{ primitiveField: undefined }`
|
|
311
|
+
// Currently we treat this like a partial filter, i.e. don't include it. Seems odd
|
|
312
|
+
// unless this is opt-in, i.e. maybe only do this for `findGql`?
|
|
313
|
+
return query;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// I.e. `{ primitiveField: value }`
|
|
317
|
+
// TODO In theory could add a addToQuery method to Serde to generalize this to multi-columns fields.
|
|
318
|
+
return query.where(`${alias}.${column.columnName}`, column.mapToDb(clause));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function addPrimitiveOperator(query, alias, column, op, value) {
|
|
322
|
+
if (value === null || value === undefined) {
|
|
323
|
+
if (op === "ne") {
|
|
324
|
+
return query.whereNotNull(`${alias}.${column.columnName}`);
|
|
325
|
+
}
|
|
326
|
+
else if (op === "eq") {
|
|
327
|
+
return query.whereNull(`${alias}.${column.columnName}`);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
throw new Error("Only ne is supported when the value is undefined or null");
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
else if (op === "in") {
|
|
334
|
+
return query.whereIn(`${alias}.${column.columnName}`, value.map((v) => column.mapToDb(v)));
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
const fn = opToFn[op] || (0, utils_1.fail)(`Invalid operator ${op}`);
|
|
338
|
+
return query.where(`${alias}.${column.columnName}`, fn, column.mapToDb(value));
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=QueryBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../src/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** The operations for a given entity type, so they can be executed in bulk. */
|
|
2
|
+
import { Entity, EntityMetadata } from "./EntityManager";
|
|
3
|
+
import { ManyToManyCollection } from "./relations";
|
|
4
|
+
import { JoinRow } from "./relations/ManyToManyCollection";
|
|
5
|
+
/** A group of insert/update/delete operations for a given entity. */
|
|
6
|
+
export interface Todo {
|
|
7
|
+
metadata: EntityMetadata<any>;
|
|
8
|
+
inserts: Entity[];
|
|
9
|
+
updates: Entity[];
|
|
10
|
+
deletes: Entity[];
|
|
11
|
+
validates: Entity[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Scans `entities` for new/updated entities and arranges them per-type in entity order.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createTodos(entities: Entity[]): Record<string, Todo>;
|
|
17
|
+
/** getOrSets a `Todo` for `entity` in `todos`. */
|
|
18
|
+
export declare function getTodo(todos: Record<string, Todo>, entity: Entity): Todo;
|
|
19
|
+
export interface JoinRowTodo {
|
|
20
|
+
m2m: ManyToManyCollection<any, any>;
|
|
21
|
+
newRows: JoinRow[];
|
|
22
|
+
deletedRows: JoinRow[];
|
|
23
|
+
}
|
|
24
|
+
/** Given a list of `JoinRow`s for a given table, combine them into a single logical `JoinRowTodo`. */
|
|
25
|
+
export declare function combineJoinRows(joinRows: Record<string, JoinRow[]>): Record<string, JoinRowTodo>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.combineJoinRows = exports.getTodo = exports.createTodos = void 0;
|
|
4
|
+
/** The operations for a given entity type, so they can be executed in bulk. */
|
|
5
|
+
const EntityManager_1 = require("./EntityManager");
|
|
6
|
+
/**
|
|
7
|
+
* Scans `entities` for new/updated entities and arranges them per-type in entity order.
|
|
8
|
+
*/
|
|
9
|
+
function createTodos(entities) {
|
|
10
|
+
const todos = {};
|
|
11
|
+
for (const entity of entities) {
|
|
12
|
+
if (entity.isPendingFlush) {
|
|
13
|
+
const todo = getTodo(todos, entity);
|
|
14
|
+
if (entity.isPendingDelete) {
|
|
15
|
+
todo.deletes.push(entity);
|
|
16
|
+
}
|
|
17
|
+
else if (entity.isNewEntity) {
|
|
18
|
+
todo.inserts.push(entity);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
todo.updates.push(entity);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return todos;
|
|
26
|
+
}
|
|
27
|
+
exports.createTodos = createTodos;
|
|
28
|
+
/** getOrSets a `Todo` for `entity` in `todos`. */
|
|
29
|
+
function getTodo(todos, entity) {
|
|
30
|
+
const meta = (0, EntityManager_1.getMetadata)(entity);
|
|
31
|
+
let todo = todos[meta.type];
|
|
32
|
+
if (!todo) {
|
|
33
|
+
todo = { metadata: entity.__orm.metadata, inserts: [], updates: [], deletes: [], validates: [] };
|
|
34
|
+
todos[meta.type] = todo;
|
|
35
|
+
}
|
|
36
|
+
return todo;
|
|
37
|
+
}
|
|
38
|
+
exports.getTodo = getTodo;
|
|
39
|
+
/** Given a list of `JoinRow`s for a given table, combine them into a single logical `JoinRowTodo`. */
|
|
40
|
+
function combineJoinRows(joinRows) {
|
|
41
|
+
const todos = {};
|
|
42
|
+
for (const [joinTableName, rows] of Object.entries(joinRows)) {
|
|
43
|
+
const newRows = rows.filter((r) => r.id === undefined && r.deleted !== true);
|
|
44
|
+
const deletedRows = rows.filter((r) => r.id !== undefined && r.deleted === true);
|
|
45
|
+
if (newRows.length > 0 || deletedRows.length > 0) {
|
|
46
|
+
todos[joinTableName] = { newRows, deletedRows, m2m: rows[0].m2m };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return todos;
|
|
50
|
+
}
|
|
51
|
+
exports.combineJoinRows = combineJoinRows;
|
|
52
|
+
//# sourceMappingURL=Todo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Todo.js","sourceRoot":"","sources":["../../src/Todo.ts"],"names":[],"mappings":";;;AAAA,+EAA+E;AAC/E,mDAAsE;AAatE;;GAEG;AACH,SAAgB,WAAW,CAAC,QAAkB;IAC5C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC7B,IAAI,MAAM,CAAC,cAAc,EAAE;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,eAAe,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM,IAAI,MAAM,CAAC,WAAW,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,kCAeC;AAED,kDAAkD;AAClD,SAAgB,OAAO,CAAC,KAA2B,EAAE,MAAc;IACjE,MAAM,IAAI,GAAG,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACjG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACzB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,0BAQC;AASD,sGAAsG;AACtG,SAAgB,eAAe,CAAC,QAAmC;IACjE,MAAM,KAAK,GAAgC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACnE;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,0CAUC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Entity, IdOf, OptsOf } from "./EntityManager";
|
|
2
|
+
/** Exposes a field's changed/original value in each entity's `this.changes` property. */
|
|
3
|
+
export interface FieldStatus<T> {
|
|
4
|
+
/** True if the field has been changed on either create or update. */
|
|
5
|
+
hasChanged: boolean;
|
|
6
|
+
/** True only if the field has been updated i.e. not on the initial create. */
|
|
7
|
+
hasUpdated: boolean;
|
|
8
|
+
/** The original value, will be `undefined` if the entity new. */
|
|
9
|
+
originalValue?: T;
|
|
10
|
+
}
|
|
11
|
+
/** Exposes a field's changed/original value in each entity's `this.changes` property. */
|
|
12
|
+
export interface ManyToOneFieldStatus<T extends Entity> extends FieldStatus<IdOf<T>> {
|
|
13
|
+
/** The original entity, will be `undefined` if the entity new or the m2o was `null`. */
|
|
14
|
+
originalEntity: Promise<T | undefined>;
|
|
15
|
+
}
|
|
16
|
+
declare type NullOrDefinedOr<T> = T | null | undefined;
|
|
17
|
+
declare type ExcludeNever<T> = Pick<T, {
|
|
18
|
+
[P in keyof T]: T[P] extends never ? never : P;
|
|
19
|
+
}[keyof T]>;
|
|
20
|
+
/**
|
|
21
|
+
* Creates the `this.changes.firstName` changes API for a given entity `T`.
|
|
22
|
+
*
|
|
23
|
+
* Specifically we use the fields from OptsOf but:
|
|
24
|
+
*
|
|
25
|
+
* - Exclude collections
|
|
26
|
+
* - Convert entity types to id types to match what is stored in originalData
|
|
27
|
+
*/
|
|
28
|
+
export declare type Changes<T extends Entity> = {
|
|
29
|
+
fields: (keyof OptsOf<T>)[];
|
|
30
|
+
} & ExcludeNever<{
|
|
31
|
+
[P in keyof OptsOf<T>]-?: OptsOf<T>[P] extends NullOrDefinedOr<infer U> ? U extends Array<infer E> ? E extends string ? FieldStatus<U> : never : U extends Entity ? ManyToOneFieldStatus<U> : FieldStatus<U> : never;
|
|
32
|
+
}>;
|
|
33
|
+
export declare function newChangesProxy<T extends Entity>(entity: T): Changes<T>;
|
|
34
|
+
export {};
|