@belopash/typeorm-store 1.4.2 → 1.6.0-rc.1
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 +55 -9
- package/lib/database.d.ts.map +1 -1
- package/lib/database.js +166 -26
- package/lib/database.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -18
- package/lib/index.js.map +1 -1
- package/lib/store.d.ts +115 -82
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +215 -419
- package/lib/store.js.map +1 -1
- package/lib/utils/cacheMap.d.ts +10 -13
- package/lib/utils/cacheMap.d.ts.map +1 -1
- package/lib/utils/cacheMap.js +29 -36
- package/lib/utils/cacheMap.js.map +1 -1
- package/lib/utils/changeMap.d.ts +2 -1
- package/lib/utils/changeMap.d.ts.map +1 -1
- package/lib/utils/changeMap.js +11 -8
- package/lib/utils/changeMap.js.map +1 -1
- package/lib/utils/commitOrder.d.ts +7 -0
- package/lib/utils/commitOrder.d.ts.map +1 -0
- package/lib/utils/commitOrder.js +62 -0
- package/lib/utils/commitOrder.js.map +1 -0
- package/lib/utils/deferList.d.ts +3 -3
- package/lib/utils/deferList.d.ts.map +1 -1
- package/lib/utils/deferList.js +11 -11
- package/lib/utils/deferList.js.map +1 -1
- package/lib/utils/misc.d.ts +7 -3
- package/lib/utils/misc.d.ts.map +1 -1
- package/lib/utils/misc.js +25 -54
- package/lib/utils/misc.js.map +1 -1
- package/lib/utils/stateManager.d.ts +55 -0
- package/lib/utils/stateManager.d.ts.map +1 -0
- package/lib/utils/stateManager.js +263 -0
- package/lib/utils/stateManager.js.map +1 -0
- package/package.json +7 -6
- package/src/database.ts +260 -37
- package/src/index.ts +10 -2
- package/src/store.ts +294 -536
- package/src/utils/cacheMap.ts +37 -51
- package/src/utils/changeMap.ts +18 -14
- package/src/utils/commitOrder.ts +77 -0
- package/src/utils/deferList.ts +15 -15
- package/src/utils/misc.ts +32 -50
- package/src/utils/stateManager.ts +316 -0
- package/lib/test/lib/model.d.ts +0 -25
- package/lib/test/lib/model.d.ts.map +0 -1
- package/lib/test/lib/model.js +0 -107
- package/lib/test/lib/model.js.map +0 -1
- package/lib/test/store.test.d.ts +0 -6
- package/lib/test/store.test.d.ts.map +0 -1
- package/lib/test/store.test.js +0 -167
- package/lib/test/store.test.js.map +0 -1
- package/lib/test/util.d.ts +0 -13
- package/lib/test/util.d.ts.map +0 -1
- package/lib/test/util.js +0 -57
- package/lib/test/util.js.map +0 -1
- package/lib/utils/relationGraph.d.ts +0 -3
- package/lib/utils/relationGraph.d.ts.map +0 -1
- package/lib/utils/relationGraph.js +0 -61
- package/lib/utils/relationGraph.js.map +0 -1
- package/src/utils/relationGraph.ts +0 -69
package/lib/database.d.ts
CHANGED
|
@@ -1,12 +1,58 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { TypeormDatabaseOptions as TypeormDatabaseOptions_, IsolationLevel } from '@subsquid/typeorm-store';
|
|
2
|
+
import { DatabaseState, FinalTxInfo, HashAndHeight, HotTxInfo } from '@subsquid/typeorm-store/lib/interfaces';
|
|
3
|
+
import { DataSource } from 'typeorm';
|
|
4
|
+
import { Store } from './store';
|
|
5
|
+
import { StateManager } from './utils/stateManager';
|
|
6
|
+
export { IsolationLevel };
|
|
7
|
+
export interface TypeormDatabaseOptions extends TypeormDatabaseOptions_ {
|
|
8
|
+
/**
|
|
9
|
+
* If true, will batch write operations
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
batchWriteOperations?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* If true, will cache entities on request
|
|
15
|
+
* @default true
|
|
16
|
+
*/
|
|
17
|
+
cacheEntities: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* If true, will sync entities on request
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
syncEntities: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* If true, will reset the state on commit
|
|
25
|
+
* @default true
|
|
26
|
+
*/
|
|
27
|
+
resetOnCommit?: boolean;
|
|
28
|
+
}
|
|
29
|
+
declare const StateManagerSymbol: unique symbol;
|
|
30
|
+
export declare class TypeormDatabase {
|
|
31
|
+
protected statusSchema: string;
|
|
32
|
+
protected isolationLevel: IsolationLevel;
|
|
33
|
+
protected batchWriteOperations: boolean;
|
|
34
|
+
protected cacheEntities: boolean;
|
|
35
|
+
protected syncEntities: boolean;
|
|
36
|
+
protected resetOnCommit: boolean;
|
|
37
|
+
protected con?: DataSource & {
|
|
38
|
+
[StateManagerSymbol]?: StateManager;
|
|
39
|
+
};
|
|
40
|
+
protected projectDir: string;
|
|
41
|
+
readonly supportsHotBlocks: boolean;
|
|
42
|
+
constructor(options?: TypeormDatabaseOptions);
|
|
43
|
+
connect: () => Promise<DatabaseState>;
|
|
44
|
+
disconnect: () => Promise<void>;
|
|
45
|
+
private getState;
|
|
46
|
+
transact(info: FinalTxInfo, cb: (store: Store) => Promise<void>): Promise<void>;
|
|
47
|
+
transactHot(info: HotTxInfo, cb: (store: Store, block: HashAndHeight) => Promise<void>): Promise<void>;
|
|
48
|
+
transactHot2(info: HotTxInfo, cb: (store: Store, sliceBeg: number, sliceEnd: number) => Promise<void>): Promise<void>;
|
|
49
|
+
private deleteHotBlocks;
|
|
50
|
+
private insertHotBlock;
|
|
51
|
+
private updateStatus;
|
|
9
52
|
private performUpdates;
|
|
10
|
-
private
|
|
53
|
+
private submit;
|
|
54
|
+
private escapedSchema;
|
|
55
|
+
private getLogger;
|
|
56
|
+
private getStateManager;
|
|
11
57
|
}
|
|
12
58
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,sBAAsB,IAAI,uBAAuB,EACjD,cAAc,EACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAC,MAAM,wCAAwC,CAAA;AAG3G,OAAO,EAAC,UAAU,EAAgB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAC,cAAc,EAAC,CAAA;AAEvB,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACnE;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAA;IAEtB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAA;IAErB;;;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,oBAAoB,EAAE,OAAO,CAAA;IACvC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAA;IAChC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAA;IAC/B,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;gBAE9B,OAAO,CAAC,EAAE,sBAAsB;IAW5C,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAgD;IACrF,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAmD;YAEpE,QAAQ;IActB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/E,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtG,YAAY,CACR,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACxE,OAAO,CAAC,IAAI,CAAC;IAmDhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;YAOR,YAAY;YAeZ,cAAc;YA4Bd,MAAM;IAiBpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;CAa1B"}
|
package/lib/database.js
CHANGED
|
@@ -12,52 +12,192 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.TypeormDatabase = void 0;
|
|
16
|
+
const logger_1 = require("@subsquid/logger");
|
|
16
17
|
const typeorm_store_1 = require("@subsquid/typeorm-store");
|
|
18
|
+
const hot_1 = require("@subsquid/typeorm-store/lib/hot");
|
|
19
|
+
const util_internal_1 = require("@subsquid/util-internal");
|
|
17
20
|
const assert_1 = __importDefault(require("assert"));
|
|
18
21
|
const store_1 = require("./store");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
const stateManager_1 = require("./utils/stateManager");
|
|
23
|
+
const StateManagerSymbol = Symbol('StateManager');
|
|
24
|
+
class TypeormDatabase {
|
|
25
|
+
constructor(options) {
|
|
26
|
+
this.connect = typeorm_store_1.TypeormDatabase.prototype.connect.bind(this);
|
|
27
|
+
this.disconnect = typeorm_store_1.TypeormDatabase.prototype.disconnect.bind(this);
|
|
28
|
+
this.statusSchema = options?.stateSchema || 'squid_processor';
|
|
29
|
+
this.isolationLevel = options?.isolationLevel || 'SERIALIZABLE';
|
|
30
|
+
this.batchWriteOperations = options?.batchWriteOperations ?? true;
|
|
31
|
+
this.cacheEntities = options?.cacheEntities ?? true;
|
|
32
|
+
this.syncEntities = options?.syncEntities ?? true;
|
|
33
|
+
this.resetOnCommit = options?.resetOnCommit ?? true;
|
|
34
|
+
this.supportsHotBlocks = options?.supportHotBlocks !== false;
|
|
35
|
+
this.projectDir = options?.projectDir || process.cwd();
|
|
36
|
+
}
|
|
37
|
+
async getState(em) {
|
|
38
|
+
let schema = this.escapedSchema();
|
|
39
|
+
let status = await em.query(`SELECT height, hash, nonce FROM ${schema}.status WHERE id = 0`);
|
|
40
|
+
(0, assert_1.default)(status.length == 1);
|
|
41
|
+
let top = await em.query(`SELECT hash, height FROM ${schema}.hot_block ORDER BY height`);
|
|
42
|
+
return assertStateInvariants({ ...status[0], top });
|
|
43
|
+
}
|
|
24
44
|
transact(info, cb) {
|
|
25
|
-
return
|
|
45
|
+
return this.submit(async (em) => {
|
|
46
|
+
let state = await this.getState(em);
|
|
47
|
+
let { prevHead: prev, nextHead: next } = info;
|
|
48
|
+
(0, assert_1.default)(state.hash === info.prevHead.hash, RACE_MSG);
|
|
49
|
+
(0, assert_1.default)(state.height === prev.height);
|
|
50
|
+
(0, assert_1.default)(prev.height < next.height);
|
|
51
|
+
(0, assert_1.default)(prev.hash != next.hash);
|
|
52
|
+
for (let i = state.top.length - 1; i >= 0; i--) {
|
|
53
|
+
let block = state.top[i];
|
|
54
|
+
await (0, hot_1.rollbackBlock)(this.statusSchema, em, block.height);
|
|
55
|
+
}
|
|
56
|
+
await this.performUpdates(cb, em);
|
|
57
|
+
await this.updateStatus(em, state.nonce, next);
|
|
58
|
+
});
|
|
26
59
|
}
|
|
27
|
-
// @ts-ignore
|
|
28
60
|
transactHot(info, cb) {
|
|
29
|
-
return
|
|
61
|
+
return this.transactHot2(info, async (store, sliceBeg, sliceEnd) => {
|
|
62
|
+
for (let i = sliceBeg; i < sliceEnd; i++) {
|
|
63
|
+
await cb(store, info.newBlocks[i]);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
30
66
|
}
|
|
31
|
-
// @ts-ignore
|
|
32
67
|
transactHot2(info, cb) {
|
|
33
|
-
return
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
(0, assert_1.default)(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
68
|
+
return this.submit(async (em) => {
|
|
69
|
+
let state = await this.getState(em);
|
|
70
|
+
let chain = [state, ...state.top];
|
|
71
|
+
assertChainContinuity(info.baseHead, info.newBlocks);
|
|
72
|
+
(0, assert_1.default)(info.finalizedHead.height <= ((0, util_internal_1.maybeLast)(info.newBlocks) ?? info.baseHead).height);
|
|
73
|
+
(0, assert_1.default)(chain.find((b) => b.hash === info.baseHead.hash), RACE_MSG);
|
|
74
|
+
if (info.newBlocks.length == 0) {
|
|
75
|
+
(0, assert_1.default)((0, util_internal_1.last)(chain).hash === info.baseHead.hash, RACE_MSG);
|
|
76
|
+
}
|
|
77
|
+
(0, assert_1.default)(chain[0].height <= info.finalizedHead.height, RACE_MSG);
|
|
78
|
+
let rollbackPos = info.baseHead.height + 1 - chain[0].height;
|
|
79
|
+
for (let i = chain.length - 1; i >= rollbackPos; i--) {
|
|
80
|
+
await (0, hot_1.rollbackBlock)(this.statusSchema, em, chain[i].height);
|
|
81
|
+
}
|
|
82
|
+
if (info.newBlocks.length) {
|
|
83
|
+
let finalizedEnd = info.finalizedHead.height - info.newBlocks[0].height + 1;
|
|
84
|
+
if (finalizedEnd > 0) {
|
|
85
|
+
await this.performUpdates((store) => cb(store, 0, finalizedEnd), em);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
finalizedEnd = 0;
|
|
89
|
+
}
|
|
90
|
+
for (let i = finalizedEnd; i < info.newBlocks.length; i++) {
|
|
91
|
+
let b = info.newBlocks[i];
|
|
92
|
+
await this.insertHotBlock(em, b);
|
|
93
|
+
await this.performUpdates((store) => cb(store, i, i + 1), em, new hot_1.ChangeTracker(em, this.statusSchema, b.height));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
chain = chain.slice(0, rollbackPos).concat(info.newBlocks);
|
|
97
|
+
let finalizedHeadPos = info.finalizedHead.height - chain[0].height;
|
|
98
|
+
(0, assert_1.default)(chain[finalizedHeadPos].hash === info.finalizedHead.hash);
|
|
99
|
+
await this.deleteHotBlocks(em, info.finalizedHead.height);
|
|
100
|
+
await this.updateStatus(em, state.nonce, info.finalizedHead);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
deleteHotBlocks(em, finalizedHeight) {
|
|
104
|
+
return em.query(`DELETE FROM ${this.escapedSchema()}.hot_block WHERE height <= $1`, [finalizedHeight]);
|
|
105
|
+
}
|
|
106
|
+
insertHotBlock(em, block) {
|
|
107
|
+
return em.query(`INSERT INTO ${this.escapedSchema()}.hot_block (height, hash) VALUES ($1, $2)`, [
|
|
108
|
+
block.height,
|
|
109
|
+
block.hash,
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
async updateStatus(em, nonce, next) {
|
|
113
|
+
let schema = this.escapedSchema();
|
|
114
|
+
let result = await em.query(`UPDATE ${schema}.status SET height = $1, hash = $2, nonce = nonce + 1 WHERE id = 0 AND nonce = $3`, [next.height, next.hash, nonce]);
|
|
115
|
+
let rowsChanged = result[1];
|
|
116
|
+
// Will never happen if isolation level is SERIALIZABLE or REPEATABLE_READ,
|
|
117
|
+
// but occasionally people use multiprocessor setups and READ_COMMITTED.
|
|
118
|
+
assert_1.default.strictEqual(rowsChanged, 1, RACE_MSG);
|
|
119
|
+
}
|
|
120
|
+
async performUpdates(cb, em, changeWriter) {
|
|
121
|
+
let store = new store_1.Store({
|
|
122
|
+
em,
|
|
123
|
+
state: this.getStateManager(),
|
|
124
|
+
logger: this.getLogger(),
|
|
125
|
+
changes: changeWriter,
|
|
126
|
+
batchWriteOperations: this.batchWriteOperations,
|
|
127
|
+
cacheEntities: this.cacheEntities,
|
|
128
|
+
syncEntities: this.syncEntities,
|
|
43
129
|
});
|
|
44
130
|
try {
|
|
45
131
|
await cb(store);
|
|
46
|
-
|
|
132
|
+
if (this.resetOnCommit) {
|
|
133
|
+
await store.flush();
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
await store.sync();
|
|
137
|
+
}
|
|
47
138
|
}
|
|
48
139
|
finally {
|
|
49
|
-
|
|
140
|
+
store['isClosed'] = true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async submit(tx) {
|
|
144
|
+
let retries = 3;
|
|
145
|
+
while (true) {
|
|
146
|
+
try {
|
|
147
|
+
let con = this.con;
|
|
148
|
+
(0, assert_1.default)(con != null, 'not connected');
|
|
149
|
+
return await con.transaction(this.isolationLevel, tx);
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
if (e.code == '40001' && retries) {
|
|
153
|
+
retries -= 1;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
throw e;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
50
159
|
}
|
|
51
160
|
}
|
|
52
|
-
|
|
53
|
-
|
|
161
|
+
escapedSchema() {
|
|
162
|
+
let con = (0, util_internal_1.assertNotNull)(this.con);
|
|
163
|
+
return con.driver.escape(this.statusSchema);
|
|
164
|
+
}
|
|
165
|
+
getLogger() {
|
|
166
|
+
return (0, logger_1.createLogger)('sqd:typeorm-db');
|
|
167
|
+
}
|
|
168
|
+
getStateManager() {
|
|
169
|
+
let connection = (0, util_internal_1.assertNotNull)(this.con);
|
|
170
|
+
let stateManager = connection[StateManagerSymbol];
|
|
171
|
+
if (stateManager == null) {
|
|
172
|
+
stateManager = new stateManager_1.StateManager({
|
|
173
|
+
connection,
|
|
174
|
+
logger: this.getLogger(),
|
|
175
|
+
});
|
|
176
|
+
connection[StateManagerSymbol] = stateManager;
|
|
177
|
+
}
|
|
178
|
+
return stateManager;
|
|
54
179
|
}
|
|
55
180
|
}
|
|
56
|
-
exports.
|
|
181
|
+
exports.TypeormDatabase = TypeormDatabase;
|
|
57
182
|
__decorate([
|
|
58
183
|
util_internal_1.def,
|
|
59
184
|
__metadata("design:type", Function),
|
|
60
185
|
__metadata("design:paramtypes", []),
|
|
61
186
|
__metadata("design:returntype", void 0)
|
|
62
|
-
],
|
|
187
|
+
], TypeormDatabase.prototype, "getLogger", null);
|
|
188
|
+
const RACE_MSG = 'status table was updated by foreign process, make sure no other processor is running';
|
|
189
|
+
function assertStateInvariants(state) {
|
|
190
|
+
let height = state.height;
|
|
191
|
+
// Sanity check. Who knows what driver will return?
|
|
192
|
+
(0, assert_1.default)(Number.isSafeInteger(height));
|
|
193
|
+
assertChainContinuity(state, state.top);
|
|
194
|
+
return state;
|
|
195
|
+
}
|
|
196
|
+
function assertChainContinuity(base, chain) {
|
|
197
|
+
let prev = base;
|
|
198
|
+
for (let b of chain) {
|
|
199
|
+
(0, assert_1.default)(b.height === prev.height + 1, 'blocks must form a continues chain');
|
|
200
|
+
prev = b;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
63
203
|
//# 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":";;;;;;;;;;;;;;;AAAA,
|
|
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
|
|
2
|
-
export {
|
|
1
|
+
export { TypeormDatabase, TypeormDatabase as TypeormDatabaseWithCache, TypeormDatabaseOptions } from './database';
|
|
2
|
+
export { EntityTarget, EntityLiteral, EntityLiteral as Entity, FindManyOptions, FindOneOptions, Store, Store as StoreWithCache, } 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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,eAAe,IAAI,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,YAAY,CAAA;AAC/G,OAAO,EACH,YAAY,EACZ,aAAa,EACb,aAAa,IAAI,MAAM,EACvB,eAAe,EACf,cAAc,EACd,KAAK,EACL,KAAK,IAAI,cAAc,GAC1B,MAAM,SAAS,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -1,22 +1,10 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.StoreWithCache = exports.
|
|
18
|
-
|
|
3
|
+
exports.StoreWithCache = exports.Store = exports.TypeormDatabaseWithCache = exports.TypeormDatabase = void 0;
|
|
4
|
+
var database_1 = require("./database");
|
|
5
|
+
Object.defineProperty(exports, "TypeormDatabase", { enumerable: true, get: function () { return database_1.TypeormDatabase; } });
|
|
6
|
+
Object.defineProperty(exports, "TypeormDatabaseWithCache", { enumerable: true, get: function () { return database_1.TypeormDatabase; } });
|
|
19
7
|
var store_1 = require("./store");
|
|
20
|
-
Object.defineProperty(exports, "
|
|
21
|
-
Object.defineProperty(exports, "StoreWithCache", { enumerable: true, get: function () { return store_1.
|
|
8
|
+
Object.defineProperty(exports, "Store", { enumerable: true, get: function () { return store_1.Store; } });
|
|
9
|
+
Object.defineProperty(exports, "StoreWithCache", { enumerable: true, get: function () { return store_1.Store; } });
|
|
22
10
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAA+G;AAAvG,2GAAA,eAAe,OAAA;AAAE,oHAAA,eAAe,OAA4B;AACpE,iCAQgB;AAFZ,8FAAA,KAAK,OAAA;AACL,uGAAA,KAAK,OAAkB"}
|
package/lib/store.d.ts
CHANGED
|
@@ -1,94 +1,127 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntityManager, FindOptionsOrder, FindOptionsRelations, FindOptionsWhere } from 'typeorm';
|
|
2
|
+
import { EntityTarget } from 'typeorm/common/EntityTarget';
|
|
2
3
|
import { ChangeTracker } from '@subsquid/typeorm-store/lib/hot';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
export
|
|
9
|
-
metadata: EntityMetadata;
|
|
10
|
-
inserts: E[];
|
|
11
|
-
upserts: E[];
|
|
12
|
-
removes: string[];
|
|
13
|
-
extraUpserts: E[];
|
|
14
|
-
};
|
|
15
|
-
export interface GetOptions<Entity = any> {
|
|
4
|
+
import { StateManager } from './utils/stateManager';
|
|
5
|
+
import { Logger } from '@subsquid/logger';
|
|
6
|
+
import { Future } from '@subsquid/util-internal';
|
|
7
|
+
import { EntityLiteral } from './utils/misc';
|
|
8
|
+
export { EntityTarget, EntityLiteral };
|
|
9
|
+
export interface GetOptions<E = any> {
|
|
16
10
|
id: string;
|
|
11
|
+
relations?: FindOptionsRelations<E>;
|
|
12
|
+
cacheEntities?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Defines a special criteria to find specific entity.
|
|
16
|
+
*/
|
|
17
|
+
export interface FindOneOptions<Entity = any> {
|
|
18
|
+
/**
|
|
19
|
+
* Adds a comment with the supplied string in the generated query. This is
|
|
20
|
+
* helpful for debugging purposes, such as finding a specific query in the
|
|
21
|
+
* database server's logs, or for categorization using an APM product.
|
|
22
|
+
*/
|
|
23
|
+
comment?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Simple condition that should be applied to match entities.
|
|
26
|
+
*/
|
|
27
|
+
where?: FindOptionsWhere<Entity>[] | FindOptionsWhere<Entity>;
|
|
28
|
+
/**
|
|
29
|
+
* Indicates what relations of entity should be loaded (simplified left join form).
|
|
30
|
+
*/
|
|
17
31
|
relations?: FindOptionsRelations<Entity>;
|
|
32
|
+
/**
|
|
33
|
+
* Order, in which entities should be ordered.
|
|
34
|
+
*/
|
|
35
|
+
order?: FindOptionsOrder<Entity>;
|
|
36
|
+
cacheEntities?: boolean;
|
|
37
|
+
syncEntities?: boolean;
|
|
18
38
|
}
|
|
19
|
-
export
|
|
20
|
-
private em;
|
|
21
|
-
private commitOrder;
|
|
22
|
-
private updates;
|
|
23
|
-
private defers;
|
|
24
|
-
private cache;
|
|
25
|
-
private logger;
|
|
26
|
-
private currentCommit;
|
|
27
|
-
private currentLoad;
|
|
28
|
-
constructor(em: () => EntityManager, opts: {
|
|
29
|
-
changeTracker?: ChangeTracker;
|
|
30
|
-
commitOrder: EntityMetadata[];
|
|
31
|
-
});
|
|
32
|
-
insert<E extends EntityType>(entity: E): Promise<void>;
|
|
33
|
-
insert<E extends EntityType>(entities: E[]): Promise<void>;
|
|
34
|
-
upsert<E extends EntityType>(entity: E): Promise<void>;
|
|
35
|
-
upsert<E extends EntityType>(entities: E[]): Promise<void>;
|
|
36
|
-
save<E extends EntityType>(entity: E): Promise<void>;
|
|
37
|
-
save<E extends EntityType>(entities: E[]): Promise<void>;
|
|
38
|
-
remove<E extends EntityType>(entity: E): Promise<void>;
|
|
39
|
-
remove<E extends EntityType>(entities: E[]): Promise<void>;
|
|
40
|
-
remove<E extends EntityType>(entityClass: EntityTarget<E>, id: string | string[]): Promise<void>;
|
|
41
|
-
count<E extends EntityType>(entityClass: EntityTarget<E>, options?: FindManyOptions<E>): Promise<number>;
|
|
42
|
-
countBy<E extends EntityType>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<number>;
|
|
43
|
-
find<E extends EntityType>(entityClass: EntityTarget<E>, options: FindManyOptions<E>): Promise<E[]>;
|
|
44
|
-
findBy<E extends EntityType>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E[]>;
|
|
45
|
-
findOne<E extends EntityType>(entityClass: EntityTarget<E>, options: FindOneOptions<E>): Promise<E | undefined>;
|
|
46
|
-
findOneOrFail<E extends EntityType>(entityClass: EntityTarget<E>, options: FindOneOptions<E>): Promise<E>;
|
|
47
|
-
findOneBy<E extends EntityType>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E | undefined>;
|
|
48
|
-
findOneByOrFail<E extends EntityType>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E>;
|
|
49
|
-
get<E extends EntityType>(entityClass: EntityTarget<E>, id: string): Promise<E | undefined>;
|
|
50
|
-
get<E extends EntityType>(entityClass: EntityTarget<E>, options: GetOptions<E>): Promise<E | undefined>;
|
|
51
|
-
getOrFail<E extends EntityType>(entityClass: EntityTarget<E>, id: string): Promise<E>;
|
|
52
|
-
getOrFail<E extends EntityType>(entityClass: EntityTarget<E>, options: GetOptions<E>): Promise<E>;
|
|
53
|
-
getOrInsert<E extends EntityType>(entityClass: EntityTarget<E>, id: string, create: (id: string) => E | Promise<E>): Promise<E>;
|
|
54
|
-
getOrInsert<E extends EntityType>(entityClass: EntityTarget<E>, options: GetOptions<E>, create: (id: string) => E | Promise<E>): Promise<E>;
|
|
39
|
+
export interface FindManyOptions<Entity = any> extends FindOneOptions<Entity> {
|
|
55
40
|
/**
|
|
56
|
-
*
|
|
41
|
+
* Offset (paginated) where from entities should be taken.
|
|
57
42
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
43
|
+
skip?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Limit (paginated) - max number of entities should be taken.
|
|
46
|
+
*/
|
|
47
|
+
take?: number;
|
|
48
|
+
cacheEntities?: boolean;
|
|
49
|
+
syncEntities?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface StoreOptions {
|
|
52
|
+
em: EntityManager;
|
|
53
|
+
state: StateManager;
|
|
54
|
+
changes?: ChangeTracker;
|
|
55
|
+
logger?: Logger;
|
|
56
|
+
batchWriteOperations: boolean;
|
|
57
|
+
cacheEntities: boolean;
|
|
58
|
+
syncEntities: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Restricted version of TypeORM entity manager for squid data handlers.
|
|
62
|
+
*/
|
|
63
|
+
export declare class Store {
|
|
64
|
+
protected em: EntityManager;
|
|
65
|
+
protected state: StateManager;
|
|
66
|
+
protected changes?: ChangeTracker;
|
|
67
|
+
protected logger?: Logger;
|
|
68
|
+
protected batchWriteOperations: boolean;
|
|
69
|
+
protected cacheEntities: boolean;
|
|
70
|
+
protected syncEntities: boolean;
|
|
71
|
+
protected pendingCommit?: Future<void>;
|
|
72
|
+
protected isClosed: boolean;
|
|
73
|
+
constructor({ em, changes, logger, state, ...opts }: StoreOptions);
|
|
74
|
+
get _em(): EntityManager;
|
|
75
|
+
get _state(): StateManager;
|
|
76
|
+
/**
|
|
77
|
+
* Alias for {@link Store.upsert}
|
|
78
|
+
*/
|
|
79
|
+
save<E extends EntityLiteral>(e: E | E[]): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Upserts a given entity or entities into the database.
|
|
82
|
+
*
|
|
83
|
+
* It always executes a primitive operation without cascades, relations, etc.
|
|
84
|
+
*/
|
|
85
|
+
upsert<E extends EntityLiteral>(e: E | E[]): Promise<void>;
|
|
76
86
|
private getFkSignature;
|
|
87
|
+
private _upsert;
|
|
77
88
|
private upsertMany;
|
|
78
|
-
}
|
|
79
|
-
export declare class DeferredEntity<E extends EntityType> {
|
|
80
|
-
private opts;
|
|
81
|
-
constructor(opts: {
|
|
82
|
-
get: () => Promise<E | undefined>;
|
|
83
|
-
getOrFail: () => Promise<E>;
|
|
84
|
-
getOrInsert: (create: (id: string) => E | Promise<E>) => Promise<E>;
|
|
85
|
-
});
|
|
86
|
-
get(): Promise<E | undefined>;
|
|
87
|
-
getOrFail(): Promise<E>;
|
|
88
|
-
getOrInsert(create: (id: string) => E | Promise<E>): Promise<E>;
|
|
89
89
|
/**
|
|
90
|
-
*
|
|
90
|
+
* Inserts a given entity or entities into the database.
|
|
91
|
+
* Does not check if the entity(s) exist in the database and will fail if a duplicate is inserted.
|
|
92
|
+
*
|
|
93
|
+
* Executes a primitive INSERT operation without cascades, relations, etc.
|
|
94
|
+
*/
|
|
95
|
+
insert<E extends EntityLiteral>(e: E | E[]): Promise<void>;
|
|
96
|
+
private _insert;
|
|
97
|
+
private insertMany;
|
|
98
|
+
/**
|
|
99
|
+
* Deletes a given entity or entities from the database.
|
|
100
|
+
*
|
|
101
|
+
* Executes a primitive DELETE query without cascades, relations, etc.
|
|
91
102
|
*/
|
|
92
|
-
|
|
103
|
+
delete<E extends EntityLiteral>(e: E | E[]): Promise<void>;
|
|
104
|
+
delete<E extends EntityLiteral>(target: EntityTarget<E>, id: string | string[]): Promise<void>;
|
|
105
|
+
private _delete;
|
|
106
|
+
count<E extends EntityLiteral>(target: EntityTarget<E>, options?: FindManyOptions<E>): Promise<number>;
|
|
107
|
+
countBy<E extends EntityLiteral>(target: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<number>;
|
|
108
|
+
find<E extends EntityLiteral>(target: EntityTarget<E>, options: FindManyOptions<E>): Promise<E[]>;
|
|
109
|
+
findBy<E extends EntityLiteral>(target: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E[]>;
|
|
110
|
+
findOne<E extends EntityLiteral>(target: EntityTarget<E>, options: FindOneOptions<E>): Promise<E | undefined>;
|
|
111
|
+
findOneBy<E extends EntityLiteral>(target: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E | undefined>;
|
|
112
|
+
findOneOrFail<E extends EntityLiteral>(target: EntityTarget<E>, options: FindOneOptions<E>): Promise<E>;
|
|
113
|
+
findOneByOrFail<E extends EntityLiteral>(target: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E>;
|
|
114
|
+
get<E extends EntityLiteral>(target: EntityTarget<E>, id: string): Promise<E | undefined>;
|
|
115
|
+
get<E extends EntityLiteral>(target: EntityTarget<E>, options: GetOptions<E>): Promise<E | undefined>;
|
|
116
|
+
getOrFail<E extends EntityLiteral>(target: EntityTarget<E>, id: string): Promise<E>;
|
|
117
|
+
getOrFail<E extends EntityLiteral>(target: EntityTarget<E>, options: GetOptions<E>): Promise<E>;
|
|
118
|
+
reset(): void;
|
|
119
|
+
sync(): Promise<void>;
|
|
120
|
+
flush(): Promise<void>;
|
|
121
|
+
private performRead;
|
|
122
|
+
private performWrite;
|
|
123
|
+
private assertNotClosed;
|
|
124
|
+
private cacheEntity;
|
|
125
|
+
private getEntityMetadata;
|
|
93
126
|
}
|
|
94
127
|
//# sourceMappingURL=store.d.ts.map
|
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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"}
|