joist-orm 1.0.677 → 1.0.681
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/src/EntityManager.d.ts +7 -4
- package/build/src/EntityManager.js +25 -12
- package/build/src/EntityManager.js.map +1 -1
- package/build/src/QueryBuilder.js +8 -10
- package/build/src/QueryBuilder.js.map +1 -1
- package/build/src/dataloaders/oneToManyDataLoader.js +1 -1
- package/build/src/dataloaders/oneToManyDataLoader.js.map +1 -1
- package/build/src/dataloaders/oneToOneDataLoader.d.ts +2 -2
- package/build/src/dataloaders/oneToOneDataLoader.js +2 -2
- package/build/src/dataloaders/oneToOneDataLoader.js.map +1 -1
- package/build/src/drivers/InMemoryDriver.d.ts +3 -2
- package/build/src/drivers/InMemoryDriver.js +4 -7
- package/build/src/drivers/InMemoryDriver.js.map +1 -1
- package/build/src/drivers/PostgresDriver.d.ts +3 -2
- package/build/src/drivers/PostgresDriver.js +2 -3
- package/build/src/drivers/PostgresDriver.js.map +1 -1
- package/build/src/drivers/driver.d.ts +2 -2
- package/build/src/index.d.ts +3 -73
- package/build/src/index.js +2 -49
- package/build/src/index.js.map +1 -1
- package/build/src/keys.js +2 -2
- package/build/src/keys.js.map +1 -1
- package/build/src/loadLens.d.ts +2 -2
- package/build/src/loadLens.js +1 -1
- package/build/src/loadLens.js.map +1 -1
- package/build/src/relations/Collection.d.ts +23 -0
- package/build/src/relations/Collection.js +19 -0
- package/build/src/relations/Collection.js.map +1 -0
- package/build/src/relations/CustomCollection.d.ts +3 -0
- package/build/src/relations/CustomCollection.js +6 -1
- package/build/src/relations/CustomCollection.js.map +1 -1
- package/build/src/relations/CustomReference.d.ts +5 -0
- package/build/src/relations/CustomReference.js +8 -1
- package/build/src/relations/CustomReference.js.map +1 -1
- package/build/src/relations/ManyToManyCollection.d.ts +5 -0
- package/build/src/relations/ManyToManyCollection.js +13 -2
- package/build/src/relations/ManyToManyCollection.js.map +1 -1
- package/build/src/relations/ManyToOneReference.d.ts +21 -2
- package/build/src/relations/ManyToOneReference.js +25 -9
- package/build/src/relations/ManyToOneReference.js.map +1 -1
- package/build/src/relations/OneToManyCollection.d.ts +5 -0
- package/build/src/relations/OneToManyCollection.js +14 -3
- package/build/src/relations/OneToManyCollection.js.map +1 -1
- package/build/src/relations/OneToOneReference.d.ts +31 -2
- package/build/src/relations/OneToOneReference.js +30 -6
- package/build/src/relations/OneToOneReference.js.map +1 -1
- package/build/src/relations/PolymorphicReference.d.ts +19 -1
- package/build/src/relations/PolymorphicReference.js +28 -15
- package/build/src/relations/PolymorphicReference.js.map +1 -1
- 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 +4 -0
- package/build/src/relations/hasAsyncProperty.js +13 -4
- package/build/src/relations/hasAsyncProperty.js.map +1 -1
- package/build/src/relations/hasManyDerived.js +1 -1
- package/build/src/relations/hasManyDerived.js.map +1 -1
- package/build/src/relations/index.d.ts +9 -15
- package/build/src/relations/index.js +21 -34
- package/build/src/relations/index.js.map +1 -1
- package/build/src/serde.js +8 -16
- package/build/src/serde.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomReference.js","sourceRoot":"","sources":["../../../src/relations/CustomReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CustomReference.js","sourceRoot":"","sources":["../../../src/relations/CustomReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Collection, Entity, EntityMetadata, IdOf } from "../";
|
|
2
2
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
3
|
+
import { RelationT, RelationU } from "./Relation";
|
|
4
|
+
/** An alias for creating `ManyToManyCollections`s. */
|
|
5
|
+
export declare function hasManyToMany<T extends Entity, U extends Entity>(joinTableName: string, fieldName: keyof T, columnName: string, otherMeta: EntityMetadata<U>, otherFieldName: keyof U, otherColumnName: string): Collection<T, U>;
|
|
3
6
|
export declare class ManyToManyCollection<T extends Entity, U extends Entity> extends AbstractRelationImpl<U[]> implements Collection<T, U> {
|
|
4
7
|
joinTableName: string;
|
|
5
8
|
entity: T;
|
|
@@ -37,6 +40,8 @@ export declare class ManyToManyCollection<T extends Entity, U extends Entity> ex
|
|
|
37
40
|
}): U[];
|
|
38
41
|
get meta(): EntityMetadata<T>;
|
|
39
42
|
toString(): string;
|
|
43
|
+
[RelationT]: T;
|
|
44
|
+
[RelationU]: U;
|
|
40
45
|
}
|
|
41
46
|
export declare type JoinRow = {
|
|
42
47
|
id: number | undefined;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ManyToManyCollection = void 0;
|
|
4
|
+
exports.ManyToManyCollection = exports.hasManyToMany = void 0;
|
|
4
5
|
const __1 = require("../");
|
|
5
6
|
const manyToManyDataLoader_1 = require("../dataloaders/manyToManyDataLoader");
|
|
6
7
|
const utils_1 = require("../utils");
|
|
7
8
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
9
|
+
const Relation_1 = require("./Relation");
|
|
10
|
+
/** An alias for creating `ManyToManyCollections`s. */
|
|
11
|
+
function hasManyToMany(joinTableName, fieldName, columnName, otherMeta, otherFieldName, otherColumnName) {
|
|
12
|
+
const entity = __1.currentlyInstantiatingEntity;
|
|
13
|
+
return new ManyToManyCollection(joinTableName, entity, fieldName, columnName, otherMeta, otherFieldName, otherColumnName);
|
|
14
|
+
}
|
|
15
|
+
exports.hasManyToMany = hasManyToMany;
|
|
8
16
|
class ManyToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
9
17
|
constructor(joinTableName,
|
|
10
18
|
// I.e. when entity = Book:
|
|
@@ -23,10 +31,12 @@ class ManyToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
23
31
|
this.otherColumnName = otherColumnName;
|
|
24
32
|
this.addedBeforeLoaded = [];
|
|
25
33
|
this.removedBeforeLoaded = [];
|
|
34
|
+
this[_a] = null;
|
|
35
|
+
this[_b] = null;
|
|
26
36
|
this.isCascadeDelete = otherMeta.config.__data.cascadeDeleteFields.includes(fieldName);
|
|
27
37
|
}
|
|
28
38
|
filterDeleted(entities, opts) {
|
|
29
|
-
return
|
|
39
|
+
return opts?.withDeleted === true ? [...entities] : entities.filter((e) => !e.isDeletedEntity);
|
|
30
40
|
}
|
|
31
41
|
async load(opts) {
|
|
32
42
|
(0, __1.ensureNotDeleted)(this.entity, { ignore: "pending" });
|
|
@@ -202,4 +212,5 @@ class ManyToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
202
212
|
}
|
|
203
213
|
}
|
|
204
214
|
exports.ManyToManyCollection = ManyToManyCollection;
|
|
215
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU;
|
|
205
216
|
//# sourceMappingURL=ManyToManyCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/ManyToManyCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ManyToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/ManyToManyCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { Entity, EntityMetadata, IdOf } from "../EntityManager";
|
|
2
2
|
import { Reference } from "../index";
|
|
3
3
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
+
import { ReferenceN } from "./Reference";
|
|
5
|
+
import { RelationT, RelationU } from "./Relation";
|
|
6
|
+
/** An alias for creating `ManyToOneReference`s. */
|
|
7
|
+
export declare function hasOne<T extends Entity, U extends Entity, N extends never | undefined>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U): ManyToOneReference<T, U, N>;
|
|
8
|
+
/** Type guard utility for determining if an entity field is a ManyToOneReference. */
|
|
9
|
+
export declare function isManyToOneReference(maybeReference: any): maybeReference is ManyToOneReference<any, any, any>;
|
|
10
|
+
export interface ManyToOneReference<T extends Entity, U extends Entity, N extends never | undefined> extends Reference<T, U, N> {
|
|
11
|
+
/** Returns the id of the current assigned entity (or `undefined` if its new and has no id yet), or `undefined` if this column is nullable and currently unset. */
|
|
12
|
+
id: IdOf<U> | undefined;
|
|
13
|
+
/** Returns the id of the current assigned entity or a runtime error if it's either 1) unset or 2) set to a new entity that doesn't have an `id` yet. */
|
|
14
|
+
idOrFail: IdOf<U>;
|
|
15
|
+
idUntagged: string | undefined;
|
|
16
|
+
idUntaggedOrFail: string;
|
|
17
|
+
/** Returns `true` if this relation is currently set (i.e. regardless of whether it's loaded, or if it is set but the assigned entity doesn't have an id saved. */
|
|
18
|
+
readonly isSet: boolean;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Manages a foreign key from one entity to another, i.e. `Book.author --> Author`.
|
|
6
22
|
*
|
|
@@ -12,14 +28,14 @@ import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
|
12
28
|
* be half of a one-to-one relationship, but we'll keep using this `ManyToOneReference` on the "many"
|
|
13
29
|
* side, and the other side, i.e. `Author.image` will use a `OneToOneReference` to point back to us.
|
|
14
30
|
*/
|
|
15
|
-
export declare class
|
|
31
|
+
export declare class ManyToOneReferenceImpl<T extends Entity, U extends Entity, N extends never | undefined> extends AbstractRelationImpl<U> implements ManyToOneReference<T, U, N> {
|
|
16
32
|
private entity;
|
|
17
33
|
otherMeta: EntityMetadata<U>;
|
|
18
34
|
private fieldName;
|
|
19
35
|
otherFieldName: keyof U;
|
|
20
36
|
private loaded;
|
|
21
37
|
private _isLoaded;
|
|
22
|
-
private isCascadeDelete;
|
|
38
|
+
private readonly isCascadeDelete;
|
|
23
39
|
constructor(entity: T, otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U);
|
|
24
40
|
load(opts?: {
|
|
25
41
|
withDeleted?: boolean;
|
|
@@ -55,4 +71,7 @@ export declare class ManyToOneReference<T extends Entity, U extends Entity, N ex
|
|
|
55
71
|
* our reference is not specifically loaded.
|
|
56
72
|
*/
|
|
57
73
|
maybeFindEntity(): U | undefined;
|
|
74
|
+
[RelationT]: T;
|
|
75
|
+
[RelationU]: U;
|
|
76
|
+
[ReferenceN]: N;
|
|
58
77
|
}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b, _c;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
+
exports.ManyToOneReferenceImpl = exports.isManyToOneReference = exports.hasOne = void 0;
|
|
4
5
|
const EntityManager_1 = require("../EntityManager");
|
|
5
6
|
const index_1 = require("../index");
|
|
6
7
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
7
8
|
const OneToManyCollection_1 = require("./OneToManyCollection");
|
|
9
|
+
const Reference_1 = require("./Reference");
|
|
10
|
+
const Relation_1 = require("./Relation");
|
|
11
|
+
/** An alias for creating `ManyToOneReference`s. */
|
|
12
|
+
function hasOne(otherMeta, fieldName, otherFieldName) {
|
|
13
|
+
const entity = EntityManager_1.currentlyInstantiatingEntity;
|
|
14
|
+
return new ManyToOneReferenceImpl(entity, otherMeta, fieldName, otherFieldName);
|
|
15
|
+
}
|
|
16
|
+
exports.hasOne = hasOne;
|
|
17
|
+
/** Type guard utility for determining if an entity field is a ManyToOneReference. */
|
|
18
|
+
function isManyToOneReference(maybeReference) {
|
|
19
|
+
return maybeReference instanceof ManyToOneReferenceImpl;
|
|
20
|
+
}
|
|
21
|
+
exports.isManyToOneReference = isManyToOneReference;
|
|
8
22
|
/**
|
|
9
23
|
* Manages a foreign key from one entity to another, i.e. `Book.author --> Author`.
|
|
10
24
|
*
|
|
@@ -16,7 +30,7 @@ const OneToManyCollection_1 = require("./OneToManyCollection");
|
|
|
16
30
|
* be half of a one-to-one relationship, but we'll keep using this `ManyToOneReference` on the "many"
|
|
17
31
|
* side, and the other side, i.e. `Author.image` will use a `OneToOneReference` to point back to us.
|
|
18
32
|
*/
|
|
19
|
-
class
|
|
33
|
+
class ManyToOneReferenceImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
20
34
|
constructor(entity, otherMeta, fieldName, otherFieldName) {
|
|
21
35
|
super();
|
|
22
36
|
this.entity = entity;
|
|
@@ -25,6 +39,9 @@ class ManyToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
25
39
|
this.otherFieldName = otherFieldName;
|
|
26
40
|
// We need a separate boolean to b/c loaded == undefined can still mean "_isLoaded" for nullable fks.
|
|
27
41
|
this._isLoaded = false;
|
|
42
|
+
this[_a] = null;
|
|
43
|
+
this[_b] = null;
|
|
44
|
+
this[_c] = null;
|
|
28
45
|
this.isCascadeDelete = otherMeta.config.__data.cascadeDeleteFields.includes(fieldName);
|
|
29
46
|
}
|
|
30
47
|
async load(opts) {
|
|
@@ -140,16 +157,15 @@ class ManyToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
140
157
|
}
|
|
141
158
|
// Internal method used by OneToManyCollection
|
|
142
159
|
setImpl(other) {
|
|
143
|
-
var _a;
|
|
144
160
|
// If other is new (i.e. has no id), we only noop/early exit if it matches our loaded reference.
|
|
145
161
|
// Otherwise, noop/early exit based on id comparison (b/c we may not be loaded yet).
|
|
146
|
-
if (
|
|
162
|
+
if (other?.isNewEntity ? other === this.loaded : this.id === other?.id) {
|
|
147
163
|
return;
|
|
148
164
|
}
|
|
149
165
|
(0, index_1.ensureNotDeleted)(this.entity, { ignore: "pending" });
|
|
150
166
|
const previous = this.maybeFindEntity();
|
|
151
167
|
// Prefer to keep the id in our data hash, but if this is a new entity w/o an id, use the entity itself
|
|
152
|
-
(0, index_1.setField)(this.entity, this.fieldName,
|
|
168
|
+
(0, index_1.setField)(this.entity, this.fieldName, other?.id ?? other);
|
|
153
169
|
this.loaded = other;
|
|
154
170
|
this._isLoaded = true;
|
|
155
171
|
this.maybeRemove(previous);
|
|
@@ -189,7 +205,7 @@ class ManyToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
189
205
|
return `ManyToOneReference(entity: ${this.entity}, fieldName: ${this.fieldName}, otherType: ${this.otherMeta.type}, otherFieldName: ${this.otherFieldName}, id: ${this.id})`;
|
|
190
206
|
}
|
|
191
207
|
filterDeleted(entity, opts) {
|
|
192
|
-
return
|
|
208
|
+
return opts?.withDeleted === true || entity === undefined || !entity.isDeletedEntity ? entity : undefined;
|
|
193
209
|
}
|
|
194
210
|
/** Returns the other relation that points back at us, i.e. we're `book.author_id` and this is `Author.books`. */
|
|
195
211
|
getOtherRelation(other) {
|
|
@@ -200,10 +216,10 @@ class ManyToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
200
216
|
* our reference is not specifically loaded.
|
|
201
217
|
*/
|
|
202
218
|
maybeFindEntity() {
|
|
203
|
-
var _a;
|
|
204
219
|
// Check this.loaded first b/c a new entity won't have an id yet
|
|
205
|
-
return
|
|
220
|
+
return this.loaded ?? (this.id !== undefined ? (0, index_1.getEm)(this.entity)["findExistingInstance"](this.id) : undefined);
|
|
206
221
|
}
|
|
207
222
|
}
|
|
208
|
-
exports.
|
|
223
|
+
exports.ManyToOneReferenceImpl = ManyToOneReferenceImpl;
|
|
224
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU, _c = Reference_1.ReferenceN;
|
|
209
225
|
//# sourceMappingURL=ManyToOneReference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToOneReference.js","sourceRoot":"","sources":["../../../src/relations/ManyToOneReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ManyToOneReference.js","sourceRoot":"","sources":["../../../src/relations/ManyToOneReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Collection, Entity, EntityMetadata, IdOf } from "../index";
|
|
2
2
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
3
|
+
import { RelationT, RelationU } from "./Relation";
|
|
4
|
+
/** An alias for creating `OneToManyCollection`s. */
|
|
5
|
+
export declare function hasMany<T extends Entity, U extends Entity>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U, otherColumnName: string): Collection<T, U>;
|
|
3
6
|
export declare class OneToManyCollection<T extends Entity, U extends Entity> extends AbstractRelationImpl<U[]> implements Collection<T, U> {
|
|
4
7
|
entity: T;
|
|
5
8
|
otherMeta: EntityMetadata<U>;
|
|
@@ -38,4 +41,6 @@ export declare class OneToManyCollection<T extends Entity, U extends Entity> ext
|
|
|
38
41
|
private filterDeleted;
|
|
39
42
|
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
40
43
|
private getOtherRelation;
|
|
44
|
+
[RelationT]: T;
|
|
45
|
+
[RelationU]: U;
|
|
41
46
|
}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OneToManyCollection = void 0;
|
|
4
|
+
exports.OneToManyCollection = exports.hasMany = void 0;
|
|
4
5
|
const oneToManyDataLoader_1 = require("../dataloaders/oneToManyDataLoader");
|
|
5
6
|
const index_1 = require("../index");
|
|
6
7
|
const utils_1 = require("../utils");
|
|
7
8
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
9
|
+
const Relation_1 = require("./Relation");
|
|
10
|
+
/** An alias for creating `OneToManyCollection`s. */
|
|
11
|
+
function hasMany(otherMeta, fieldName, otherFieldName, otherColumnName) {
|
|
12
|
+
const entity = index_1.currentlyInstantiatingEntity;
|
|
13
|
+
return new OneToManyCollection(entity, otherMeta, fieldName, otherFieldName, otherColumnName);
|
|
14
|
+
}
|
|
15
|
+
exports.hasMany = hasMany;
|
|
8
16
|
class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
9
17
|
constructor(
|
|
10
18
|
// These are public to our internal implementation but not exposed in the Collection API
|
|
@@ -20,6 +28,8 @@ class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
20
28
|
// groups the hydrated rows by their _current parent m2o field value_, which for a removed child will no
|
|
21
29
|
// longer be us, so it will effectively not show up in our post-load `loaded` array.
|
|
22
30
|
this.addedBeforeLoaded = [];
|
|
31
|
+
this[_a] = null;
|
|
32
|
+
this[_b] = null;
|
|
23
33
|
this.isCascadeDelete = (0, index_1.getMetadata)(entity).config.__data.cascadeDeleteFields.includes(fieldName);
|
|
24
34
|
}
|
|
25
35
|
// opts is an internal parameter
|
|
@@ -160,7 +170,7 @@ class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
160
170
|
}
|
|
161
171
|
maybeAppendAddedBeforeLoaded() {
|
|
162
172
|
if (this.loaded) {
|
|
163
|
-
const newEntities = this.addedBeforeLoaded.filter((e) =>
|
|
173
|
+
const newEntities = this.addedBeforeLoaded.filter((e) => !this.loaded?.includes(e));
|
|
164
174
|
// Push on the end to better match the db order of "newer things come last"
|
|
165
175
|
for (const e of newEntities) {
|
|
166
176
|
this.loaded.push(e);
|
|
@@ -175,7 +185,7 @@ class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
175
185
|
return `OneToManyCollection(entity: ${this.entity}, fieldName: ${this.fieldName}, otherType: ${this.otherMeta.type}, otherFieldName: ${this.otherFieldName})`;
|
|
176
186
|
}
|
|
177
187
|
filterDeleted(entities, opts) {
|
|
178
|
-
return
|
|
188
|
+
return opts?.withDeleted === true ? [...entities] : entities.filter((e) => !e.isDeletedEntity);
|
|
179
189
|
}
|
|
180
190
|
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
181
191
|
getOtherRelation(other) {
|
|
@@ -183,4 +193,5 @@ class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
183
193
|
}
|
|
184
194
|
}
|
|
185
195
|
exports.OneToManyCollection = OneToManyCollection;
|
|
196
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU;
|
|
186
197
|
//# sourceMappingURL=OneToManyCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/OneToManyCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/OneToManyCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
import { IdOf,
|
|
1
|
+
import { IdOf, LoadedReference } from "../";
|
|
2
2
|
import { Entity, EntityMetadata } from "../EntityManager";
|
|
3
3
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
+
import { Reference, ReferenceN } from "./Reference";
|
|
5
|
+
import { RelationT, RelationU } from "./Relation";
|
|
6
|
+
declare const OneToOne: unique symbol;
|
|
7
|
+
/** The lazy-loaded/lookup side of a one-to-one, i.e. the side w/o the unique foreign key column. */
|
|
8
|
+
export interface OneToOneReference<T extends Entity, U extends Entity> extends Reference<T, U, undefined> {
|
|
9
|
+
[OneToOne]: T;
|
|
10
|
+
}
|
|
11
|
+
/** Adds a known-safe `get` accessor. */
|
|
12
|
+
export interface LoadedOneToOneReference<T extends Entity, U extends Entity> extends LoadedReference<T, U, undefined> {
|
|
13
|
+
get: U | undefined;
|
|
14
|
+
getWithDeleted: U | undefined;
|
|
15
|
+
/** Returns the id of the current assigned entity or a runtime error if it's either a) unset or b) set to a new entity that doesn't have an `id` yet. */
|
|
16
|
+
idOrFail: IdOf<U>;
|
|
17
|
+
idUntagged: string | undefined;
|
|
18
|
+
idUntaggedOrFail: string;
|
|
19
|
+
/** Returns `true` if this relation is currently set (i.e. regardless of whether it's loaded, or if it is set but the assigned entity doesn't have an id saved. */
|
|
20
|
+
readonly isSet: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Type guard utility for determining if an entity field is a Reference. */
|
|
23
|
+
export declare function isOneToOneReference(maybeReference: any): maybeReference is OneToOneReference<any, any>;
|
|
24
|
+
/** Type guard utility for determining if an entity field is a loaded Reference. */
|
|
25
|
+
export declare function isLoadedOneToOneReference(maybeReference: any): maybeReference is Reference<any, any, any> & LoadedOneToOneReference<any, any>;
|
|
26
|
+
/** An alias for creating `OneToOneReference`s. */
|
|
27
|
+
export declare function hasOneToOne<T extends Entity, U extends Entity>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U, otherColumnName: string): OneToOneReference<T, U>;
|
|
4
28
|
/**
|
|
5
29
|
* Represents the "many" side of a one-to-one relationship.
|
|
6
30
|
*
|
|
@@ -18,7 +42,7 @@ import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
|
18
42
|
* Currently we enforce this with a runtime check, which is not great, but the trade-off of implementing
|
|
19
43
|
* `Reference` seemed worth the downside of a un-type-safe `.id` property.
|
|
20
44
|
*/
|
|
21
|
-
export declare class
|
|
45
|
+
export declare class OneToOneReferenceImpl<T extends Entity, U extends Entity> extends AbstractRelationImpl<U> implements OneToOneReference<T, U> {
|
|
22
46
|
entity: T;
|
|
23
47
|
otherMeta: EntityMetadata<U>;
|
|
24
48
|
fieldName: keyof T;
|
|
@@ -50,4 +74,9 @@ export declare class OneToOneReference<T extends Entity, U extends Entity> exten
|
|
|
50
74
|
private filterDeleted;
|
|
51
75
|
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
52
76
|
private getOtherRelation;
|
|
77
|
+
[RelationT]: never;
|
|
78
|
+
[RelationU]: never;
|
|
79
|
+
[ReferenceN]: never;
|
|
80
|
+
[OneToOne]: never;
|
|
53
81
|
}
|
|
82
|
+
export {};
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b, _c, _d;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
+
exports.OneToOneReferenceImpl = exports.hasOneToOne = exports.isLoadedOneToOneReference = exports.isOneToOneReference = void 0;
|
|
4
5
|
const __1 = require("../");
|
|
5
6
|
const oneToOneDataLoader_1 = require("../dataloaders/oneToOneDataLoader");
|
|
6
7
|
const EntityManager_1 = require("../EntityManager");
|
|
7
8
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
9
|
+
const Reference_1 = require("./Reference");
|
|
10
|
+
const Relation_1 = require("./Relation");
|
|
11
|
+
const OneToOne = Symbol();
|
|
12
|
+
/** Type guard utility for determining if an entity field is a Reference. */
|
|
13
|
+
function isOneToOneReference(maybeReference) {
|
|
14
|
+
return maybeReference instanceof OneToOneReferenceImpl;
|
|
15
|
+
}
|
|
16
|
+
exports.isOneToOneReference = isOneToOneReference;
|
|
17
|
+
/** Type guard utility for determining if an entity field is a loaded Reference. */
|
|
18
|
+
function isLoadedOneToOneReference(maybeReference) {
|
|
19
|
+
return isOneToOneReference(maybeReference) && maybeReference.isLoaded;
|
|
20
|
+
}
|
|
21
|
+
exports.isLoadedOneToOneReference = isLoadedOneToOneReference;
|
|
22
|
+
/** An alias for creating `OneToOneReference`s. */
|
|
23
|
+
function hasOneToOne(otherMeta, fieldName, otherFieldName, otherColumnName) {
|
|
24
|
+
const entity = __1.currentlyInstantiatingEntity;
|
|
25
|
+
return new OneToOneReferenceImpl(entity, otherMeta, fieldName, otherFieldName, otherColumnName);
|
|
26
|
+
}
|
|
27
|
+
exports.hasOneToOne = hasOneToOne;
|
|
8
28
|
/**
|
|
9
29
|
* Represents the "many" side of a one-to-one relationship.
|
|
10
30
|
*
|
|
@@ -22,7 +42,7 @@ const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
|
22
42
|
* Currently we enforce this with a runtime check, which is not great, but the trade-off of implementing
|
|
23
43
|
* `Reference` seemed worth the downside of a un-type-safe `.id` property.
|
|
24
44
|
*/
|
|
25
|
-
class
|
|
45
|
+
class OneToOneReferenceImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
26
46
|
constructor(
|
|
27
47
|
// These are public to our internal implementation but not exposed in the Collection API
|
|
28
48
|
entity, otherMeta, fieldName, otherFieldName, otherColumnName) {
|
|
@@ -33,12 +53,15 @@ class OneToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
33
53
|
this.otherFieldName = otherFieldName;
|
|
34
54
|
this.otherColumnName = otherColumnName;
|
|
35
55
|
this._isLoaded = false;
|
|
56
|
+
this[_a] = null;
|
|
57
|
+
this[_b] = null;
|
|
58
|
+
this[_c] = null;
|
|
59
|
+
this[_d] = null;
|
|
36
60
|
this.isCascadeDelete = (0, EntityManager_1.getMetadata)(entity).config.__data.cascadeDeleteFields.includes(fieldName);
|
|
37
61
|
}
|
|
38
62
|
get id() {
|
|
39
|
-
var _a;
|
|
40
63
|
if (this._isLoaded) {
|
|
41
|
-
return
|
|
64
|
+
return this.loaded?.id;
|
|
42
65
|
}
|
|
43
66
|
throw new Error(`${this.entity}.${this.fieldName} was not loaded`);
|
|
44
67
|
}
|
|
@@ -133,12 +156,13 @@ class OneToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
133
156
|
return `OneToOneReference(entity: ${this.entity}, fieldName: ${this.fieldName}, otherType: ${this.otherMeta.type}, otherFieldName: ${this.otherFieldName})`;
|
|
134
157
|
}
|
|
135
158
|
filterDeleted(entity, opts) {
|
|
136
|
-
return
|
|
159
|
+
return opts?.withDeleted === true || entity === undefined || !entity.isDeletedEntity ? entity : undefined;
|
|
137
160
|
}
|
|
138
161
|
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
139
162
|
getOtherRelation(other) {
|
|
140
163
|
return other[this.otherFieldName];
|
|
141
164
|
}
|
|
142
165
|
}
|
|
143
|
-
exports.
|
|
166
|
+
exports.OneToOneReferenceImpl = OneToOneReferenceImpl;
|
|
167
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU, _c = Reference_1.ReferenceN, _d = OneToOne;
|
|
144
168
|
//# sourceMappingURL=OneToOneReference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToOneReference.js","sourceRoot":"","sources":["../../../src/relations/OneToOneReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneToOneReference.js","sourceRoot":"","sources":["../../../src/relations/OneToOneReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { Entity, IdOf } from "../EntityManager";
|
|
2
2
|
import { Reference } from "../index";
|
|
3
3
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
+
import { ReferenceN } from "./Reference";
|
|
5
|
+
import { RelationT, RelationU } from "./Relation";
|
|
6
|
+
export declare function hasOnePolymorphic<T extends Entity, U extends Entity, N extends never | undefined>(fieldName: keyof T): PolymorphicReference<T, U, N>;
|
|
7
|
+
/** Type guard utility for determining if an entity field is a PolymorphicReference. */
|
|
8
|
+
export declare function isPolymorphicReference(maybeReference: any): maybeReference is PolymorphicReference<any, any, any>;
|
|
9
|
+
export interface PolymorphicReference<T extends Entity, U extends Entity, N extends never | undefined> extends Reference<T, U, N> {
|
|
10
|
+
/** Returns the id of the current assigned entity (or `undefined` if its new and has no id yet), or `undefined` if this column is nullable and currently unset. */
|
|
11
|
+
id: IdOf<U> | undefined;
|
|
12
|
+
/** Returns the id of the current assigned entity or a runtime error if it's either 1) unset or 2) set to a new entity that doesn't have an `id` yet. */
|
|
13
|
+
idOrFail: IdOf<U>;
|
|
14
|
+
idUntagged: string | undefined;
|
|
15
|
+
idUntaggedOrFail: string;
|
|
16
|
+
/** Returns `true` if this relation is currently set (i.e. regardless of whether it's loaded, or if it is set but the assigned entity doesn't have an id saved. */
|
|
17
|
+
readonly isSet: boolean;
|
|
18
|
+
}
|
|
4
19
|
/**
|
|
5
20
|
* Manages a set of foreign keys from one entity to another, i.e. `Comment.parent --> Book | BookReview`.
|
|
6
21
|
*
|
|
@@ -12,7 +27,7 @@ import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
|
12
27
|
* essentially be half of a one-to-one relationship, but we'll keep using this reference on the "owning" side; the other
|
|
13
28
|
* side, i.e. `BookReview.comment` will use a `OneToOneReference` to point back to us.
|
|
14
29
|
*/
|
|
15
|
-
export declare class
|
|
30
|
+
export declare class PolymorphicReferenceImpl<T extends Entity, U extends Entity, N extends never | undefined> extends AbstractRelationImpl<U> implements PolymorphicReference<T, U, N> {
|
|
16
31
|
private entity;
|
|
17
32
|
private fieldName;
|
|
18
33
|
private loaded;
|
|
@@ -48,4 +63,7 @@ export declare class PolymorphicReference<T extends Entity, U extends Entity, N
|
|
|
48
63
|
/** Returns the other relation that points back at us, i.e. we're `comment.parent_book_id` and this is `Book.comments`. */
|
|
49
64
|
private getOtherRelation;
|
|
50
65
|
private maybeFindExisting;
|
|
66
|
+
[RelationT]: T;
|
|
67
|
+
[RelationU]: U;
|
|
68
|
+
[ReferenceN]: N;
|
|
51
69
|
}
|