@belopash/typeorm-store 2.0.0-rc.4 → 2.0.0-rc.6
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/database.d.ts +6 -3
- package/lib/database.d.ts.map +1 -1
- package/lib/database.js +45 -10
- package/lib/database.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
- package/src/database.ts +71 -14
- package/src/index.ts +7 -1
package/lib/database.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { TypeormDatabaseOptions as TypeormDatabaseOptions_, IsolationLevel } from '@subsquid/typeorm-store';
|
|
1
|
+
import { TypeormDatabaseOptions as TypeormDatabaseOptions_, IsolationLevel, DatabaseTransactResult } from '@subsquid/typeorm-store';
|
|
2
2
|
import { DatabaseState, FinalTxInfo, HashAndHeight, HotTxInfo } from '@subsquid/typeorm-store/lib/interfaces';
|
|
3
|
+
import { TemplateMutation } from '@subsquid/typeorm-store/lib/templates';
|
|
3
4
|
import { DataSource } from 'typeorm';
|
|
4
5
|
import { Store } from './store';
|
|
5
6
|
import { StateManager } from './utils/stateManager';
|
|
7
|
+
export { DatabaseTransactResult, TemplateMutation };
|
|
6
8
|
export { IsolationLevel };
|
|
7
9
|
export interface TypeormDatabaseOptions extends TypeormDatabaseOptions_ {
|
|
8
10
|
/**
|
|
@@ -33,15 +35,16 @@ export declare class TypeormDatabase {
|
|
|
33
35
|
};
|
|
34
36
|
protected projectDir: string;
|
|
35
37
|
readonly supportsHotBlocks: boolean;
|
|
38
|
+
readonly supportsTemplates: true;
|
|
36
39
|
constructor(options?: TypeormDatabaseOptions);
|
|
37
40
|
connect(): Promise<DatabaseState>;
|
|
38
41
|
protected initializeDataSource(): Promise<DataSource>;
|
|
39
42
|
disconnect(): Promise<void>;
|
|
40
43
|
private initTransaction;
|
|
41
44
|
private getState;
|
|
42
|
-
transact(info: FinalTxInfo, cb: (store: Store) => Promise<void>): Promise<void>;
|
|
45
|
+
transact(info: FinalTxInfo, cb: (store: Store) => Promise<DatabaseTransactResult | void>): Promise<void>;
|
|
43
46
|
transactHot(info: HotTxInfo, cb: (store: Store, block: HashAndHeight) => Promise<void>): Promise<void>;
|
|
44
|
-
transactHot2(info: HotTxInfo, cb: (store: Store, sliceBeg: number, sliceEnd: number) => Promise<void>): Promise<void>;
|
|
47
|
+
transactHot2(info: HotTxInfo, cb: (store: Store, sliceBeg: number, sliceEnd: number) => Promise<DatabaseTransactResult | void>): Promise<void>;
|
|
45
48
|
private deleteHotBlocks;
|
|
46
49
|
private insertHotBlock;
|
|
47
50
|
private updateStatus;
|
package/lib/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,IAAI,uBAAuB,EACjD,cAAc,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,IAAI,uBAAuB,EACjD,cAAc,EACd,sBAAsB,EACzB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAY,SAAS,EAAC,MAAM,wCAAwC,CAAA;AACrH,OAAO,EAAC,gBAAgB,EAA0B,MAAM,uCAAuC,CAAA;AAG/F,OAAO,EAAC,UAAU,EAAgB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAC,CAAA;AAEjD,OAAO,EAAC,cAAc,EAAC,CAAA;AAEvB,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACnE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,QAAA,MAAM,kBAAkB,eAAyB,CAAA;AAEjD,qBAAa,eAAe;IACxB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;IACxC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAA;IAC1C,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG;QACzB,CAAC,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAA;KACtC,CAAA;IACD,SAAS,CAAC,UAAU,EAAE,MAAM,CAAA;IAE5B,SAAgB,iBAAiB,EAAE,OAAO,CAAA;IAC1C,SAAgB,iBAAiB,EAAG,IAAI,CAAS;gBAErC,OAAO,CAAC,EAAE,sBAAsB;IAUtC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;cAcvB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC;IAMrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAInB,eAAe;YAqEf,QAAQ;IAetB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxG,WAAW,CACP,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAQhB,YAAY,CACR,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GACjG,OAAO,CAAC,IAAI,CAAC;IAqDhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;YAOR,YAAY;YAeZ,cAAc;YAmCd,MAAM;IAiBpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;CAa1B"}
|
package/lib/database.js
CHANGED
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.TypeormDatabase = void 0;
|
|
16
16
|
const logger_1 = require("@subsquid/logger");
|
|
17
17
|
const hot_1 = require("@subsquid/typeorm-store/lib/hot");
|
|
18
|
+
const templates_1 = require("@subsquid/typeorm-store/lib/templates");
|
|
18
19
|
const util_internal_1 = require("@subsquid/util-internal");
|
|
19
20
|
const assert_1 = __importDefault(require("assert"));
|
|
20
21
|
const typeorm_1 = require("typeorm");
|
|
@@ -24,6 +25,7 @@ const typeorm_config_1 = require("@subsquid/typeorm-config");
|
|
|
24
25
|
const StateManagerSymbol = Symbol('StateManager');
|
|
25
26
|
class TypeormDatabase {
|
|
26
27
|
constructor(options) {
|
|
28
|
+
this.supportsTemplates = true;
|
|
27
29
|
this.statusSchema = options?.stateSchema || 'squid_processor';
|
|
28
30
|
this.isolationLevel = options?.isolationLevel || 'SERIALIZABLE';
|
|
29
31
|
this.postponeWriteOperations = options?.postponeWriteOperations ?? true;
|
|
@@ -74,20 +76,38 @@ class TypeormDatabase {
|
|
|
74
76
|
`change jsonb not null, ` +
|
|
75
77
|
`PRIMARY KEY (block_height, index)` +
|
|
76
78
|
`)`);
|
|
79
|
+
await em.query(`CREATE TABLE IF NOT EXISTS ${schema}.template_registry (` +
|
|
80
|
+
`key text not null, ` +
|
|
81
|
+
`value text not null, ` +
|
|
82
|
+
`type boolean not null, ` +
|
|
83
|
+
`block_number int not null, ` +
|
|
84
|
+
`height int not null, ` +
|
|
85
|
+
`PRIMARY KEY (key, value, type, block_number)` +
|
|
86
|
+
`)`);
|
|
77
87
|
let status = await em.query(`SELECT height, hash, nonce FROM ${schema}.status WHERE id = 0`);
|
|
78
88
|
if (status.length == 0) {
|
|
79
89
|
await em.query(`INSERT INTO ${schema}.status (id, height, hash) VALUES (0, -1, '0x')`);
|
|
80
|
-
|
|
90
|
+
return assertStateInvariants({ height: -1, hash: '0x', nonce: 0, top: [], templates: [] });
|
|
91
|
+
}
|
|
92
|
+
let rawTemplates = await em.query(`SELECT key, value, type, block_number FROM ${schema}.template_registry ` +
|
|
93
|
+
`WHERE height <= $1 ORDER BY height, block_number, type, key, value`, [status[0].height]);
|
|
94
|
+
let templates = rawTemplates.map(mapTemplateMutation);
|
|
95
|
+
let hotBlocks = await em.query(`SELECT height, hash FROM ${schema}.hot_block ORDER BY height`);
|
|
96
|
+
let top = [];
|
|
97
|
+
for (let block of hotBlocks) {
|
|
98
|
+
let rawBlockTemplates = await em.query(`SELECT key, value, type, block_number FROM ${schema}.template_registry ` +
|
|
99
|
+
`WHERE height = $1 ORDER BY block_number, type, key, value`, [block.height]);
|
|
100
|
+
top.push({ ...block, templates: rawBlockTemplates.map(mapTemplateMutation) });
|
|
81
101
|
}
|
|
82
|
-
|
|
83
|
-
return assertStateInvariants({ ...status[0], top });
|
|
102
|
+
return assertStateInvariants({ ...status[0], top, templates });
|
|
84
103
|
}
|
|
85
104
|
async getState(em) {
|
|
86
105
|
let schema = this.escapedSchema();
|
|
87
106
|
let status = await em.query(`SELECT height, hash, nonce FROM ${schema}.status WHERE id = 0`);
|
|
88
107
|
(0, assert_1.default)(status.length == 1);
|
|
89
|
-
let
|
|
90
|
-
|
|
108
|
+
let rawTop = await em.query(`SELECT hash, height FROM ${schema}.hot_block ORDER BY height`);
|
|
109
|
+
let top = rawTop.map(b => ({ ...b, templates: [] }));
|
|
110
|
+
return assertStateInvariants({ ...status[0], top, templates: [] });
|
|
91
111
|
}
|
|
92
112
|
transact(info, cb) {
|
|
93
113
|
return this.submit(async (em) => {
|
|
@@ -101,7 +121,7 @@ class TypeormDatabase {
|
|
|
101
121
|
let block = state.top[i];
|
|
102
122
|
await (0, hot_1.rollbackBlock)(this.statusSchema, em, block.height);
|
|
103
123
|
}
|
|
104
|
-
await this.performUpdates(cb, em);
|
|
124
|
+
await this.performUpdates(cb, em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, next.height));
|
|
105
125
|
await this.updateStatus(em, state.nonce, next);
|
|
106
126
|
});
|
|
107
127
|
}
|
|
@@ -134,12 +154,12 @@ class TypeormDatabase {
|
|
|
134
154
|
finalizedEnd = info.newBlocks.length;
|
|
135
155
|
}
|
|
136
156
|
if (finalizedEnd > 0) {
|
|
137
|
-
await this.performUpdates((store) => cb(store, 0, finalizedEnd), em);
|
|
157
|
+
await this.performUpdates((store) => cb(store, 0, finalizedEnd), em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, info.finalizedHead.height));
|
|
138
158
|
}
|
|
139
159
|
for (let i = finalizedEnd; i < info.newBlocks.length; i++) {
|
|
140
160
|
let b = info.newBlocks[i];
|
|
141
161
|
await this.insertHotBlock(em, b);
|
|
142
|
-
await this.performUpdates((store) => cb(store, i, i + 1), em, new hot_1.ChangeTracker(em, this.statusSchema, b.height));
|
|
162
|
+
await this.performUpdates((store) => cb(store, i, i + 1), em, new templates_1.TemplateRegistryTracker(em, this.statusSchema, b.height), new hot_1.ChangeTracker(em, this.statusSchema, b.height));
|
|
143
163
|
}
|
|
144
164
|
}
|
|
145
165
|
chain = chain.slice(0, rollbackPos).concat(info.newBlocks);
|
|
@@ -164,7 +184,7 @@ class TypeormDatabase {
|
|
|
164
184
|
// but occasionally people use multiprocessor setups and READ_COMMITTED.
|
|
165
185
|
assert_1.default.strictEqual(rowsChanged, 1, RACE_MSG);
|
|
166
186
|
}
|
|
167
|
-
async performUpdates(cb, em, changeWriter) {
|
|
187
|
+
async performUpdates(cb, em, templateRegistry, changeWriter) {
|
|
168
188
|
let store = new store_1.Store({
|
|
169
189
|
em,
|
|
170
190
|
state: this.getStateManager(),
|
|
@@ -174,13 +194,20 @@ class TypeormDatabase {
|
|
|
174
194
|
cacheEntities: this.cacheEntities,
|
|
175
195
|
});
|
|
176
196
|
try {
|
|
177
|
-
await cb(store);
|
|
197
|
+
let result = await cb(store);
|
|
178
198
|
if (this.resetOnCommit) {
|
|
179
199
|
await store.flush();
|
|
180
200
|
}
|
|
181
201
|
else {
|
|
182
202
|
await store.sync();
|
|
183
203
|
}
|
|
204
|
+
if (result?.templates) {
|
|
205
|
+
await templateRegistry.persist(result.templates);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
store.reset();
|
|
210
|
+
throw e;
|
|
184
211
|
}
|
|
185
212
|
finally {
|
|
186
213
|
store['isClosed'] = true;
|
|
@@ -246,4 +273,12 @@ function assertChainContinuity(base, chain) {
|
|
|
246
273
|
prev = b;
|
|
247
274
|
}
|
|
248
275
|
}
|
|
276
|
+
function mapTemplateMutation(r) {
|
|
277
|
+
return {
|
|
278
|
+
type: r.type ? 'add' : 'delete',
|
|
279
|
+
key: r.key,
|
|
280
|
+
value: r.value,
|
|
281
|
+
blockNumber: r.block_number,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
249
284
|
//# sourceMappingURL=database.js.map
|
package/lib/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { TypeormDatabase, TypeormDatabase as TypeormDatabaseWithCache, TypeormDatabaseOptions } from './database';
|
|
1
|
+
export { TypeormDatabase, TypeormDatabase as TypeormDatabaseWithCache, TypeormDatabaseOptions, DatabaseTransactResult, TemplateMutation, } from './database';
|
|
2
2
|
export { EntityTarget, EntityLiteral, EntityLiteral as Entity, FindManyOptions, FindOneOptions, Store, Store as StoreWithCache, TrackOptions, } from './store';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,eAAe,IAAI,wBAAwB,EAC3C,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,YAAY,EACZ,aAAa,EACb,aAAa,IAAI,MAAM,EACvB,eAAe,EACf,cAAc,EACd,KAAK,EACL,KAAK,IAAI,cAAc,EACvB,YAAY,GACf,MAAM,SAAS,CAAA"}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAMmB;AALf,2GAAA,eAAe,OAAA;AACf,oHAAA,eAAe,OAA4B;AAK/C,iCASgB;AAHZ,8FAAA,KAAK,OAAA;AACL,uGAAA,KAAK,OAAkB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@belopash/typeorm-store",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.6",
|
|
4
4
|
"description": "Optimized TypeORM based storage for squid mappings",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "git+https://github.com/belopash/squid-typeorm-store.git"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"@subsquid/logger": "^1",
|
|
27
27
|
"@subsquid/typeorm-config": "^4",
|
|
28
|
-
"@subsquid/typeorm-store": "^1",
|
|
28
|
+
"@subsquid/typeorm-store": "^1.8.0",
|
|
29
29
|
"pg": "^8.11.3",
|
|
30
30
|
"typeorm": "^0.3.20"
|
|
31
31
|
},
|
package/src/database.ts
CHANGED
|
@@ -2,9 +2,11 @@ import {createLogger} from '@subsquid/logger'
|
|
|
2
2
|
import {
|
|
3
3
|
TypeormDatabaseOptions as TypeormDatabaseOptions_,
|
|
4
4
|
IsolationLevel,
|
|
5
|
+
DatabaseTransactResult,
|
|
5
6
|
} from '@subsquid/typeorm-store'
|
|
6
7
|
import {ChangeTracker, rollbackBlock} from '@subsquid/typeorm-store/lib/hot'
|
|
7
|
-
import {DatabaseState, FinalTxInfo, HashAndHeight, HotTxInfo} from '@subsquid/typeorm-store/lib/interfaces'
|
|
8
|
+
import {DatabaseState, FinalTxInfo, HashAndHeight, HotBlock, HotTxInfo} from '@subsquid/typeorm-store/lib/interfaces'
|
|
9
|
+
import {TemplateMutation, TemplateRegistryTracker} from '@subsquid/typeorm-store/lib/templates'
|
|
8
10
|
import {assertNotNull, def, maybeLast} from '@subsquid/util-internal'
|
|
9
11
|
import assert from 'assert'
|
|
10
12
|
import {DataSource, EntityManager} from 'typeorm'
|
|
@@ -12,6 +14,8 @@ import {Store} from './store'
|
|
|
12
14
|
import {StateManager} from './utils/stateManager'
|
|
13
15
|
import {createOrmConfig} from '@subsquid/typeorm-config'
|
|
14
16
|
|
|
17
|
+
export {DatabaseTransactResult, TemplateMutation}
|
|
18
|
+
|
|
15
19
|
export {IsolationLevel}
|
|
16
20
|
|
|
17
21
|
export interface TypeormDatabaseOptions extends TypeormDatabaseOptions_ {
|
|
@@ -48,6 +52,7 @@ export class TypeormDatabase {
|
|
|
48
52
|
protected projectDir: string
|
|
49
53
|
|
|
50
54
|
public readonly supportsHotBlocks: boolean
|
|
55
|
+
public readonly supportsTemplates = true as const
|
|
51
56
|
|
|
52
57
|
constructor(options?: TypeormDatabaseOptions) {
|
|
53
58
|
this.statusSchema = options?.stateSchema || 'squid_processor'
|
|
@@ -112,18 +117,44 @@ export class TypeormDatabase {
|
|
|
112
117
|
`PRIMARY KEY (block_height, index)` +
|
|
113
118
|
`)`
|
|
114
119
|
)
|
|
120
|
+
await em.query(
|
|
121
|
+
`CREATE TABLE IF NOT EXISTS ${schema}.template_registry (` +
|
|
122
|
+
`key text not null, ` +
|
|
123
|
+
`value text not null, ` +
|
|
124
|
+
`type boolean not null, ` +
|
|
125
|
+
`block_number int not null, ` +
|
|
126
|
+
`height int not null, ` +
|
|
127
|
+
`PRIMARY KEY (key, value, type, block_number)` +
|
|
128
|
+
`)`
|
|
129
|
+
)
|
|
115
130
|
|
|
116
131
|
let status: (HashAndHeight & {nonce: number})[] = await em.query(
|
|
117
132
|
`SELECT height, hash, nonce FROM ${schema}.status WHERE id = 0`
|
|
118
133
|
)
|
|
119
134
|
if (status.length == 0) {
|
|
120
135
|
await em.query(`INSERT INTO ${schema}.status (id, height, hash) VALUES (0, -1, '0x')`)
|
|
121
|
-
|
|
136
|
+
return assertStateInvariants({height: -1, hash: '0x', nonce: 0, top: [], templates: []})
|
|
122
137
|
}
|
|
123
138
|
|
|
124
|
-
let
|
|
139
|
+
let rawTemplates: any[] = await em.query(
|
|
140
|
+
`SELECT key, value, type, block_number FROM ${schema}.template_registry ` +
|
|
141
|
+
`WHERE height <= $1 ORDER BY height, block_number, type, key, value`,
|
|
142
|
+
[status[0].height]
|
|
143
|
+
)
|
|
144
|
+
let templates: TemplateMutation[] = rawTemplates.map(mapTemplateMutation)
|
|
145
|
+
|
|
146
|
+
let hotBlocks: HashAndHeight[] = await em.query(`SELECT height, hash FROM ${schema}.hot_block ORDER BY height`)
|
|
147
|
+
let top: HotBlock[] = []
|
|
148
|
+
for (let block of hotBlocks) {
|
|
149
|
+
let rawBlockTemplates: any[] = await em.query(
|
|
150
|
+
`SELECT key, value, type, block_number FROM ${schema}.template_registry ` +
|
|
151
|
+
`WHERE height = $1 ORDER BY block_number, type, key, value`,
|
|
152
|
+
[block.height]
|
|
153
|
+
)
|
|
154
|
+
top.push({...block, templates: rawBlockTemplates.map(mapTemplateMutation)})
|
|
155
|
+
}
|
|
125
156
|
|
|
126
|
-
return assertStateInvariants({...status[0], top})
|
|
157
|
+
return assertStateInvariants({...status[0], top, templates})
|
|
127
158
|
}
|
|
128
159
|
|
|
129
160
|
private async getState(em: EntityManager): Promise<DatabaseState> {
|
|
@@ -135,12 +166,13 @@ export class TypeormDatabase {
|
|
|
135
166
|
|
|
136
167
|
assert(status.length == 1)
|
|
137
168
|
|
|
138
|
-
let
|
|
169
|
+
let rawTop: HashAndHeight[] = await em.query(`SELECT hash, height FROM ${schema}.hot_block ORDER BY height`)
|
|
170
|
+
let top: HotBlock[] = rawTop.map(b => ({...b, templates: []}))
|
|
139
171
|
|
|
140
|
-
return assertStateInvariants({...status[0], top})
|
|
172
|
+
return assertStateInvariants({...status[0], top, templates: []})
|
|
141
173
|
}
|
|
142
174
|
|
|
143
|
-
transact(info: FinalTxInfo, cb: (store: Store) => Promise<void>): Promise<void> {
|
|
175
|
+
transact(info: FinalTxInfo, cb: (store: Store) => Promise<DatabaseTransactResult | void>): Promise<void> {
|
|
144
176
|
return this.submit(async (em) => {
|
|
145
177
|
let state = await this.getState(em)
|
|
146
178
|
let {prevHead: prev, nextHead: next} = info
|
|
@@ -155,13 +187,16 @@ export class TypeormDatabase {
|
|
|
155
187
|
await rollbackBlock(this.statusSchema, em, block.height)
|
|
156
188
|
}
|
|
157
189
|
|
|
158
|
-
await this.performUpdates(cb, em)
|
|
190
|
+
await this.performUpdates(cb, em, new TemplateRegistryTracker(em, this.statusSchema, next.height))
|
|
159
191
|
|
|
160
192
|
await this.updateStatus(em, state.nonce, next)
|
|
161
193
|
})
|
|
162
194
|
}
|
|
163
195
|
|
|
164
|
-
transactHot(
|
|
196
|
+
transactHot(
|
|
197
|
+
info: HotTxInfo,
|
|
198
|
+
cb: (store: Store, block: HashAndHeight) => Promise<void>
|
|
199
|
+
): Promise<void> {
|
|
165
200
|
return this.transactHot2(info, async (store, sliceBeg, sliceEnd) => {
|
|
166
201
|
for (let i = sliceBeg; i < sliceEnd; i++) {
|
|
167
202
|
await cb(store, info.newBlocks[i])
|
|
@@ -171,11 +206,11 @@ export class TypeormDatabase {
|
|
|
171
206
|
|
|
172
207
|
transactHot2(
|
|
173
208
|
info: HotTxInfo,
|
|
174
|
-
cb: (store: Store, sliceBeg: number, sliceEnd: number) => Promise<void>
|
|
209
|
+
cb: (store: Store, sliceBeg: number, sliceEnd: number) => Promise<DatabaseTransactResult | void>
|
|
175
210
|
): Promise<void> {
|
|
176
211
|
return this.submit(async (em) => {
|
|
177
212
|
let state = await this.getState(em)
|
|
178
|
-
let chain = [state, ...state.top]
|
|
213
|
+
let chain: HashAndHeight[] = [state, ...state.top]
|
|
179
214
|
|
|
180
215
|
assertChainContinuity(info.baseHead, info.newBlocks)
|
|
181
216
|
assert(info.finalizedHead.height <= (maybeLast(info.newBlocks) ?? info.baseHead).height)
|
|
@@ -199,7 +234,11 @@ export class TypeormDatabase {
|
|
|
199
234
|
finalizedEnd = info.newBlocks.length
|
|
200
235
|
}
|
|
201
236
|
if (finalizedEnd > 0) {
|
|
202
|
-
await this.performUpdates(
|
|
237
|
+
await this.performUpdates(
|
|
238
|
+
(store) => cb(store, 0, finalizedEnd),
|
|
239
|
+
em,
|
|
240
|
+
new TemplateRegistryTracker(em, this.statusSchema, info.finalizedHead.height)
|
|
241
|
+
)
|
|
203
242
|
}
|
|
204
243
|
for (let i = finalizedEnd; i < info.newBlocks.length; i++) {
|
|
205
244
|
let b = info.newBlocks[i]
|
|
@@ -207,6 +246,7 @@ export class TypeormDatabase {
|
|
|
207
246
|
await this.performUpdates(
|
|
208
247
|
(store) => cb(store, i, i + 1),
|
|
209
248
|
em,
|
|
249
|
+
new TemplateRegistryTracker(em, this.statusSchema, b.height),
|
|
210
250
|
new ChangeTracker(em, this.statusSchema, b.height)
|
|
211
251
|
)
|
|
212
252
|
}
|
|
@@ -247,8 +287,9 @@ export class TypeormDatabase {
|
|
|
247
287
|
}
|
|
248
288
|
|
|
249
289
|
private async performUpdates(
|
|
250
|
-
cb: (store: Store) => Promise<void>,
|
|
290
|
+
cb: (store: Store) => Promise<DatabaseTransactResult | void>,
|
|
251
291
|
em: EntityManager,
|
|
292
|
+
templateRegistry: TemplateRegistryTracker,
|
|
252
293
|
changeWriter?: ChangeTracker
|
|
253
294
|
): Promise<void> {
|
|
254
295
|
let store = new Store({
|
|
@@ -261,13 +302,20 @@ export class TypeormDatabase {
|
|
|
261
302
|
})
|
|
262
303
|
|
|
263
304
|
try {
|
|
264
|
-
await cb(store)
|
|
305
|
+
let result = await cb(store)
|
|
265
306
|
|
|
266
307
|
if (this.resetOnCommit) {
|
|
267
308
|
await store.flush()
|
|
268
309
|
} else {
|
|
269
310
|
await store.sync()
|
|
270
311
|
}
|
|
312
|
+
|
|
313
|
+
if (result?.templates) {
|
|
314
|
+
await templateRegistry.persist(result.templates)
|
|
315
|
+
}
|
|
316
|
+
} catch (e) {
|
|
317
|
+
store.reset()
|
|
318
|
+
throw e
|
|
271
319
|
} finally {
|
|
272
320
|
store['isClosed'] = true
|
|
273
321
|
}
|
|
@@ -335,3 +383,12 @@ function assertChainContinuity(base: HashAndHeight, chain: HashAndHeight[]) {
|
|
|
335
383
|
prev = b
|
|
336
384
|
}
|
|
337
385
|
}
|
|
386
|
+
|
|
387
|
+
function mapTemplateMutation(r: any): TemplateMutation {
|
|
388
|
+
return {
|
|
389
|
+
type: r.type ? 'add' : 'delete',
|
|
390
|
+
key: r.key,
|
|
391
|
+
value: r.value,
|
|
392
|
+
blockNumber: r.block_number,
|
|
393
|
+
}
|
|
394
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {
|
|
2
|
+
TypeormDatabase,
|
|
3
|
+
TypeormDatabase as TypeormDatabaseWithCache,
|
|
4
|
+
TypeormDatabaseOptions,
|
|
5
|
+
DatabaseTransactResult,
|
|
6
|
+
TemplateMutation,
|
|
7
|
+
} from './database'
|
|
2
8
|
export {
|
|
3
9
|
EntityTarget,
|
|
4
10
|
EntityLiteral,
|