joist-orm 0.1.536 → 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
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ManyToManyCollection = void 0;
|
|
7
|
-
const dataloader_1 = __importDefault(require("dataloader"));
|
|
8
|
-
const __1 = require("../");
|
|
9
|
-
const utils_1 = require("../utils");
|
|
10
|
-
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
11
|
-
class ManyToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
12
|
-
constructor(joinTableName,
|
|
13
|
-
// I.e. when entity = Book:
|
|
14
|
-
// fieldName == tags, because it's our collection to tags
|
|
15
|
-
// columnName = book_id, what we use as the `where book_id = us` to find our join table rows
|
|
16
|
-
// otherFieldName = books, how tags points to us
|
|
17
|
-
// otherColumnName = tag_id, how the other side finds its join table rows
|
|
18
|
-
entity, fieldName, columnName, otherMeta, otherFieldName, otherColumnName) {
|
|
19
|
-
super();
|
|
20
|
-
this.joinTableName = joinTableName;
|
|
21
|
-
this.entity = entity;
|
|
22
|
-
this.fieldName = fieldName;
|
|
23
|
-
this.columnName = columnName;
|
|
24
|
-
this.otherMeta = otherMeta;
|
|
25
|
-
this.otherFieldName = otherFieldName;
|
|
26
|
-
this.otherColumnName = otherColumnName;
|
|
27
|
-
this.addedBeforeLoaded = [];
|
|
28
|
-
this.removedBeforeLoaded = [];
|
|
29
|
-
this.isCascadeDelete = otherMeta.config.__data.cascadeDeleteFields.includes(fieldName);
|
|
30
|
-
}
|
|
31
|
-
filterDeleted(entities, opts) {
|
|
32
|
-
return (opts === null || opts === void 0 ? void 0 : opts.withDeleted) === true ? [...entities] : entities.filter((e) => !e.isDeletedEntity);
|
|
33
|
-
}
|
|
34
|
-
async load(opts) {
|
|
35
|
-
__1.ensureNotDeleted(this.entity, { ignore: "pending" });
|
|
36
|
-
if (this.loaded === undefined) {
|
|
37
|
-
// TODO This key is basically a Reference, whenever we have that.
|
|
38
|
-
// TODO Unsaved entities should never get here
|
|
39
|
-
const key = `${this.columnName}=${this.entity.id}`;
|
|
40
|
-
this.loaded = await loaderForJoinTable(this).load(key);
|
|
41
|
-
this.maybeApplyAddedAndRemovedBeforeLoaded();
|
|
42
|
-
}
|
|
43
|
-
return this.filterDeleted(this.loaded, opts);
|
|
44
|
-
}
|
|
45
|
-
async find(id) {
|
|
46
|
-
return (await this.load()).find((u) => u.id === id);
|
|
47
|
-
}
|
|
48
|
-
add(other, percolated = false) {
|
|
49
|
-
__1.ensureNotDeleted(this.entity);
|
|
50
|
-
if (this.loaded !== undefined) {
|
|
51
|
-
if (this.loaded.includes(other)) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
this.loaded.push(other);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
if (this.addedBeforeLoaded.includes(other)) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
this.addedBeforeLoaded.push(other);
|
|
61
|
-
}
|
|
62
|
-
if (!percolated) {
|
|
63
|
-
const joinRow = {
|
|
64
|
-
id: undefined,
|
|
65
|
-
m2m: this,
|
|
66
|
-
[this.columnName]: this.entity,
|
|
67
|
-
[this.otherColumnName]: other,
|
|
68
|
-
};
|
|
69
|
-
utils_1.getOrSet(__1.getEm(this.entity).__data.joinRows, this.joinTableName, []).push(joinRow);
|
|
70
|
-
other[this.otherFieldName].add(this.entity, true);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
remove(other, percolated = false) {
|
|
74
|
-
__1.ensureNotDeleted(this.entity, { ignore: "pending" });
|
|
75
|
-
if (!percolated) {
|
|
76
|
-
const joinRows = utils_1.getOrSet(__1.getEm(this.entity).__data.joinRows, this.joinTableName, []);
|
|
77
|
-
const row = joinRows.find((r) => r[this.columnName] === this.entity && r[this.otherColumnName] === other);
|
|
78
|
-
if (row) {
|
|
79
|
-
row.deleted = true;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
const joinRow = {
|
|
83
|
-
// Use -1 to force the sortJoinRows to notice us as dirty ("delete: true but id is set")
|
|
84
|
-
id: -1,
|
|
85
|
-
m2m: this,
|
|
86
|
-
[this.columnName]: this.entity,
|
|
87
|
-
[this.otherColumnName]: other,
|
|
88
|
-
deleted: true,
|
|
89
|
-
};
|
|
90
|
-
utils_1.getOrSet(__1.getEm(this.entity).__data.joinRows, this.joinTableName, []).push(joinRow);
|
|
91
|
-
}
|
|
92
|
-
other[this.otherFieldName].remove(this.entity, true);
|
|
93
|
-
}
|
|
94
|
-
if (this.loaded !== undefined) {
|
|
95
|
-
utils_1.remove(this.loaded, other);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
utils_1.remove(this.addedBeforeLoaded, other);
|
|
99
|
-
this.removedBeforeLoaded.push(other);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
doGet() {
|
|
103
|
-
__1.ensureNotDeleted(this.entity);
|
|
104
|
-
if (this.loaded === undefined) {
|
|
105
|
-
if (this.entity.id === undefined) {
|
|
106
|
-
return this.addedBeforeLoaded;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
// This should only be callable in the type system if we've already resolved this to an instance
|
|
110
|
-
throw new Error("get was called when not loaded");
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return this.loaded;
|
|
114
|
-
}
|
|
115
|
-
get getWithDeleted() {
|
|
116
|
-
return this.filterDeleted(this.doGet(), { withDeleted: true });
|
|
117
|
-
}
|
|
118
|
-
get get() {
|
|
119
|
-
return this.filterDeleted(this.doGet(), { withDeleted: false });
|
|
120
|
-
}
|
|
121
|
-
set(values) {
|
|
122
|
-
__1.ensureNotDeleted(this.entity);
|
|
123
|
-
if (this.loaded === undefined) {
|
|
124
|
-
throw new Error("set was called when not loaded");
|
|
125
|
-
}
|
|
126
|
-
// Make a copy for safe iteration
|
|
127
|
-
const loaded = [...this.loaded];
|
|
128
|
-
// Remove old values
|
|
129
|
-
for (const other of loaded) {
|
|
130
|
-
if (!values.includes(other)) {
|
|
131
|
-
this.remove(other);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
for (const other of values) {
|
|
135
|
-
if (!loaded.includes(other)) {
|
|
136
|
-
this.add(other);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
removeAll() {
|
|
141
|
-
__1.ensureNotDeleted(this.entity);
|
|
142
|
-
if (this.loaded === undefined) {
|
|
143
|
-
throw new Error("removeAll was called when not loaded");
|
|
144
|
-
}
|
|
145
|
-
for (const other of [...this.loaded]) {
|
|
146
|
-
this.remove(other);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// impl details
|
|
150
|
-
setFromOpts(others) {
|
|
151
|
-
this.loaded = [];
|
|
152
|
-
others.forEach((o) => this.add(o));
|
|
153
|
-
}
|
|
154
|
-
initializeForNewEntity() {
|
|
155
|
-
// Don't overwrite any opts values
|
|
156
|
-
if (this.loaded === undefined) {
|
|
157
|
-
this.loaded = [];
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
async refreshIfLoaded() {
|
|
161
|
-
__1.ensureNotDeleted(this.entity);
|
|
162
|
-
// TODO We should remember what load hints have been applied to this collection and re-apply them.
|
|
163
|
-
if (this.loaded !== undefined && this.entity.id !== undefined) {
|
|
164
|
-
const key = `${this.columnName}=${this.entity.id}`;
|
|
165
|
-
const loader = loaderForJoinTable(this);
|
|
166
|
-
loader.clear(key);
|
|
167
|
-
this.loaded = await loader.load(key);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
onEntityDelete() {
|
|
171
|
-
if (this.isCascadeDelete) {
|
|
172
|
-
this.current({ withDeleted: true }).forEach(__1.getEm(this.entity).delete);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
async onEntityDeletedAndFlushing() {
|
|
176
|
-
const entities = await this.load({ withDeleted: true });
|
|
177
|
-
entities.forEach((other) => {
|
|
178
|
-
const m2m = other[this.otherFieldName];
|
|
179
|
-
m2m.remove(this.entity);
|
|
180
|
-
});
|
|
181
|
-
this.loaded = [];
|
|
182
|
-
}
|
|
183
|
-
maybeApplyAddedAndRemovedBeforeLoaded() {
|
|
184
|
-
if (this.loaded) {
|
|
185
|
-
// this.loaded.unshift(...this.addedBeforeLoaded);
|
|
186
|
-
// this.addedBeforeLoaded = [];
|
|
187
|
-
this.removedBeforeLoaded.forEach((e) => {
|
|
188
|
-
utils_1.remove(this.loaded, e);
|
|
189
|
-
const em = __1.getEm(this.entity);
|
|
190
|
-
const row = em.__data.joinRows[this.joinTableName].find((r) => r[this.columnName] === this.entity && r[this.otherColumnName] === e);
|
|
191
|
-
if (row) {
|
|
192
|
-
row.deleted = true;
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
this.removedBeforeLoaded = [];
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
current(opts) {
|
|
199
|
-
return this.filterDeleted(this.loaded || this.addedBeforeLoaded, opts);
|
|
200
|
-
}
|
|
201
|
-
get meta() {
|
|
202
|
-
return __1.getMetadata(this.entity);
|
|
203
|
-
}
|
|
204
|
-
toString() {
|
|
205
|
-
return `OneToManyCollection(entity: ${this.entity}, fieldName: ${this.fieldName}, otherType: ${this.otherMeta.type}, otherFieldName: ${this.otherFieldName})`;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
exports.ManyToManyCollection = ManyToManyCollection;
|
|
209
|
-
function loaderForJoinTable(collection) {
|
|
210
|
-
const { joinTableName } = collection;
|
|
211
|
-
const em = __1.getEm(collection.entity);
|
|
212
|
-
return utils_1.getOrSet(em.__data.loaders, joinTableName, () => {
|
|
213
|
-
return new dataloader_1.default(async (keys) => loadFromJoinTable(collection, keys));
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Loads join rows (batched).
|
|
218
|
-
*
|
|
219
|
-
* I.e. we can load the `books_to_tags` join rows for multiple `Book`s at a time, or even
|
|
220
|
-
* load `books_to_tags` for several `Book`s and several `Tag`s in a single SQL query.
|
|
221
|
-
*/
|
|
222
|
-
async function loadFromJoinTable(collection, keys) {
|
|
223
|
-
const { joinTableName } = collection;
|
|
224
|
-
const em = __1.getEm(collection.entity);
|
|
225
|
-
// Break out `column_id=string` keys out
|
|
226
|
-
const columns = {};
|
|
227
|
-
keys.forEach((key) => {
|
|
228
|
-
const [columnId, id] = key.split("=");
|
|
229
|
-
utils_1.getOrSet(columns, columnId, []).push(id);
|
|
230
|
-
});
|
|
231
|
-
// Or together `where tag_id in (...)` and `book_id in (...)`
|
|
232
|
-
let query = em.knex.select("*").from(joinTableName);
|
|
233
|
-
Object.entries(columns).forEach(([columnId, values]) => {
|
|
234
|
-
// Pick the right meta i.e. tag_id --> TagMeta or book_id --> BookMeta
|
|
235
|
-
const meta = collection.columnName == columnId ? __1.getMetadata(collection.entity) : collection.otherMeta;
|
|
236
|
-
query = query.orWhereIn(columnId, values.map((id) => __1.keyToNumber(meta, id)));
|
|
237
|
-
});
|
|
238
|
-
const rows = await query.orderBy("id");
|
|
239
|
-
// Make a map that will be both `tag_id=2 -> [...]` and `book_id=3 -> [...]`
|
|
240
|
-
const rowsByKey = {};
|
|
241
|
-
// Keep a reference to our row to track updates/deletes
|
|
242
|
-
const emJoinRows = utils_1.getOrSet(em.__data.joinRows, joinTableName, []);
|
|
243
|
-
// The order of column1/column2 doesn't really matter, i.e. if the opposite-side collection is later used
|
|
244
|
-
const column1 = collection.columnName;
|
|
245
|
-
const meta1 = collection.entity.__orm.metadata;
|
|
246
|
-
const column2 = collection.otherColumnName;
|
|
247
|
-
const meta2 = collection.otherMeta;
|
|
248
|
-
// For each join table row, we use `EntityManager.load` to get both entities loaded.
|
|
249
|
-
// This will be another 1 or 2 queries (depending on whether we're loading just
|
|
250
|
-
// `book.getTags` (1 query to load new tags) or both `book.getTags` and `tag.getBooks
|
|
251
|
-
// (1 query to load the new tags and 1 query to look the new books)).
|
|
252
|
-
//
|
|
253
|
-
// Eventually we could have this query join into the entity tables themselves, i.e.
|
|
254
|
-
// `books` and `tags`, and use those results to hydrate the newly-found entities.
|
|
255
|
-
await Promise.all(rows.map(async (dbRow) => {
|
|
256
|
-
// We may have already loaded this join row in a prior load of the opposite side of this m2m.
|
|
257
|
-
let emRow = emJoinRows.find((jr) => {
|
|
258
|
-
return (jr[column1].id === __1.keyToString(meta1, dbRow[column1]) &&
|
|
259
|
-
jr[column2].id === __1.keyToString(meta2, dbRow[column2]));
|
|
260
|
-
});
|
|
261
|
-
if (!emRow) {
|
|
262
|
-
// For this join table row, load the entities of both foreign keys. Because we are `EntityManager.load`,
|
|
263
|
-
// this is N+1 safe (and will check the Unit of Work for already-loaded entities), but per ^ comment
|
|
264
|
-
// we chould pull these from the row itself if we did a fancier join.
|
|
265
|
-
const p1 = em.load(meta1.cstr, __1.keyToString(meta1, dbRow[column1]));
|
|
266
|
-
const p2 = em.load(meta2.cstr, __1.keyToString(meta2, dbRow[column2]));
|
|
267
|
-
const [e1, e2] = await Promise.all([p1, p2]);
|
|
268
|
-
emRow = { id: dbRow.id, m2m: collection, [column1]: e1, [column2]: e2, created_at: dbRow.created_at };
|
|
269
|
-
emJoinRows.push(emRow);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
// If a placeholder row was created while a ManyToManyCollection was unloaded, and we find it during
|
|
273
|
-
// a subsequent load/query, update its id to be what is in the database.
|
|
274
|
-
emRow.id = dbRow.id;
|
|
275
|
-
}
|
|
276
|
-
// Put this row into the map for both join table columns, i.e. `book_id=2` and `tag_id=3`
|
|
277
|
-
utils_1.getOrSet(rowsByKey, `${column1}=${emRow[column1].id}`, []).push(emRow);
|
|
278
|
-
utils_1.getOrSet(rowsByKey, `${column2}=${emRow[column2].id}`, []).push(emRow);
|
|
279
|
-
}));
|
|
280
|
-
// Map the requested keys, i.e. book_id=2 back to "the tags for book 2".
|
|
281
|
-
return keys.map((key) => {
|
|
282
|
-
const [column] = key.split("=");
|
|
283
|
-
const joinRows = rowsByKey[key] || [];
|
|
284
|
-
const otherColumn = column === collection.columnName ? collection.otherColumnName : collection.columnName;
|
|
285
|
-
return joinRows.map((joinRow) => joinRow[otherColumn]);
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
//# sourceMappingURL=ManyToManyCollection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToManyCollection.js","sourceRoot":"","sources":["../../src/collections/ManyToManyCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Entity, EntityMetadata, IdOf } from "../EntityManager";
|
|
2
|
-
import { Reference } from "../index";
|
|
3
|
-
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
-
/**
|
|
5
|
-
* Manages a foreign key from one entity to another, i.e. `Book.author --> Author`.
|
|
6
|
-
*
|
|
7
|
-
* We keep the current `author` / `author_id` value in the `__orm.data` hash, where the
|
|
8
|
-
* current value could be either the (string) author id from the database, or an entity
|
|
9
|
-
* `Author` that the user has set.
|
|
10
|
-
*
|
|
11
|
-
* Note that if our `images.author_id` column is unique, this `ManyToOneReference` will essentially
|
|
12
|
-
* be half of a one-to-one relationship, but we'll keep using this reference on the "owning"
|
|
13
|
-
* side; the other side, i.e. `Author.image` will use a `OneToOneReference` to point back to us.
|
|
14
|
-
*/
|
|
15
|
-
export declare class ManyToOneReference<T extends Entity, U extends Entity, N extends never | undefined> extends AbstractRelationImpl<U> implements Reference<T, U, N> {
|
|
16
|
-
private entity;
|
|
17
|
-
otherMeta: EntityMetadata<U>;
|
|
18
|
-
private fieldName;
|
|
19
|
-
otherFieldName: keyof U;
|
|
20
|
-
private loaded;
|
|
21
|
-
private isLoaded;
|
|
22
|
-
private isCascadeDelete;
|
|
23
|
-
constructor(entity: T, otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U);
|
|
24
|
-
load(opts?: {
|
|
25
|
-
withDeleted?: boolean;
|
|
26
|
-
}): Promise<U | N>;
|
|
27
|
-
set(other: U | N): void;
|
|
28
|
-
get isSet(): boolean;
|
|
29
|
-
private doGet;
|
|
30
|
-
get getWithDeleted(): U | N;
|
|
31
|
-
get get(): U | N;
|
|
32
|
-
get id(): IdOf<U> | undefined;
|
|
33
|
-
get idOrFail(): IdOf<U>;
|
|
34
|
-
get idUntagged(): string | undefined;
|
|
35
|
-
get idUntaggedOrFail(): string;
|
|
36
|
-
setFromOpts(other: U): void;
|
|
37
|
-
initializeForNewEntity(): void;
|
|
38
|
-
refreshIfLoaded(): Promise<void>;
|
|
39
|
-
onEntityDelete(): void;
|
|
40
|
-
onEntityDeletedAndFlushing(): Promise<void>;
|
|
41
|
-
setImpl(other: U | N): void;
|
|
42
|
-
current(opts?: {
|
|
43
|
-
withDeleted?: boolean;
|
|
44
|
-
}): U | string | N;
|
|
45
|
-
toString(): string;
|
|
46
|
-
private filterDeleted;
|
|
47
|
-
/** Returns the other relation that points back at us, i.e. we're `book.author_id` and this is `Author.books`. */
|
|
48
|
-
private getOtherRelation;
|
|
49
|
-
private maybeFindExisting;
|
|
50
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToOneReference.js","sourceRoot":"","sources":["../../src/collections/ManyToOneReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneToManyCollection.js","sourceRoot":"","sources":["../../src/collections/OneToManyCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { IdOf, Reference } from "../";
|
|
2
|
-
import { Entity, EntityMetadata } from "../EntityManager";
|
|
3
|
-
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
-
/**
|
|
5
|
-
* Represents the "many" side of a one-to-one relationship.
|
|
6
|
-
*
|
|
7
|
-
* I.e. in a one-to-many from Book -> Reviews, there is a review.book_id that can have many books.
|
|
8
|
-
*
|
|
9
|
-
* This class is for when that `review.book_id` column is itself unique, i.e. like `image.book_id`, and
|
|
10
|
-
* so instead of `Book.images: OneToManyCollection` we have a `Book.image: OneToOneReference`.
|
|
11
|
-
*
|
|
12
|
-
* This class implements `Reference` because it is essentially like "one entity pointing/refereing to another",
|
|
13
|
-
* however because we require a `.load` call to lazily know the value of other side (unlike ManyToOneReference
|
|
14
|
-
* which has it's `book_id` column immediately available in the entity `data` hash), there is some wonkiness
|
|
15
|
-
* around methods like `Reference.id` that are usually callable without `load`/`populate`, that for this
|
|
16
|
-
* class can actually only be called post `load`/`populate`.
|
|
17
|
-
*
|
|
18
|
-
* Currently we enforce this with a runtime check, which is not great, but the trade-off of implementing
|
|
19
|
-
* `Reference` seemed worth the downside of a un-type-safe `.id` property.
|
|
20
|
-
*/
|
|
21
|
-
export declare class OneToOneReference<T extends Entity, U extends Entity> extends AbstractRelationImpl<U> implements Reference<T, U, undefined> {
|
|
22
|
-
entity: T;
|
|
23
|
-
otherMeta: EntityMetadata<U>;
|
|
24
|
-
fieldName: keyof T;
|
|
25
|
-
otherFieldName: keyof U;
|
|
26
|
-
private loaded;
|
|
27
|
-
private isLoaded;
|
|
28
|
-
private isCascadeDelete;
|
|
29
|
-
constructor(entity: T, otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U);
|
|
30
|
-
get id(): IdOf<U> | undefined;
|
|
31
|
-
get idOrFail(): IdOf<U>;
|
|
32
|
-
get idUntagged(): string | undefined;
|
|
33
|
-
get idUntaggedOrFail(): string;
|
|
34
|
-
get isSet(): boolean;
|
|
35
|
-
load(opts?: {
|
|
36
|
-
withDeleted?: boolean;
|
|
37
|
-
}): Promise<U | undefined>;
|
|
38
|
-
set(other: U): void;
|
|
39
|
-
get getWithDeleted(): U | undefined;
|
|
40
|
-
get get(): U | undefined;
|
|
41
|
-
private doGet;
|
|
42
|
-
setFromOpts(other: U): void;
|
|
43
|
-
initializeForNewEntity(): void;
|
|
44
|
-
refreshIfLoaded(): Promise<void>;
|
|
45
|
-
onEntityDelete(): void;
|
|
46
|
-
onEntityDeletedAndFlushing(): Promise<void>;
|
|
47
|
-
toString(): string;
|
|
48
|
-
private filterDeleted;
|
|
49
|
-
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
50
|
-
private getOtherRelation;
|
|
51
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OneToOneReference = void 0;
|
|
4
|
-
const __1 = require("../");
|
|
5
|
-
const EntityManager_1 = require("../EntityManager");
|
|
6
|
-
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
7
|
-
/**
|
|
8
|
-
* Represents the "many" side of a one-to-one relationship.
|
|
9
|
-
*
|
|
10
|
-
* I.e. in a one-to-many from Book -> Reviews, there is a review.book_id that can have many books.
|
|
11
|
-
*
|
|
12
|
-
* This class is for when that `review.book_id` column is itself unique, i.e. like `image.book_id`, and
|
|
13
|
-
* so instead of `Book.images: OneToManyCollection` we have a `Book.image: OneToOneReference`.
|
|
14
|
-
*
|
|
15
|
-
* This class implements `Reference` because it is essentially like "one entity pointing/refereing to another",
|
|
16
|
-
* however because we require a `.load` call to lazily know the value of other side (unlike ManyToOneReference
|
|
17
|
-
* which has it's `book_id` column immediately available in the entity `data` hash), there is some wonkiness
|
|
18
|
-
* around methods like `Reference.id` that are usually callable without `load`/`populate`, that for this
|
|
19
|
-
* class can actually only be called post `load`/`populate`.
|
|
20
|
-
*
|
|
21
|
-
* Currently we enforce this with a runtime check, which is not great, but the trade-off of implementing
|
|
22
|
-
* `Reference` seemed worth the downside of a un-type-safe `.id` property.
|
|
23
|
-
*/
|
|
24
|
-
class OneToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
25
|
-
constructor(
|
|
26
|
-
// These are public to our internal implementation but not exposed in the Collection API
|
|
27
|
-
entity, otherMeta, fieldName, otherFieldName) {
|
|
28
|
-
super();
|
|
29
|
-
this.entity = entity;
|
|
30
|
-
this.otherMeta = otherMeta;
|
|
31
|
-
this.fieldName = fieldName;
|
|
32
|
-
this.otherFieldName = otherFieldName;
|
|
33
|
-
this.isLoaded = false;
|
|
34
|
-
this.isCascadeDelete = EntityManager_1.getMetadata(entity).config.__data.cascadeDeleteFields.includes(fieldName);
|
|
35
|
-
}
|
|
36
|
-
get id() {
|
|
37
|
-
var _a;
|
|
38
|
-
if (this.isLoaded) {
|
|
39
|
-
return (_a = this.loaded) === null || _a === void 0 ? void 0 : _a.id;
|
|
40
|
-
}
|
|
41
|
-
throw new Error(`${this.entity}.${this.fieldName} was not loaded`);
|
|
42
|
-
}
|
|
43
|
-
get idOrFail() {
|
|
44
|
-
return this.id || __1.fail(`${this.entity}.${this.fieldName} has no id yet`);
|
|
45
|
-
}
|
|
46
|
-
get idUntagged() {
|
|
47
|
-
return this.id && __1.deTagIds(this.otherMeta, [this.id])[0];
|
|
48
|
-
}
|
|
49
|
-
get idUntaggedOrFail() {
|
|
50
|
-
return this.idUntagged || __1.fail("Reference is unset or assigned to a new entity");
|
|
51
|
-
}
|
|
52
|
-
get isSet() {
|
|
53
|
-
// This will failure if we're not loaded yet
|
|
54
|
-
return this.id !== undefined;
|
|
55
|
-
}
|
|
56
|
-
// opts is an internal parameter
|
|
57
|
-
async load(opts) {
|
|
58
|
-
__1.ensureNotDeleted(this.entity, { ignore: "pending" });
|
|
59
|
-
if (!this.isLoaded) {
|
|
60
|
-
if (this.entity.id !== undefined) {
|
|
61
|
-
this.loaded = (await __1.getEm(this.entity).find(this.otherMeta.cstr, {
|
|
62
|
-
[this.otherFieldName]: this.entity,
|
|
63
|
-
}))[0];
|
|
64
|
-
}
|
|
65
|
-
// this.maybeAppendAddedBeforeLoaded();
|
|
66
|
-
this.isLoaded = true;
|
|
67
|
-
}
|
|
68
|
-
return this.filterDeleted(this.loaded, opts);
|
|
69
|
-
}
|
|
70
|
-
set(other) {
|
|
71
|
-
__1.ensureNotDeleted(this.entity);
|
|
72
|
-
if (other === this.loaded) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (this.isLoaded) {
|
|
76
|
-
if (this.loaded) {
|
|
77
|
-
this.getOtherRelation(this.loaded).set(undefined);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
this.loaded = other;
|
|
81
|
-
this.isLoaded = true;
|
|
82
|
-
// This will no-op and mark other dirty if necessary
|
|
83
|
-
if (other) {
|
|
84
|
-
this.getOtherRelation(other).set(this.entity);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
get getWithDeleted() {
|
|
88
|
-
return this.filterDeleted(this.doGet(), { withDeleted: true });
|
|
89
|
-
}
|
|
90
|
-
get get() {
|
|
91
|
-
return this.filterDeleted(this.doGet(), { withDeleted: false });
|
|
92
|
-
}
|
|
93
|
-
doGet() {
|
|
94
|
-
__1.ensureNotDeleted(this.entity, { ignore: "pending" });
|
|
95
|
-
if (!this.isLoaded) {
|
|
96
|
-
// This should only be callable in the type system if we've already resolved this to an instance
|
|
97
|
-
throw new Error("get was called when not preloaded");
|
|
98
|
-
}
|
|
99
|
-
return this.loaded;
|
|
100
|
-
}
|
|
101
|
-
// internal impl
|
|
102
|
-
setFromOpts(other) {
|
|
103
|
-
this.set(other);
|
|
104
|
-
}
|
|
105
|
-
initializeForNewEntity() {
|
|
106
|
-
this.isLoaded = true;
|
|
107
|
-
}
|
|
108
|
-
async refreshIfLoaded() {
|
|
109
|
-
if (this.isLoaded) {
|
|
110
|
-
this.isLoaded = false;
|
|
111
|
-
await this.load();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
onEntityDelete() {
|
|
115
|
-
// if (this.isCascadeDelete) {
|
|
116
|
-
// this.current({ withDeleted: true }).forEach(getEm(this.entity).delete);
|
|
117
|
-
// }
|
|
118
|
-
}
|
|
119
|
-
async onEntityDeletedAndFlushing() { }
|
|
120
|
-
toString() {
|
|
121
|
-
return `OneToOneReference(entity: ${this.entity}, fieldName: ${this.fieldName}, otherType: ${this.otherMeta.type}, otherFieldName: ${this.otherFieldName})`;
|
|
122
|
-
}
|
|
123
|
-
filterDeleted(entity, opts) {
|
|
124
|
-
return (opts === null || opts === void 0 ? void 0 : opts.withDeleted) === true || entity === undefined || !entity.isDeletedEntity ? entity : undefined;
|
|
125
|
-
}
|
|
126
|
-
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
127
|
-
getOtherRelation(other) {
|
|
128
|
-
return other[this.otherFieldName];
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.OneToOneReference = OneToOneReference;
|
|
132
|
-
//# sourceMappingURL=OneToOneReference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneToOneReference.js","sourceRoot":"","sources":["../../src/collections/OneToOneReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hasManyDerived.js","sourceRoot":"","sources":["../../src/collections/hasManyDerived.ts"],"names":[],"mappings":";;;AAAA,2BAAsE;AAEtE,yDAAsD;AAStD;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,QAAW,EACX,IAAiC;IAEjC,MAAM,MAAM,GAAM,gCAAiC,CAAC;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/B,OAAO,IAAI,mCAAgB,CAAO,MAAM,EAAE;QACxC,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,GAAI,IAAY;KACjB,CAAC,CAAC;AACL,CAAC;AAVD,wCAUC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hasManyThrough.js","sourceRoot":"","sources":["../../src/collections/hasManyThrough.ts"],"names":[],"mappings":";;;AAAA,oCAAuH;AAEvH;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,IAAqC;IAErC,MAAM,MAAM,GAAM,oCAAiC,CAAC;IACpD,OAAO,IAAI,wBAAgB,CAAO,MAAM,EAAE;QACxC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,gBAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,eAAO,CAAC,MAAM,EAAE,IAAI,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAVD,wCAUC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hasOneDerived.js","sourceRoot":"","sources":["../../src/collections/hasOneDerived.ts"],"names":[],"mappings":";;;AAAA,2BAAqE;AAErE,uDAAoD;AAEpD;;;;;;GAMG;AACH,SAAgB,aAAa,CAM3B,QAAW,EAAE,GAAgC;IAC7C,MAAM,MAAM,GAAM,gCAAiC,CAAC;IACpD,OAAO,IAAI,iCAAe,CAAU,MAAM,EAAE;QAC1C,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,SAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAsB,CAAC;KACvC,CAAC,CAAC;AACL,CAAC;AAdD,sCAcC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hasOneThrough.js","sourceRoot":"","sources":["../../src/collections/hasOneThrough.ts"],"names":[],"mappings":";;;AAAA,oCAAqH;AAErH;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,IAAgC;IAEhC,MAAM,MAAM,GAAM,oCAAiC,CAAC;IACpD,OAAO,IAAI,uBAAe,CAAU,MAAM,EAAE;QAC1C,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,gBAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,eAAO,CAAC,MAAM,EAAE,IAAI,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAVD,sCAUC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Collection, Entity, EntityMetadata, Reference } from "../";
|
|
2
|
-
export { OneToManyCollection } from "./OneToManyCollection";
|
|
3
|
-
export { OneToOneReference } from "./OneToOneReference";
|
|
4
|
-
export { ManyToOneReference } from "./ManyToOneReference";
|
|
5
|
-
export { ManyToManyCollection } from "./ManyToManyCollection";
|
|
6
|
-
export { CustomReference } from "./CustomReference";
|
|
7
|
-
export { hasOneThrough } from "./hasOneThrough";
|
|
8
|
-
export { hasOneDerived } from "./hasOneDerived";
|
|
9
|
-
export { CustomCollection } from "./CustomCollection";
|
|
10
|
-
export { hasManyThrough } from "./hasManyThrough";
|
|
11
|
-
export { hasManyDerived } from "./hasManyDerived";
|
|
12
|
-
/** An alias for creating `OneToManyCollection`s. */
|
|
13
|
-
export declare function hasMany<T extends Entity, U extends Entity>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U, otherColumnName: string): Collection<T, U>;
|
|
14
|
-
/** An alias for creating `ManyToOneReference`s. */
|
|
15
|
-
export declare function hasOne<T extends Entity, U extends Entity, N extends never | undefined>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U): Reference<T, U, N>;
|
|
16
|
-
/** An alias for creating `OneToOneReference`s. */
|
|
17
|
-
export declare function hasOneToOne<T extends Entity, U extends Entity>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U): Reference<T, U, undefined>;
|
|
18
|
-
/** An alias for creating `ManyToManyCollections`s. */
|
|
19
|
-
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>;
|