@belopash/typeorm-store 0.0.2 → 0.2.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/CHANGELOG.md +4 -0
- package/lib/cacheMap.js +15 -15
- package/lib/cacheMap.js.map +1 -1
- package/lib/changeTracker.d.ts +24 -0
- package/lib/changeTracker.d.ts.map +1 -0
- package/lib/changeTracker.js +63 -0
- package/lib/changeTracker.js.map +1 -0
- package/lib/database.d.ts.map +1 -1
- package/lib/database.js +1 -0
- package/lib/database.js.map +1 -1
- package/lib/deferQueue.d.ts +19 -0
- package/lib/deferQueue.d.ts.map +1 -0
- package/lib/deferQueue.js +51 -0
- package/lib/deferQueue.js.map +1 -0
- package/lib/relationGraph.d.ts +3 -0
- package/lib/relationGraph.d.ts.map +1 -0
- package/lib/relationGraph.js +61 -0
- package/lib/relationGraph.js.map +1 -0
- package/lib/store.d.ts +17 -21
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +114 -164
- package/lib/store.js.map +1 -1
- package/package.json +5 -6
- package/src/cacheMap.ts +14 -14
- package/src/changeTracker.ts +71 -0
- package/src/database.ts +1 -0
- package/src/deferQueue.ts +66 -0
- package/src/relationGraph.ts +69 -0
- package/src/store.ts +138 -193
- package/tsconfig.json +3 -1
- package/lib/updateMap.d.ts +0 -19
- package/lib/updateMap.d.ts.map +0 -1
- package/lib/updateMap.js +0 -49
- package/lib/updateMap.js.map +0 -1
- package/src/updateMap.ts +0 -52
package/CHANGELOG.md
CHANGED
package/lib/cacheMap.js
CHANGED
|
@@ -92,32 +92,32 @@ class CacheMap {
|
|
|
92
92
|
}
|
|
93
93
|
cacheRelatedEntities(relations, sourceEntity, cachedEntity, mask) {
|
|
94
94
|
for (const relation of relations) {
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
if (
|
|
95
|
+
const invMetadata = relation.inverseEntityMetadata;
|
|
96
|
+
const invEntity = relation.getEntityValue(sourceEntity);
|
|
97
|
+
const invMask = mask[relation.propertyName];
|
|
98
|
+
if (invEntity === undefined)
|
|
99
99
|
continue;
|
|
100
|
-
if (
|
|
100
|
+
if (invMask) {
|
|
101
101
|
if (relation.isOneToMany || relation.isManyToMany) {
|
|
102
|
-
if (!Array.isArray(
|
|
102
|
+
if (!Array.isArray(invEntity))
|
|
103
103
|
continue;
|
|
104
|
-
for (const entity of
|
|
105
|
-
this.cacheEntity(entity, typeof
|
|
104
|
+
for (const entity of invEntity) {
|
|
105
|
+
this.cacheEntity(entity, typeof invMask === 'boolean' ? {} : invMask);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
else if (
|
|
109
|
-
this.cacheEntity(
|
|
108
|
+
else if (invEntity != null) {
|
|
109
|
+
this.cacheEntity(invEntity, typeof invMask === 'boolean' ? {} : invMask);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
if (relation.isOwning) {
|
|
113
|
-
if (
|
|
113
|
+
if (invEntity === null) {
|
|
114
114
|
relation.setEntityValue(cachedEntity, null);
|
|
115
115
|
}
|
|
116
116
|
else {
|
|
117
|
-
const relationCacheMap = this.getEntityCache(
|
|
118
|
-
const cachedRelation = relationCacheMap.get(
|
|
117
|
+
const relationCacheMap = this.getEntityCache(invMetadata.target);
|
|
118
|
+
const cachedRelation = relationCacheMap.get(invEntity.id);
|
|
119
119
|
if (cachedRelation == null) {
|
|
120
|
-
throw new Error(`Missing entity ${
|
|
120
|
+
throw new Error(`Missing entity ${invMetadata.name} with id ${invEntity.id}`);
|
|
121
121
|
}
|
|
122
122
|
relation.setEntityValue(cachedEntity, cachedRelation.value);
|
|
123
123
|
}
|
|
@@ -142,11 +142,11 @@ class CacheMap {
|
|
|
142
142
|
return this.opts.logger.child('cache');
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
+
exports.CacheMap = CacheMap;
|
|
145
146
|
__decorate([
|
|
146
147
|
util_internal_1.def,
|
|
147
148
|
__metadata("design:type", Function),
|
|
148
149
|
__metadata("design:paramtypes", []),
|
|
149
150
|
__metadata("design:returntype", logger_1.Logger)
|
|
150
151
|
], CacheMap.prototype, "getLogger", null);
|
|
151
|
-
exports.CacheMap = CacheMap;
|
|
152
152
|
//# sourceMappingURL=cacheMap.js.map
|
package/lib/cacheMap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheMap.js","sourceRoot":"","sources":["../src/cacheMap.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cacheMap.js","sourceRoot":"","sources":["../src/cacheMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Entity } from '@subsquid/typeorm-store';
|
|
2
|
+
import { EntityManager, EntityTarget } from 'typeorm';
|
|
3
|
+
export declare enum UpdateType {
|
|
4
|
+
Insert = 0,
|
|
5
|
+
Upsert = 1,
|
|
6
|
+
Remove = 2
|
|
7
|
+
}
|
|
8
|
+
export interface Update {
|
|
9
|
+
id: string;
|
|
10
|
+
type: UpdateType;
|
|
11
|
+
}
|
|
12
|
+
export declare class UpdatesTracker {
|
|
13
|
+
private em;
|
|
14
|
+
private map;
|
|
15
|
+
constructor(em: () => EntityManager);
|
|
16
|
+
get<E extends Entity>(target: EntityTarget<E>, id: string): UpdateType | undefined;
|
|
17
|
+
set<E extends Entity>(target: EntityTarget<E>, id: string, type: UpdateType): this;
|
|
18
|
+
insert<E extends Entity>(target: EntityTarget<E>, id: string): void;
|
|
19
|
+
upsert<E extends Entity>(target: EntityTarget<E>, id: string): void;
|
|
20
|
+
remove<E extends Entity>(target: EntityTarget<E>, id: string): void;
|
|
21
|
+
getUpdates<E extends Entity>(target: EntityTarget<E>): Map<string, UpdateType>;
|
|
22
|
+
clear(): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=changeTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeTracker.d.ts","sourceRoot":"","sources":["../src/changeTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,SAAS,CAAA;AAEnD,oBAAY,UAAU;IAClB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;CACT;AAED,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;CACnB;AAED,qBAAa,cAAc;IAGX,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,GAAG,CAA6D;gBAEpD,EAAE,EAAE,MAAM,aAAa;IAE3C,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAIzD,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAK3E,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAS5D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAQ5D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAS5D,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAapD,KAAK;CAGR"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdatesTracker = exports.UpdateType = void 0;
|
|
4
|
+
var UpdateType;
|
|
5
|
+
(function (UpdateType) {
|
|
6
|
+
UpdateType[UpdateType["Insert"] = 0] = "Insert";
|
|
7
|
+
UpdateType[UpdateType["Upsert"] = 1] = "Upsert";
|
|
8
|
+
UpdateType[UpdateType["Remove"] = 2] = "Remove";
|
|
9
|
+
})(UpdateType || (exports.UpdateType = UpdateType = {}));
|
|
10
|
+
class UpdatesTracker {
|
|
11
|
+
constructor(em) {
|
|
12
|
+
this.em = em;
|
|
13
|
+
this.map = new Map();
|
|
14
|
+
}
|
|
15
|
+
get(target, id) {
|
|
16
|
+
return this.getUpdates(target).get(id);
|
|
17
|
+
}
|
|
18
|
+
set(target, id, type) {
|
|
19
|
+
this.getUpdates(target).set(id, type);
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
insert(target, id) {
|
|
23
|
+
const prevType = this.get(target, id);
|
|
24
|
+
if (prevType === UpdateType.Insert || prevType === UpdateType.Upsert) {
|
|
25
|
+
throw new Error(`ID ${id} is already marked as insert or upsert`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.set(target, id, UpdateType.Insert);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
upsert(target, id) {
|
|
32
|
+
const prevType = this.get(target, id);
|
|
33
|
+
if (prevType === UpdateType.Insert) {
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.set(target, id, UpdateType.Upsert);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
remove(target, id) {
|
|
40
|
+
const prevType = this.get(target, id);
|
|
41
|
+
if (prevType == UpdateType.Insert) {
|
|
42
|
+
this.getUpdates(target).delete(id);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.set(target, id, UpdateType.Remove);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
getUpdates(target) {
|
|
49
|
+
const em = this.em();
|
|
50
|
+
const metadata = em.connection.getMetadata(target);
|
|
51
|
+
let map = this.map.get(metadata.target);
|
|
52
|
+
if (map == null) {
|
|
53
|
+
map = new Map();
|
|
54
|
+
this.map.set(metadata.target, map);
|
|
55
|
+
}
|
|
56
|
+
return map;
|
|
57
|
+
}
|
|
58
|
+
clear() {
|
|
59
|
+
this.map.clear();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.UpdatesTracker = UpdatesTracker;
|
|
63
|
+
//# sourceMappingURL=changeTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeTracker.js","sourceRoot":"","sources":["../src/changeTracker.ts"],"names":[],"mappings":";;;AAGA,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,+CAAM,CAAA;IACN,+CAAM,CAAA;IACN,+CAAM,CAAA;AACV,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAOD,MAAa,cAAc;IAGvB,YAAoB,EAAuB;QAAvB,OAAE,GAAF,EAAE,CAAqB;QAFnC,QAAG,GAAoD,IAAI,GAAG,EAAE,CAAA;IAE1B,CAAC;IAE/C,GAAG,CAAmB,MAAuB,EAAE,EAAU;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG,CAAmB,MAAuB,EAAE,EAAU,EAAE,IAAgB;QACvE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,CAAmB,MAAuB,EAAE,EAAU;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACrC,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAA;SACpE;aAAM;YACH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;SAC1C;IACL,CAAC;IAED,MAAM,CAAmB,MAAuB,EAAE,EAAU;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACrC,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE;SACnC;aAAM;YACH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;SAC1C;IACL,CAAC;IAED,MAAM,CAAmB,MAAuB,EAAE,EAAU;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACrC,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACrC;aAAM;YACH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;SAC1C;IACL,CAAC;IAED,UAAU,CAAmB,MAAuB;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACpB,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAElD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE;YACb,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SACrC;QAED,OAAO,GAAG,CAAA;IACd,CAAC;IAED,KAAK;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACJ;AAxDD,wCAwDC"}
|
package/lib/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAC,MAAM,yBAAyB,CAAA;AAE/F,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,wCAAwC,CAAA;AAG5F,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAC,cAAc,EAAE,sBAAsB,EAAC,CAAA;AAG/C,qBAAa,wBAAyB,SAAQ,eAAe;IAEzD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAIjG,cAAc;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAC,MAAM,yBAAyB,CAAA;AAE/F,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,wCAAwC,CAAA;AAG5F,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAC,cAAc,EAAE,sBAAsB,EAAC,CAAA;AAG/C,qBAAa,wBAAyB,SAAQ,eAAe;IAEzD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAIjG,cAAc;CAmB/B"}
|
package/lib/database.js
CHANGED
package/lib/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA+F;AAG/F,oDAA2B;AAE3B,mCAAsC;AAItC,aAAa;AACb,MAAa,wBAAyB,SAAQ,+BAAe;IACzD,aAAa;IACb,QAAQ,CAAC,IAAiB,EAAE,EAA4C;QACpE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC1C,CAAC;IAED,aAAa;IACb,WAAW,CAAC,IAAe,EAAE,EAAkE;QAC3F,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC7C,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,EAA4C,EAC5C,EAAiB,EACjB,aAA6B;QAE7B,IAAI,OAAO,GAAG,IAAI,CAAA;QAElB,IAAI,KAAK,GAAG,IAAI,sBAAc,CAAC,GAAG,EAAE;YAChC,IAAA,gBAAM,EAAC,OAAO,EAAE,mFAAmF,CAAC,CAAA;YACpG,OAAO,EAAE,CAAA;QACb,CAAC,EAAE,aAAa,CAAC,CAAA;QAEjB,IAAI;YACA,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA+F;AAG/F,oDAA2B;AAE3B,mCAAsC;AAItC,aAAa;AACb,MAAa,wBAAyB,SAAQ,+BAAe;IACzD,aAAa;IACb,QAAQ,CAAC,IAAiB,EAAE,EAA4C;QACpE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC1C,CAAC;IAED,aAAa;IACb,WAAW,CAAC,IAAe,EAAE,EAAkE;QAC3F,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC7C,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,EAA4C,EAC5C,EAAiB,EACjB,aAA6B;QAE7B,IAAI,OAAO,GAAG,IAAI,CAAA;QAElB,IAAI,KAAK,GAAG,IAAI,sBAAc,CAAC,GAAG,EAAE;YAChC,IAAA,gBAAM,EAAC,OAAO,EAAE,mFAAmF,CAAC,CAAA;YACpG,OAAO,EAAE,CAAA;QACb,CAAC,EAAE,aAAa,CAAC,CAAA;QAEjB,IAAI;YACA,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;SACtB;gBAAS;YACN,OAAO,GAAG,KAAK,CAAA;SAClB;IACL,CAAC;CACJ;AA9BD,4DA8BC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Entity } from '@subsquid/typeorm-store';
|
|
2
|
+
import { EntityManager, EntityTarget, FindOptionsRelations } from 'typeorm';
|
|
3
|
+
export type DeferData = {
|
|
4
|
+
ids: Set<string>;
|
|
5
|
+
relations: FindOptionsRelations<any>;
|
|
6
|
+
};
|
|
7
|
+
export declare class DeferQueue {
|
|
8
|
+
private em;
|
|
9
|
+
private deferMap;
|
|
10
|
+
constructor(em: () => EntityManager);
|
|
11
|
+
add<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): void;
|
|
12
|
+
getData(entityClass: EntityTarget<any>): DeferData;
|
|
13
|
+
values(): {
|
|
14
|
+
target: EntityTarget<any>;
|
|
15
|
+
data: DeferData;
|
|
16
|
+
}[];
|
|
17
|
+
clear(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=deferQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferQueue.d.ts","sourceRoot":"","sources":["../src/deferQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAEzE,MAAM,MAAM,SAAS,GAAG;IACpB,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChB,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAA;CACvC,CAAA;AAED,qBAAa,UAAU;IAGP,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,QAAQ,CAA+C;gBAE3C,EAAE,EAAE,MAAM,aAAa;IAE3C,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IASnG,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC;IAatC,MAAM;;;;IAIN,KAAK;CAGR"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeferQueue = void 0;
|
|
4
|
+
class DeferQueue {
|
|
5
|
+
constructor(em) {
|
|
6
|
+
this.em = em;
|
|
7
|
+
this.deferMap = new Map();
|
|
8
|
+
}
|
|
9
|
+
add(entityClass, id, relations) {
|
|
10
|
+
const data = this.getData(entityClass);
|
|
11
|
+
data.ids.add(id);
|
|
12
|
+
if (relations != null) {
|
|
13
|
+
data.relations = mergeRelataions(data.relations, relations);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
getData(entityClass) {
|
|
17
|
+
const em = this.em();
|
|
18
|
+
const metadata = em.connection.getMetadata(entityClass);
|
|
19
|
+
let list = this.deferMap.get(metadata.target);
|
|
20
|
+
if (list == null) {
|
|
21
|
+
list = { ids: new Set(), relations: {} };
|
|
22
|
+
this.deferMap.set(metadata.target, list);
|
|
23
|
+
}
|
|
24
|
+
return list;
|
|
25
|
+
}
|
|
26
|
+
values() {
|
|
27
|
+
return [...this.deferMap.entries()].map(([target, data]) => ({ target, data }));
|
|
28
|
+
}
|
|
29
|
+
clear() {
|
|
30
|
+
this.deferMap.clear();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.DeferQueue = DeferQueue;
|
|
34
|
+
function mergeRelataions(a, b) {
|
|
35
|
+
const mergedObject = {};
|
|
36
|
+
for (const key in a) {
|
|
37
|
+
mergedObject[key] = a[key];
|
|
38
|
+
}
|
|
39
|
+
for (const key in b) {
|
|
40
|
+
const bValue = b[key];
|
|
41
|
+
const value = mergedObject[key];
|
|
42
|
+
if (typeof bValue === 'object') {
|
|
43
|
+
mergedObject[key] = (typeof value === 'object' ? mergeRelataions(value, bValue) : bValue);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
mergedObject[key] = value || bValue;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return mergedObject;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=deferQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferQueue.js","sourceRoot":"","sources":["../src/deferQueue.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IAGnB,YAAoB,EAAuB;QAAvB,OAAE,GAAF,EAAE,CAAqB;QAFnC,aAAQ,GAAsC,IAAI,GAAG,EAAE,CAAA;IAEjB,CAAC;IAE/C,GAAG,CAAmB,WAA4B,EAAE,EAAU,EAAE,SAAmC;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEhB,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;SAC9D;IACL,CAAC;IAED,OAAO,CAAC,WAA8B;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACpB,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QAEvD,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC7C,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,GAAG,EAAC,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAA;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;SAC3C;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,KAAK;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC;CACJ;AAlCD,gCAkCC;AAED,SAAS,eAAe,CACpB,CAA0B,EAC1B,CAA0B;IAE1B,MAAM,YAAY,GAA4B,EAAE,CAAA;IAEhD,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;QACjB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;KAC7B;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;QACjB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC5B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAQ,CAAA;SACnG;aAAM;YACH,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,MAAM,CAAA;SACtC;KACJ;IAED,OAAO,YAAY,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationGraph.d.ts","sourceRoot":"","sources":["../src/relationGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAStC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAuD3E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCommitOrder = void 0;
|
|
4
|
+
var State;
|
|
5
|
+
(function (State) {
|
|
6
|
+
State[State["Unvisited"] = 0] = "Unvisited";
|
|
7
|
+
State[State["Visiting"] = 1] = "Visiting";
|
|
8
|
+
State[State["Visited"] = 2] = "Visited";
|
|
9
|
+
})(State || (State = {}));
|
|
10
|
+
function getCommitOrder(entities) {
|
|
11
|
+
const nodeState = {};
|
|
12
|
+
const saveOrder = [];
|
|
13
|
+
for (const node of entities) {
|
|
14
|
+
nodeState[node.name] = State.Unvisited;
|
|
15
|
+
}
|
|
16
|
+
function visit(node) {
|
|
17
|
+
if (nodeState[node.name] !== State.Unvisited)
|
|
18
|
+
return;
|
|
19
|
+
nodeState[node.name] = State.Visiting;
|
|
20
|
+
for (const edge of node.relations) {
|
|
21
|
+
if (edge.foreignKeys.length === 0)
|
|
22
|
+
continue;
|
|
23
|
+
const target = edge.inverseEntityMetadata;
|
|
24
|
+
switch (nodeState[target.name]) {
|
|
25
|
+
case undefined:
|
|
26
|
+
case State.Unvisited: {
|
|
27
|
+
visit(target);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
case State.Visiting: {
|
|
31
|
+
const reversedEdge = target.relations.find((r) => r.inverseEntityMetadata === node);
|
|
32
|
+
if (reversedEdge != null) {
|
|
33
|
+
const edgeWeight = getWeight(edge);
|
|
34
|
+
const reversedEdgeWeight = getWeight(reversedEdge);
|
|
35
|
+
if (edgeWeight > reversedEdgeWeight) {
|
|
36
|
+
for (const r of target.relations) {
|
|
37
|
+
visit(r.inverseEntityMetadata);
|
|
38
|
+
}
|
|
39
|
+
nodeState[target.name] = State.Visited;
|
|
40
|
+
saveOrder.push(target);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (nodeState[node.name] !== State.Visited) {
|
|
48
|
+
nodeState[node.name] = State.Visited;
|
|
49
|
+
saveOrder.push(node);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
for (const node of entities) {
|
|
53
|
+
visit(node);
|
|
54
|
+
}
|
|
55
|
+
return saveOrder;
|
|
56
|
+
}
|
|
57
|
+
exports.getCommitOrder = getCommitOrder;
|
|
58
|
+
function getWeight(relation) {
|
|
59
|
+
return relation.isNullable ? 0 : 1;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=relationGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationGraph.js","sourceRoot":"","sources":["../src/relationGraph.ts"],"names":[],"mappings":";;;AAGA,IAAK,KAIJ;AAJD,WAAK,KAAK;IACN,2CAAS,CAAA;IACT,yCAAQ,CAAA;IACR,uCAAO,CAAA;AACX,CAAC,EAJI,KAAK,KAAL,KAAK,QAIT;AAED,SAAgB,cAAc,CAAC,QAA0B;IACrD,MAAM,SAAS,GAA0B,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAqB,EAAE,CAAA;IAEtC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAA;KACzC;IAED,SAAS,KAAK,CAAC,IAAoB;QAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,SAAS;YAAE,OAAM;QAEpD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAA;QAErC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;YAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAA;YAEzC,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC5B,KAAK,SAAS,CAAC;gBACf,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;oBAClB,KAAK,CAAC,MAAM,CAAC,CAAA;oBACb,MAAK;iBACR;gBACD,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACjB,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAA;oBACnF,IAAI,YAAY,IAAI,IAAI,EAAE;wBACtB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;wBAClC,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;wBAElD,IAAI,UAAU,GAAG,kBAAkB,EAAE;4BACjC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE;gCAC9B,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAA;6BACjC;4BAED,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;4BACtC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;yBACzB;qBACJ;oBACD,MAAK;iBACR;aACJ;SACJ;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE;YACxC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;YACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACvB;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QACzB,KAAK,CAAC,IAAI,CAAC,CAAA;KACd;IAED,OAAO,SAAS,CAAA;AACpB,CAAC;AAvDD,wCAuDC;AAED,SAAS,SAAS,CAAC,QAA0B;IACzC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
|
package/lib/store.d.ts
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import { Entity as _Entity, Entity, EntityClass, FindManyOptions, FindOneOptions, Store } from '@subsquid/typeorm-store';
|
|
2
2
|
import { ChangeTracker } from '@subsquid/typeorm-store/lib/hot';
|
|
3
|
-
import { EntityManager, EntityTarget, FindOptionsRelations, FindOptionsWhere } from 'typeorm';
|
|
4
|
-
export { EntityClass, FindManyOptions, FindOneOptions
|
|
5
|
-
export type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
delayedUpserts: Entity[];
|
|
13
|
-
removes: Entity[];
|
|
14
|
-
}
|
|
3
|
+
import { EntityManager, EntityMetadata, EntityTarget, FindOptionsRelations, FindOptionsWhere } from 'typeorm';
|
|
4
|
+
export { Entity, EntityClass, FindManyOptions, FindOneOptions };
|
|
5
|
+
export type ChangeSet<E extends Entity> = {
|
|
6
|
+
metadata: EntityMetadata;
|
|
7
|
+
inserts: E[];
|
|
8
|
+
upserts: E[];
|
|
9
|
+
removes: E[];
|
|
10
|
+
extraUpserts: E[];
|
|
11
|
+
};
|
|
15
12
|
export declare class StoreWithCache extends Store {
|
|
16
13
|
private em;
|
|
17
|
-
private deferMap;
|
|
18
14
|
private updates;
|
|
15
|
+
private queue;
|
|
19
16
|
private cache;
|
|
17
|
+
private logger;
|
|
20
18
|
constructor(em: () => EntityManager, changes?: ChangeTracker);
|
|
21
19
|
insert<E extends _Entity>(entity: E): Promise<void>;
|
|
22
20
|
insert<E extends _Entity>(entities: E[]): Promise<void>;
|
|
@@ -39,16 +37,14 @@ export declare class StoreWithCache extends Store {
|
|
|
39
37
|
getOrFail<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): Promise<E>;
|
|
40
38
|
private getCached;
|
|
41
39
|
defer<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): DeferredEntity<E>;
|
|
42
|
-
|
|
43
|
-
private
|
|
40
|
+
commit(): Promise<void>;
|
|
41
|
+
private getChangeSet;
|
|
42
|
+
private extractExtraUpsert;
|
|
44
43
|
flush(): Promise<void>;
|
|
45
44
|
private load;
|
|
46
|
-
private
|
|
47
|
-
private
|
|
48
|
-
private
|
|
49
|
-
private getDeferData;
|
|
50
|
-
private getUpdateMap;
|
|
51
|
-
private getLogger;
|
|
45
|
+
private getCommitOrder;
|
|
46
|
+
private commitOrderIndexes;
|
|
47
|
+
private getCommitOrderIndex;
|
|
52
48
|
private saveMany;
|
|
53
49
|
private getFkSignature;
|
|
54
50
|
private upsertMany;
|
package/lib/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|