@belopash/typeorm-store 0.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/.github/workflows/bump.yml +36 -0
- package/.github/workflows/publish.yml +49 -0
- package/CHANGELOG.md +18 -0
- package/lib/cacheMap.d.ts +23 -0
- package/lib/cacheMap.d.ts.map +1 -0
- package/lib/cacheMap.js +115 -0
- package/lib/cacheMap.js.map +1 -0
- package/lib/database.d.ts +10 -0
- package/lib/database.d.ts.map +1 -0
- package/lib/database.js +35 -0
- package/lib/database.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +21 -0
- package/lib/index.js.map +1 -0
- package/lib/store.d.ts +60 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +383 -0
- package/lib/store.js.map +1 -0
- package/lib/updateMap.d.ts +19 -0
- package/lib/updateMap.d.ts.map +1 -0
- package/lib/updateMap.js +67 -0
- package/lib/updateMap.js.map +1 -0
- package/lib/utils.d.ts +3 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +58 -0
- package/lib/utils.js.map +1 -0
- package/package.json +24 -0
- package/src/cacheMap.ts +135 -0
- package/src/database.ts +40 -0
- package/src/index.ts +2 -0
- package/src/store.ts +474 -0
- package/src/updateMap.ts +74 -0
- package/src/utils.ts +49 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: bump
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
inputs:
|
|
5
|
+
version:
|
|
6
|
+
type: choice
|
|
7
|
+
description: Version
|
|
8
|
+
required: true
|
|
9
|
+
options:
|
|
10
|
+
- patch
|
|
11
|
+
- minor
|
|
12
|
+
- major
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
bump:
|
|
16
|
+
name: increase version numbers
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v2
|
|
20
|
+
|
|
21
|
+
- name: configure git
|
|
22
|
+
run: |
|
|
23
|
+
git config --global user.name 'github-actions'
|
|
24
|
+
git config --global user.email 'github-actions@github.com'
|
|
25
|
+
|
|
26
|
+
- name: update changelog
|
|
27
|
+
run: |
|
|
28
|
+
npx generate-changelog -p
|
|
29
|
+
git add CHANGELOG.md
|
|
30
|
+
git commit -m 'updated CHANGELOG.md'
|
|
31
|
+
|
|
32
|
+
- name: bump version
|
|
33
|
+
run: npm version ${{ github.event.inputs.version }} -m "bump to %s"
|
|
34
|
+
|
|
35
|
+
- name: git push
|
|
36
|
+
run: git push origin
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch: # manually run
|
|
4
|
+
inputs:
|
|
5
|
+
releaseTag:
|
|
6
|
+
description: 'Tag the release (next, latest)'
|
|
7
|
+
required: false
|
|
8
|
+
default: 'latest'
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
CI: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
publish:
|
|
15
|
+
name: Publish
|
|
16
|
+
runs-on: ubuntu-20.04
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout
|
|
19
|
+
uses: actions/checkout@v2
|
|
20
|
+
|
|
21
|
+
- name: Use Node.js
|
|
22
|
+
uses: actions/setup-node@v3
|
|
23
|
+
with:
|
|
24
|
+
node-version: '16.x'
|
|
25
|
+
|
|
26
|
+
- name: Authenticate with Registry
|
|
27
|
+
run: |
|
|
28
|
+
echo "always-auth=true" > .npmrc
|
|
29
|
+
echo "@subsquid:registry=https://registry.npmjs.org/" >> .npmrc
|
|
30
|
+
echo "registry=https://registry.npmjs.org/" >> .npmrc
|
|
31
|
+
echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" >> .npmrc
|
|
32
|
+
npm whoami
|
|
33
|
+
env:
|
|
34
|
+
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
|
|
35
|
+
|
|
36
|
+
- name: npm install
|
|
37
|
+
run: |
|
|
38
|
+
npm i
|
|
39
|
+
git config --global user.name 'github-actions'
|
|
40
|
+
git config --global user.email 'github-actions@github.com'
|
|
41
|
+
|
|
42
|
+
- name: npm build
|
|
43
|
+
run: npm run build
|
|
44
|
+
|
|
45
|
+
- name: npm publish
|
|
46
|
+
run: |
|
|
47
|
+
npm publish --tag $RELEASE_TAG --access public
|
|
48
|
+
env:
|
|
49
|
+
RELEASE_TAG: ${{ github.event.inputs.releaseTag }}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#### 0.3.1 (2023-08-21)
|
|
2
|
+
|
|
3
|
+
#### 0.2.1 (2023-08-03)
|
|
4
|
+
|
|
5
|
+
#### 0.1.2 (2023-07-24)
|
|
6
|
+
|
|
7
|
+
#### 0.1.1 (2023-07-05)
|
|
8
|
+
|
|
9
|
+
#### 0.0.5 (2023-07-04)
|
|
10
|
+
|
|
11
|
+
#### 0.0.4 (2023-06-25)
|
|
12
|
+
|
|
13
|
+
#### 0.0.3 (2023-06-18)
|
|
14
|
+
|
|
15
|
+
#### 0.0.2 (2023-06-16)
|
|
16
|
+
|
|
17
|
+
#### 0.0.1 (2023-06-14)
|
|
18
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Entity } from '@subsquid/typeorm-store';
|
|
2
|
+
import { EntityManager, EntityTarget, FindOptionsRelations } from 'typeorm';
|
|
3
|
+
export declare class CachedEntity<E extends Entity> {
|
|
4
|
+
value: E | null;
|
|
5
|
+
relations: {
|
|
6
|
+
[key: string]: boolean;
|
|
7
|
+
};
|
|
8
|
+
constructor();
|
|
9
|
+
}
|
|
10
|
+
export declare class CacheMap {
|
|
11
|
+
private em;
|
|
12
|
+
private map;
|
|
13
|
+
constructor(em: () => EntityManager);
|
|
14
|
+
exist<E extends Entity>(entityClass: EntityTarget<E>, id: string): boolean;
|
|
15
|
+
get<E extends Entity>(entityClass: EntityTarget<E>, id: string): CachedEntity<E> | undefined;
|
|
16
|
+
ensure<E extends Entity>(entityClass: EntityTarget<E>, id: string): void;
|
|
17
|
+
delete<E extends Entity>(entityClass: EntityTarget<E>, id: string): void;
|
|
18
|
+
add<E extends Entity>(entity: E, mask?: FindOptionsRelations<any>): void;
|
|
19
|
+
add<E extends Entity>(entities: E[], mask?: FindOptionsRelations<any>): void;
|
|
20
|
+
clear(): void;
|
|
21
|
+
private getEntityCache;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cacheMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheMap.d.ts","sourceRoot":"","sources":["../src/cacheMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAA;AAE9C,OAAO,EAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAGzE,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM;IACtC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACf,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAA;;CAMtC;AAED,qBAAa,QAAQ;IAGL,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,GAAG,CAAyD;gBAEhD,EAAE,EAAE,MAAM,aAAa;IAE3C,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAMhE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAK9D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAUjE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAOjE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI;IACxE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI;IAkE5E,KAAK;IAOL,OAAO,CAAC,cAAc;CAYzB"}
|
package/lib/cacheMap.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
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.CacheMap = exports.CachedEntity = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
class CachedEntity {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.value = null;
|
|
12
|
+
this.relations = {};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.CachedEntity = CachedEntity;
|
|
16
|
+
class CacheMap {
|
|
17
|
+
constructor(em) {
|
|
18
|
+
this.em = em;
|
|
19
|
+
this.map = new Map();
|
|
20
|
+
}
|
|
21
|
+
exist(entityClass, id) {
|
|
22
|
+
const cacheMap = this.getEntityCache(entityClass);
|
|
23
|
+
const cachedEntity = cacheMap.get(id);
|
|
24
|
+
return cachedEntity?.value != null;
|
|
25
|
+
}
|
|
26
|
+
get(entityClass, id) {
|
|
27
|
+
const cacheMap = this.getEntityCache(entityClass);
|
|
28
|
+
return cacheMap.get(id);
|
|
29
|
+
}
|
|
30
|
+
ensure(entityClass, id) {
|
|
31
|
+
const cacheMap = this.getEntityCache(entityClass);
|
|
32
|
+
let cachedEntity = cacheMap.get(id);
|
|
33
|
+
if (cachedEntity == null) {
|
|
34
|
+
cachedEntity = new CachedEntity();
|
|
35
|
+
cacheMap.set(id, cachedEntity);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
delete(entityClass, id) {
|
|
39
|
+
const cacheMap = this.getEntityCache(entityClass);
|
|
40
|
+
const cachedEntity = new CachedEntity();
|
|
41
|
+
cacheMap.set(id, cachedEntity);
|
|
42
|
+
}
|
|
43
|
+
add(e, mask = {}) {
|
|
44
|
+
const em = this.em();
|
|
45
|
+
const entities = Array.isArray(e) ? e : [e];
|
|
46
|
+
if (entities.length == 0)
|
|
47
|
+
return;
|
|
48
|
+
const entityClass = entities[0].constructor;
|
|
49
|
+
const metadata = em.connection.getMetadata(entities[0].constructor);
|
|
50
|
+
const cacheMap = this.getEntityCache(metadata.target);
|
|
51
|
+
for (const entity of entities) {
|
|
52
|
+
let cachedEntity = cacheMap.get(entity.id);
|
|
53
|
+
if (cachedEntity == null) {
|
|
54
|
+
cachedEntity = new CachedEntity();
|
|
55
|
+
cacheMap.set(entity.id, cachedEntity);
|
|
56
|
+
}
|
|
57
|
+
if (cachedEntity.value == null) {
|
|
58
|
+
cachedEntity.value = em.create(entityClass);
|
|
59
|
+
}
|
|
60
|
+
for (const column of metadata.nonVirtualColumns) {
|
|
61
|
+
const objectColumnValue = column.getEntityValue(entity);
|
|
62
|
+
if (objectColumnValue !== undefined) {
|
|
63
|
+
column.setEntityValue(cachedEntity.value, (0, utils_1.copy)(objectColumnValue));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const relation of metadata.relations) {
|
|
67
|
+
const relatedMetadata = relation.inverseEntityMetadata;
|
|
68
|
+
const relatedEntity = relation.getEntityValue(entity);
|
|
69
|
+
const relatedMask = mask[relation.propertyName];
|
|
70
|
+
if (relatedMask) {
|
|
71
|
+
if (relation.isOneToMany || relation.isManyToMany) {
|
|
72
|
+
if (Array.isArray(relatedEntity)) {
|
|
73
|
+
for (const r of relatedEntity) {
|
|
74
|
+
this.add(r, typeof relatedMask === 'boolean' ? {} : relatedMask);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (relatedEntity != null) {
|
|
79
|
+
this.add(relatedEntity, typeof relatedMask === 'boolean' ? {} : relatedMask);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (relation.isOwning && relatedMask) {
|
|
83
|
+
if (relatedEntity == null) {
|
|
84
|
+
relation.setEntityValue(cachedEntity.value, null);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const _relationCacheMap = this.getEntityCache(relatedMetadata.target);
|
|
88
|
+
const cachedRelation = _relationCacheMap.get(relatedEntity.id);
|
|
89
|
+
(0, assert_1.default)(cachedRelation != null, `missing entity ${relatedMetadata.name} with id ${relatedEntity.id}`);
|
|
90
|
+
const relatedEntityIdOnly = em.create(relatedMetadata.target, { id: relatedEntity.id });
|
|
91
|
+
relation.setEntityValue(cachedEntity.value, relatedEntityIdOnly);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
clear() {
|
|
98
|
+
for (const item of this.map.values()) {
|
|
99
|
+
item.clear();
|
|
100
|
+
}
|
|
101
|
+
this.map.clear();
|
|
102
|
+
}
|
|
103
|
+
getEntityCache(entityClass) {
|
|
104
|
+
const em = this.em();
|
|
105
|
+
const metadata = em.connection.getMetadata(entityClass);
|
|
106
|
+
let map = this.map.get(metadata.name);
|
|
107
|
+
if (map == null) {
|
|
108
|
+
map = new Map();
|
|
109
|
+
this.map.set(metadata.name, map);
|
|
110
|
+
}
|
|
111
|
+
return map;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.CacheMap = CacheMap;
|
|
115
|
+
//# sourceMappingURL=cacheMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheMap.js","sourceRoot":"","sources":["../src/cacheMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IsolationLevel, TypeormDatabase, TypeormDatabaseOptions } from '@subsquid/typeorm-store';
|
|
2
|
+
import { FinalTxInfo, HotTxInfo, HashAndHeight } from '@subsquid/typeorm-store/lib/interfaces';
|
|
3
|
+
import { StoreWithCache } from './store';
|
|
4
|
+
export { IsolationLevel, TypeormDatabaseOptions };
|
|
5
|
+
export declare class TypeormDatabaseWithCache extends TypeormDatabase {
|
|
6
|
+
transact(info: FinalTxInfo, cb: (store: StoreWithCache) => Promise<void>): Promise<void>;
|
|
7
|
+
transactHot(info: HotTxInfo, cb: (store: StoreWithCache, block: HashAndHeight) => Promise<void>): Promise<void>;
|
|
8
|
+
private performUpdates;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +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;CAkB/B"}
|
package/lib/database.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
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.TypeormDatabaseWithCache = void 0;
|
|
7
|
+
const typeorm_store_1 = require("@subsquid/typeorm-store");
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const store_1 = require("./store");
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
class TypeormDatabaseWithCache extends typeorm_store_1.TypeormDatabase {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
transact(info, cb) {
|
|
14
|
+
return super.transact(info, cb);
|
|
15
|
+
}
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
transactHot(info, cb) {
|
|
18
|
+
return super.transactHot(info, cb);
|
|
19
|
+
}
|
|
20
|
+
async performUpdates(cb, em, changeTracker) {
|
|
21
|
+
let running = true;
|
|
22
|
+
let store = new store_1.StoreWithCache(() => {
|
|
23
|
+
(0, assert_1.default)(running, `too late to perform db updates, make sure you haven't forgot to await on db query`);
|
|
24
|
+
return em;
|
|
25
|
+
}, changeTracker);
|
|
26
|
+
try {
|
|
27
|
+
await cb(store);
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
running = false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.TypeormDatabaseWithCache = TypeormDatabaseWithCache;
|
|
35
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +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;SAClB;gBAAS;YACN,OAAO,GAAG,KAAK,CAAA;SAClB;IACL,CAAC;CACJ;AA7BD,4DA6BC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,SAAS,CAAA"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.StoreWithCache = void 0;
|
|
18
|
+
__exportStar(require("./database"), exports);
|
|
19
|
+
var store_1 = require("./store");
|
|
20
|
+
Object.defineProperty(exports, "StoreWithCache", { enumerable: true, get: function () { return store_1.StoreWithCache; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,iCAA4F;AAA9B,uGAAA,cAAc,OAAA"}
|
package/lib/store.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Entity as _Entity, Entity, EntityClass, FindManyOptions, FindOneOptions, Store } from '@subsquid/typeorm-store';
|
|
2
|
+
import { ChangeTracker } from '@subsquid/typeorm-store/lib/hot';
|
|
3
|
+
import { EntityManager, EntityTarget, FindOptionsRelations, FindOptionsWhere } from 'typeorm';
|
|
4
|
+
export { EntityClass, FindManyOptions, FindOneOptions, Entity };
|
|
5
|
+
export type DeferMap = Map<string, {
|
|
6
|
+
ids: Set<string>;
|
|
7
|
+
relations: FindOptionsRelations<any>;
|
|
8
|
+
}>;
|
|
9
|
+
export interface ChangeSet {
|
|
10
|
+
inserts: Entity[];
|
|
11
|
+
upserts: Entity[];
|
|
12
|
+
delayedUpserts: Entity[];
|
|
13
|
+
removes: Entity[];
|
|
14
|
+
}
|
|
15
|
+
export declare class StoreWithCache extends Store {
|
|
16
|
+
private em;
|
|
17
|
+
private deferMap;
|
|
18
|
+
private updates;
|
|
19
|
+
private cache;
|
|
20
|
+
constructor(em: () => EntityManager, changes?: ChangeTracker);
|
|
21
|
+
insert<E extends _Entity>(entity: E): Promise<void>;
|
|
22
|
+
insert<E extends _Entity>(entities: E[]): Promise<void>;
|
|
23
|
+
upsert<E extends _Entity>(entity: E): Promise<void>;
|
|
24
|
+
upsert<E extends _Entity>(entities: E[]): Promise<void>;
|
|
25
|
+
save<E extends _Entity>(entity: E): Promise<void>;
|
|
26
|
+
save<E extends _Entity>(entities: E[]): Promise<void>;
|
|
27
|
+
remove<E extends Entity>(entity: E): Promise<void>;
|
|
28
|
+
remove<E extends Entity>(entities: E[]): Promise<void>;
|
|
29
|
+
remove<E extends Entity>(entityClass: EntityTarget<E>, id: string | string[]): Promise<void>;
|
|
30
|
+
count<E extends Entity>(entityClass: EntityTarget<E>, options?: FindManyOptions<E>): Promise<number>;
|
|
31
|
+
countBy<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<number>;
|
|
32
|
+
find<E extends Entity>(entityClass: EntityTarget<E>, options: FindManyOptions<E>): Promise<E[]>;
|
|
33
|
+
findBy<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E[]>;
|
|
34
|
+
findOne<E extends Entity>(entityClass: EntityTarget<E>, options: FindOneOptions<E>): Promise<E | undefined>;
|
|
35
|
+
findOneOrFail<E extends Entity>(entityClass: EntityTarget<E>, options: FindOneOptions<E>): Promise<E>;
|
|
36
|
+
findOneBy<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E | undefined>;
|
|
37
|
+
findOneByOrFail<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E>;
|
|
38
|
+
get<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): Promise<E | undefined>;
|
|
39
|
+
getOrFail<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): Promise<E>;
|
|
40
|
+
private getCached;
|
|
41
|
+
defer<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): DeferredEntity<E>;
|
|
42
|
+
private persist;
|
|
43
|
+
flush(): Promise<void>;
|
|
44
|
+
private load;
|
|
45
|
+
private knownSelfRelations;
|
|
46
|
+
private getSelfRelations;
|
|
47
|
+
private getTopologicalOrder;
|
|
48
|
+
private getDeferData;
|
|
49
|
+
private getUpdateMap;
|
|
50
|
+
}
|
|
51
|
+
export declare class DeferredEntity<E extends Entity> {
|
|
52
|
+
private opts;
|
|
53
|
+
constructor(opts: {
|
|
54
|
+
get: () => Promise<E | undefined>;
|
|
55
|
+
getOrFail: () => Promise<E>;
|
|
56
|
+
});
|
|
57
|
+
get(): Promise<E | undefined>;
|
|
58
|
+
getOrFail(): Promise<E>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,yBAAyB,CAAA;AACtH,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAA;AAI7D,OAAO,EAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAK,MAAM,SAAS,CAAA;AAM/F,OAAO,EAAC,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAC,CAAA;AAE7D,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;IAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAA;CAAC,CAAC,CAAA;AAC5F,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB;AAGD,qBAAa,cAAe,SAAQ,KAAK;IAKzB,OAAO,CAAC,EAAE;IAJtB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,KAAK,CAAU;gBAEH,EAAE,EAAE,MAAM,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa;IAK9D,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACnD,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvD,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACnD,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvD,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACjD,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAClD,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACtD,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5F,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpG,OAAO,CAAC,CAAC,SAAS,MAAM,EAC1B,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACnD,OAAO,CAAC,MAAM,CAAC;IAKZ,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAO/F,MAAM,CAAC,CAAC,SAAS,MAAM,EACzB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACnD,OAAO,CAAC,CAAC,EAAE,CAAC;IAOT,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAO3G,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAOrG,SAAS,CAAC,CAAC,SAAS,MAAM,EAC5B,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACnD,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOnB,eAAe,CAAC,CAAC,SAAS,MAAM,EAClC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACnD,OAAO,CAAC,CAAC,CAAC;IAOP,GAAG,CAAC,CAAC,SAAS,MAAM,EACtB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAYnB,SAAS,CAAC,CAAC,SAAS,MAAM,EAC5B,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC;IAWb,OAAO,CAAC,SAAS;IA8CjB,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GACpC,cAAc,CAAC,CAAC,CAAC;YAeN,OAAO;IA+Ef,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAKd,IAAI;IAmBlB,OAAO,CAAC,kBAAkB,CAAyC;IACnE,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,YAAY;CAYvB;AAyBD,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM;IAC5B,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE;QAAC,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;KAAC;IAEpF,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI7B,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC;CAGhC"}
|