@belopash/typeorm-store 1.2.1 → 1.3.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/lib/changeTracker.d.ts.map +1 -1
- package/lib/changeTracker.js +22 -14
- package/lib/changeTracker.js.map +1 -1
- package/lib/database.d.ts +1 -0
- package/lib/database.d.ts.map +1 -1
- package/lib/database.js +4 -0
- package/lib/database.js.map +1 -1
- package/package.json +8 -8
- package/src/changeTracker.ts +22 -11
- package/src/database.ts +5 -0
|
@@ -1 +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;
|
|
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;IAe5D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAW5D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAW5D,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAapD,KAAK;CAGR"}
|
package/lib/changeTracker.js
CHANGED
|
@@ -21,28 +21,36 @@ class UpdatesTracker {
|
|
|
21
21
|
}
|
|
22
22
|
insert(target, id) {
|
|
23
23
|
const prevType = this.get(target, id);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
switch (prevType) {
|
|
25
|
+
case undefined:
|
|
26
|
+
this.set(target, id, UpdateType.Insert);
|
|
27
|
+
break;
|
|
28
|
+
case UpdateType.Remove:
|
|
29
|
+
this.set(target, id, UpdateType.Upsert);
|
|
30
|
+
break;
|
|
31
|
+
case UpdateType.Insert:
|
|
32
|
+
case UpdateType.Insert:
|
|
33
|
+
throw new Error(`ID ${id} is already marked as insert or upsert`);
|
|
29
34
|
}
|
|
30
35
|
}
|
|
31
36
|
upsert(target, id) {
|
|
32
37
|
const prevType = this.get(target, id);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
switch (prevType) {
|
|
39
|
+
case UpdateType.Insert:
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
this.set(target, id, UpdateType.Upsert);
|
|
43
|
+
break;
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
remove(target, id) {
|
|
40
47
|
const prevType = this.get(target, id);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
switch (prevType) {
|
|
49
|
+
case UpdateType.Insert:
|
|
50
|
+
this.getUpdates(target).delete(id);
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
this.set(target, id, UpdateType.Remove);
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
getUpdates(target) {
|
package/lib/changeTracker.js.map
CHANGED
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"changeTracker.js","sourceRoot":"","sources":["../src/changeTracker.ts"],"names":[],"mappings":"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"}
|
package/lib/database.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { IsolationLevel, TypeormDatabaseOptions };
|
|
|
5
5
|
export declare class TypeormDatabaseWithCache extends TypeormDatabase {
|
|
6
6
|
transact(info: FinalTxInfo, cb: (store: StoreWithCache) => Promise<void>): Promise<void>;
|
|
7
7
|
transactHot(info: HotTxInfo, cb: (store: StoreWithCache, block: HashAndHeight) => Promise<void>): Promise<void>;
|
|
8
|
+
transactHot2(info: HotTxInfo, cb: (store: StoreWithCache, sliceBeg: number, sliceEnd: number) => Promise<void>): Promise<void>;
|
|
8
9
|
private performUpdates;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=database.d.ts.map
|
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;
|
|
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;IAK/G,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAIhH,cAAc;CAmB/B"}
|
package/lib/database.js
CHANGED
|
@@ -17,6 +17,10 @@ class TypeormDatabaseWithCache extends typeorm_store_1.TypeormDatabase {
|
|
|
17
17
|
transactHot(info, cb) {
|
|
18
18
|
return super.transactHot(info, cb);
|
|
19
19
|
}
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
transactHot2(info, cb) {
|
|
22
|
+
return super.transactHot2(info, cb);
|
|
23
|
+
}
|
|
20
24
|
async performUpdates(cb, em, changeTracker) {
|
|
21
25
|
let running = true;
|
|
22
26
|
let store = new store_1.StoreWithCache(() => {
|
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,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;gBAAS,CAAC;YACP,OAAO,GAAG,KAAK,CAAA;QACnB,CAAC;IACL,CAAC;CACJ;
|
|
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;IAED,aAAa;IACb,YAAY,CAAC,IAAe,EAAE,EAAgF;QAC1G,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC9C,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,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;gBAAS,CAAC;YACP,OAAO,GAAG,KAAK,CAAA;QACnB,CAAC;IACL,CAAC;CACJ;AAnCD,4DAmCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@belopash/typeorm-store",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Optimized TypeORM based storage for squid mappings",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/belopash/squid-typeorm-store"
|
|
@@ -18,21 +18,21 @@
|
|
|
18
18
|
"test": "mocha -r dotenv/config lib/test/*.test.js --exit --timeout 5000"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@subsquid/logger": "^1.3.
|
|
22
|
-
"@subsquid/util-internal": "^
|
|
21
|
+
"@subsquid/logger": "^1.3.3",
|
|
22
|
+
"@subsquid/util-internal": "^3.1.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"@subsquid/typeorm-config": "^4.1.0",
|
|
26
|
-
"@subsquid/typeorm-store": "^1.
|
|
26
|
+
"@subsquid/typeorm-store": "^1.3.0",
|
|
27
27
|
"typeorm": "^0.3.16",
|
|
28
28
|
"pg": "^8.11.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/mocha": "^10.0.6",
|
|
32
|
-
"@types/node": "^20.
|
|
33
|
-
"@types/pg": "^8.
|
|
32
|
+
"@types/node": "^20.11.28",
|
|
33
|
+
"@types/pg": "^8.11.2",
|
|
34
34
|
"expect": "^29.7.0",
|
|
35
|
-
"mocha": "^10.
|
|
36
|
-
"typescript": "^5.
|
|
35
|
+
"mocha": "^10.3.0",
|
|
36
|
+
"typescript": "^5.4.2"
|
|
37
37
|
}
|
|
38
38
|
}
|
package/src/changeTracker.ts
CHANGED
|
@@ -28,27 +28,38 @@ export class UpdatesTracker {
|
|
|
28
28
|
|
|
29
29
|
insert<E extends Entity>(target: EntityTarget<E>, id: string) {
|
|
30
30
|
const prevType = this.get(target, id)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
switch (prevType) {
|
|
32
|
+
case undefined:
|
|
33
|
+
this.set(target, id, UpdateType.Insert)
|
|
34
|
+
break
|
|
35
|
+
case UpdateType.Remove:
|
|
36
|
+
this.set(target, id, UpdateType.Upsert)
|
|
37
|
+
break
|
|
38
|
+
case UpdateType.Insert:
|
|
39
|
+
case UpdateType.Insert:
|
|
40
|
+
throw new Error(`ID ${id} is already marked as insert or upsert`)
|
|
35
41
|
}
|
|
36
42
|
}
|
|
37
43
|
|
|
38
44
|
upsert<E extends Entity>(target: EntityTarget<E>, id: string) {
|
|
39
45
|
const prevType = this.get(target, id)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
switch (prevType) {
|
|
47
|
+
case UpdateType.Insert:
|
|
48
|
+
break
|
|
49
|
+
default:
|
|
50
|
+
this.set(target, id, UpdateType.Upsert)
|
|
51
|
+
break
|
|
43
52
|
}
|
|
44
53
|
}
|
|
45
54
|
|
|
46
55
|
remove<E extends Entity>(target: EntityTarget<E>, id: string) {
|
|
47
56
|
const prevType = this.get(target, id)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
57
|
+
switch (prevType) {
|
|
58
|
+
case UpdateType.Insert:
|
|
59
|
+
this.getUpdates(target).delete(id)
|
|
60
|
+
break
|
|
61
|
+
default:
|
|
62
|
+
this.set(target, id, UpdateType.Remove)
|
|
52
63
|
}
|
|
53
64
|
}
|
|
54
65
|
|
package/src/database.ts
CHANGED
|
@@ -19,6 +19,11 @@ export class TypeormDatabaseWithCache extends TypeormDatabase {
|
|
|
19
19
|
return super.transactHot(info, cb as any)
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
transactHot2(info: HotTxInfo, cb: (store: StoreWithCache, sliceBeg: number, sliceEnd: number) => Promise<void>): Promise<void> {
|
|
24
|
+
return super.transactHot2(info, cb as any)
|
|
25
|
+
}
|
|
26
|
+
|
|
22
27
|
private async performUpdates(
|
|
23
28
|
cb: (store: StoreWithCache) => Promise<void>,
|
|
24
29
|
em: EntityManager,
|