@render-foundation/utils 0.0.200 → 0.0.230
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/cjs/assertSecrets.js +1 -2
- package/lib/cjs/assertSecrets.js.map +1 -1
- package/lib/cjs/backfiller.js +16 -16
- package/lib/cjs/backfiller.js.map +1 -1
- package/lib/cjs/burn/burnAnalysis.js +101 -0
- package/lib/cjs/burn/burnAnalysis.js.map +1 -0
- package/lib/cjs/burn/burnCalculations.js +140 -0
- package/lib/cjs/burn/burnCalculations.js.map +1 -0
- package/lib/cjs/client/onchain.js +3 -3
- package/lib/cjs/client/onchain.js.map +1 -1
- package/lib/cjs/client/pg/base.js +7 -7
- package/lib/cjs/client/pg/base.js.map +1 -1
- package/lib/cjs/client/pg/v1.js +31 -31
- package/lib/cjs/client/pg/v1.js.map +1 -1
- package/lib/cjs/client/pg/v2Client.js +244 -200
- package/lib/cjs/client/pg/v2Client.js.map +1 -1
- package/lib/cjs/client/pg/viewClient.js +6 -6
- package/lib/cjs/client/pg/viewClient.js.map +1 -1
- package/lib/cjs/client/price.js +3 -3
- package/lib/cjs/client/price.js.map +1 -1
- package/lib/cjs/client/render.js +10 -10
- package/lib/cjs/client/render.js.map +1 -1
- package/lib/cjs/client/squads.js +20 -10
- package/lib/cjs/client/squads.js.map +1 -1
- package/lib/cjs/client/trade.js +15 -12
- package/lib/cjs/client/trade.js.map +1 -1
- package/lib/cjs/client/wormhole.js +19 -9
- package/lib/cjs/client/wormhole.js.map +1 -1
- package/lib/cjs/errorReporter.js +1 -1
- package/lib/cjs/errorReporter.js.map +1 -1
- package/lib/cjs/index.js +19 -12
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/src/assertSecrets.js.map +1 -1
- package/lib/esm/src/backfiller.js.map +1 -1
- package/lib/esm/src/burn/burnAnalysis.js +90 -0
- package/lib/esm/src/burn/burnAnalysis.js.map +1 -0
- package/lib/esm/src/burn/burnCalculations.js +124 -0
- package/lib/esm/src/burn/burnCalculations.js.map +1 -0
- package/lib/esm/src/client/onchain.js.map +1 -1
- package/lib/esm/src/client/pg/base.js.map +1 -1
- package/lib/esm/src/client/pg/v1.js.map +1 -1
- package/lib/esm/src/client/pg/v2Client.js +133 -93
- package/lib/esm/src/client/pg/v2Client.js.map +1 -1
- package/lib/esm/src/client/pg/viewClient.js.map +1 -1
- package/lib/esm/src/client/price.js.map +1 -1
- package/lib/esm/src/client/render.js.map +1 -1
- package/lib/esm/src/client/squads.js.map +1 -1
- package/lib/esm/src/client/trade.js +2 -2
- package/lib/esm/src/client/trade.js.map +1 -1
- package/lib/esm/src/client/wormhole.js.map +1 -1
- package/lib/esm/src/errorReporter.js.map +1 -1
- package/lib/esm/src/index.js +2 -5
- package/lib/esm/src/index.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/backfiller.d.ts.map +1 -1
- package/lib/types/src/burn/burnAnalysis.d.ts +51 -0
- package/lib/types/src/burn/burnAnalysis.d.ts.map +1 -0
- package/lib/types/src/burn/burnCalculations.d.ts +52 -0
- package/lib/types/src/burn/burnCalculations.d.ts.map +1 -0
- package/lib/types/src/client/onchain.d.ts +2 -1
- package/lib/types/src/client/onchain.d.ts.map +1 -1
- package/lib/types/src/client/pg/base.d.ts.map +1 -1
- package/lib/types/src/client/pg/v1.d.ts.map +1 -1
- package/lib/types/src/client/pg/v2Client.d.ts +23 -27
- package/lib/types/src/client/pg/v2Client.d.ts.map +1 -1
- package/lib/types/src/client/pg/viewClient.d.ts.map +1 -1
- package/lib/types/src/client/render.d.ts.map +1 -1
- package/lib/types/src/client/squads.d.ts.map +1 -1
- package/lib/types/src/client/trade.d.ts.map +1 -1
- package/lib/types/src/client/wormhole.d.ts +1 -1
- package/lib/types/src/client/wormhole.d.ts.map +1 -1
- package/lib/types/src/dbTypesV2.d.ts +13 -16
- package/lib/types/src/dbTypesV2.d.ts.map +1 -1
- package/lib/types/src/errorReporter.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +2 -2
- package/lib/types/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/lib/cjs/client/dispersed.js +0 -123
- package/lib/cjs/client/dispersed.js.map +0 -1
- package/lib/esm/src/client/dispersed.js +0 -108
- package/lib/esm/src/client/dispersed.js.map +0 -1
- package/lib/types/src/client/dispersed.d.ts +0 -91
- package/lib/types/src/client/dispersed.d.ts.map +0 -1
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
36
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
37
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -35,7 +45,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
45
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
46
|
};
|
|
37
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.pgClient = exports.batchFinishedAtMedian = exports.
|
|
48
|
+
exports.pgClient = exports.batchFinishedAtMedian = exports.GRANT_BURN_TABLE = exports.GRANT_BURN_ID_TABLE = exports.USER_GRANT_SPEND_TABLE = exports.CURRENT_USER_GRANT_SPEND_TABLE = exports.POLYGON_UPGRADE_TABLE = exports.ENTITY_EPOCH_INFO_TABLE = exports.TX_BURN_ADJUSTMENT_TABLE = exports.JOB_BURN_ADJUSTMENT_TABLE = exports.NETWORK_REVENUE_TABLE = exports.BRIDGE_TRANSFER_TABLE = exports.BURN_TABLE = exports.JOB_TABLE = exports.JOB_ID_TABLE = exports.LIABILITY_TABLE = exports.SOL_TRANSFER_TABLE = exports.ENTITY_TABLE = exports.MANUAL_BURN_TABLE = exports.EPOCH_TABLE = exports.SOL_TX_TABLE = void 0;
|
|
39
49
|
const kysely_1 = require("kysely");
|
|
40
50
|
const logger_1 = require("../../logger");
|
|
41
51
|
const pg_1 = require("pg");
|
|
@@ -52,14 +62,14 @@ exports.JOB_TABLE = 'job';
|
|
|
52
62
|
exports.BURN_TABLE = 'burn';
|
|
53
63
|
exports.BRIDGE_TRANSFER_TABLE = 'bridge_transfer';
|
|
54
64
|
exports.NETWORK_REVENUE_TABLE = 'network_revenue';
|
|
55
|
-
exports.
|
|
65
|
+
exports.JOB_BURN_ADJUSTMENT_TABLE = 'job_burn_adjustment';
|
|
66
|
+
exports.TX_BURN_ADJUSTMENT_TABLE = 'tx_burn_adjustment';
|
|
56
67
|
exports.ENTITY_EPOCH_INFO_TABLE = 'entity_epoch_info';
|
|
57
68
|
exports.POLYGON_UPGRADE_TABLE = 'polygon_upgrade';
|
|
58
69
|
exports.CURRENT_USER_GRANT_SPEND_TABLE = 'current_user_grant_spend';
|
|
59
70
|
exports.USER_GRANT_SPEND_TABLE = 'user_grant_spend';
|
|
60
71
|
exports.GRANT_BURN_ID_TABLE = 'grant_burn_id';
|
|
61
72
|
exports.GRANT_BURN_TABLE = 'grant_burn';
|
|
62
|
-
exports.DISPERSED_SETTLEMENT_TABLE = 'dispersed_settlement';
|
|
63
73
|
BigInt.prototype.toJSON = function () {
|
|
64
74
|
return this.toString();
|
|
65
75
|
};
|
|
@@ -93,7 +103,7 @@ const pgClient = (config) => {
|
|
|
93
103
|
const db = new kysely_1.Kysely({
|
|
94
104
|
dialect,
|
|
95
105
|
});
|
|
96
|
-
const getOrInsertEntity = (
|
|
106
|
+
const getOrInsertEntity = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
97
107
|
const res = (yield db
|
|
98
108
|
.selectFrom(exports.ENTITY_TABLE)
|
|
99
109
|
.select('id')
|
|
@@ -114,7 +124,7 @@ const pgClient = (config) => {
|
|
|
114
124
|
log.debug(`inserted entity ${id}`);
|
|
115
125
|
return id;
|
|
116
126
|
});
|
|
117
|
-
const getOrInsertTx = (
|
|
127
|
+
const getOrInsertTx = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
118
128
|
const res = yield db
|
|
119
129
|
.selectFrom(exports.SOL_TX_TABLE)
|
|
120
130
|
.select('id')
|
|
@@ -136,7 +146,7 @@ const pgClient = (config) => {
|
|
|
136
146
|
log.debug(`inserted tx ${id}`);
|
|
137
147
|
return id;
|
|
138
148
|
});
|
|
139
|
-
const getOrInsertEpoch = (
|
|
149
|
+
const getOrInsertEpoch = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
140
150
|
const res = yield db
|
|
141
151
|
.selectFrom(exports.EPOCH_TABLE)
|
|
142
152
|
.select('id')
|
|
@@ -164,7 +174,7 @@ const pgClient = (config) => {
|
|
|
164
174
|
log.debug(`inserted epoch ${id}`);
|
|
165
175
|
return id;
|
|
166
176
|
});
|
|
167
|
-
const getCurrentUserGrantSpend = (
|
|
177
|
+
const getCurrentUserGrantSpend = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
168
178
|
var _a;
|
|
169
179
|
const res = yield db
|
|
170
180
|
.selectFrom(exports.CURRENT_USER_GRANT_SPEND_TABLE)
|
|
@@ -194,7 +204,7 @@ const pgClient = (config) => {
|
|
|
194
204
|
.executeTakeFirst());
|
|
195
205
|
log.info(`set ${res.numUpdatedRows} rows. channel: ${p.channel}, ui: ${p.uiEpochId} -> totalRndr ${totalRndr} `);
|
|
196
206
|
});
|
|
197
|
-
const fetchJobs1 = (
|
|
207
|
+
const fetchJobs1 = (db_1, f_1, ...args_1) => __awaiter(void 0, [db_1, f_1, ...args_1], void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
198
208
|
let q = db.selectFrom('job').selectAll();
|
|
199
209
|
//.where('job.burn_id', 'is not', null)
|
|
200
210
|
if (f.completedAtAfter) {
|
|
@@ -224,7 +234,7 @@ const pgClient = (config) => {
|
|
|
224
234
|
insertedAt: r.inserted_at,
|
|
225
235
|
}));
|
|
226
236
|
});
|
|
227
|
-
const fetchJobs2 = (
|
|
237
|
+
const fetchJobs2 = (db_1, f_1, ...args_1) => __awaiter(void 0, [db_1, f_1, ...args_1], void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
228
238
|
let q = db.selectFrom('job').selectAll();
|
|
229
239
|
//.where('job.burn_id', 'is not', null)
|
|
230
240
|
if (f.completedAtAfter) {
|
|
@@ -258,7 +268,7 @@ const pgClient = (config) => {
|
|
|
258
268
|
});
|
|
259
269
|
});
|
|
260
270
|
});
|
|
261
|
-
const createBridgeTransfers = (
|
|
271
|
+
const createBridgeTransfers = (db_1, bts_1, ...args_1) => __awaiter(void 0, [db_1, bts_1, ...args_1], void 0, function* (db, bts, log = logger_1.consoleLogger) {
|
|
262
272
|
const sequenceNumbers = [];
|
|
263
273
|
const dbEpochIds = [];
|
|
264
274
|
for (const bt of bts) {
|
|
@@ -302,7 +312,7 @@ const pgClient = (config) => {
|
|
|
302
312
|
}
|
|
303
313
|
return { sequenceNumbers: sequenceNumbers };
|
|
304
314
|
});
|
|
305
|
-
const createPayments = (
|
|
315
|
+
const createPayments = (db_1, ps_1, ...args_1) => __awaiter(void 0, [db_1, ps_1, ...args_1], void 0, function* (db, ps, log = logger_1.consoleLogger) {
|
|
306
316
|
const ids = [];
|
|
307
317
|
const epochDbIds = [];
|
|
308
318
|
for (const p of ps) {
|
|
@@ -356,7 +366,11 @@ const pgClient = (config) => {
|
|
|
356
366
|
sig: solTx,
|
|
357
367
|
executedAt,
|
|
358
368
|
}, log);
|
|
359
|
-
|
|
369
|
+
// sol_transfer1 already has UNIQUE(sol_tx_id, from_entity_id,
|
|
370
|
+
// to_entity_id, symbol). Without ON CONFLICT a retry of the record step
|
|
371
|
+
// throws a unique violation and wedges the BullMQ job; make it an
|
|
372
|
+
// idempotent no-op and re-fetch the existing id instead.
|
|
373
|
+
let transferRow = yield db
|
|
360
374
|
.insertInto(exports.SOL_TRANSFER_TABLE)
|
|
361
375
|
.values({
|
|
362
376
|
id: dbId,
|
|
@@ -367,9 +381,23 @@ const pgClient = (config) => {
|
|
|
367
381
|
symbol,
|
|
368
382
|
amount_payed: amountPayed,
|
|
369
383
|
})
|
|
384
|
+
.onConflict((oc) => oc
|
|
385
|
+
.columns(['sol_tx_id', 'from_entity_id', 'to_entity_id', 'symbol'])
|
|
386
|
+
.doNothing())
|
|
370
387
|
.returning((eb) => ['id as id'])
|
|
371
|
-
.
|
|
372
|
-
|
|
388
|
+
.executeTakeFirst();
|
|
389
|
+
if (!transferRow) {
|
|
390
|
+
log.warn(`sol_transfer for sol_tx_id ${solTxId} ${fromEntityId}->${toEntityId} ${symbol} already exists; reusing existing id (idempotent retry)`);
|
|
391
|
+
transferRow = yield db
|
|
392
|
+
.selectFrom(exports.SOL_TRANSFER_TABLE)
|
|
393
|
+
.select((eb) => ['id as id'])
|
|
394
|
+
.where('sol_tx_id', '=', solTxId)
|
|
395
|
+
.where('from_entity_id', '=', fromEntityId)
|
|
396
|
+
.where('to_entity_id', '=', toEntityId)
|
|
397
|
+
.where('symbol', '=', symbol)
|
|
398
|
+
.executeTakeFirstOrThrow();
|
|
399
|
+
}
|
|
400
|
+
transferId = BigInt(transferRow.id);
|
|
373
401
|
}
|
|
374
402
|
ids.push({ transferId, liabilityId });
|
|
375
403
|
}
|
|
@@ -381,18 +409,18 @@ const pgClient = (config) => {
|
|
|
381
409
|
rollback: () => { },
|
|
382
410
|
trx: db,
|
|
383
411
|
},
|
|
384
|
-
startTransaction(
|
|
385
|
-
return __awaiter(this,
|
|
412
|
+
startTransaction() {
|
|
413
|
+
return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
|
|
386
414
|
return (0, base_2.begin)(db, log);
|
|
387
415
|
});
|
|
388
416
|
},
|
|
389
|
-
createPayments(
|
|
390
|
-
return __awaiter(this,
|
|
417
|
+
createPayments(db_1, ps_1) {
|
|
418
|
+
return __awaiter(this, arguments, void 0, function* (db, ps, log = logger_1.consoleLogger) {
|
|
391
419
|
return createPayments(db.trx, ps, log);
|
|
392
420
|
});
|
|
393
421
|
},
|
|
394
|
-
fetchTransfers(
|
|
395
|
-
return __awaiter(this,
|
|
422
|
+
fetchTransfers(db_1, f_1) {
|
|
423
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
396
424
|
let lastId = undefined;
|
|
397
425
|
if (f.cursor) {
|
|
398
426
|
lastId = atob(f.cursor);
|
|
@@ -448,8 +476,8 @@ const pgClient = (config) => {
|
|
|
448
476
|
};
|
|
449
477
|
});
|
|
450
478
|
},
|
|
451
|
-
fetchEpochs(
|
|
452
|
-
return __awaiter(this,
|
|
479
|
+
fetchEpochs(db_1, f_1) {
|
|
480
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
453
481
|
let q = db.trx.selectFrom(exports.EPOCH_TABLE).selectAll();
|
|
454
482
|
if (f.channels) {
|
|
455
483
|
q = q.where('channel', 'in', f.channels);
|
|
@@ -472,9 +500,9 @@ const pgClient = (config) => {
|
|
|
472
500
|
}));
|
|
473
501
|
});
|
|
474
502
|
},
|
|
475
|
-
fetchLiabilities(
|
|
476
|
-
|
|
477
|
-
|
|
503
|
+
fetchLiabilities(db_1, f_1) {
|
|
504
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
505
|
+
var _a;
|
|
478
506
|
let offset = 0;
|
|
479
507
|
let orderBy = (_a = f.orderBy) !== null && _a !== void 0 ? _a : 'epoch.ui,liability.id';
|
|
480
508
|
if (f.cursor) {
|
|
@@ -541,8 +569,8 @@ const pgClient = (config) => {
|
|
|
541
569
|
};
|
|
542
570
|
});
|
|
543
571
|
},
|
|
544
|
-
getLiabilitiesAndTransfers(
|
|
545
|
-
return __awaiter(this,
|
|
572
|
+
getLiabilitiesAndTransfers(f_1) {
|
|
573
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
546
574
|
let lq = db
|
|
547
575
|
.selectFrom(exports.LIABILITY_TABLE)
|
|
548
576
|
.selectAll()
|
|
@@ -603,9 +631,9 @@ const pgClient = (config) => {
|
|
|
603
631
|
return { transfers, liabilities, epochs: Object.values(epochs) };
|
|
604
632
|
});
|
|
605
633
|
},
|
|
606
|
-
getOutstanding(
|
|
607
|
-
|
|
608
|
-
|
|
634
|
+
getOutstanding(f_1) {
|
|
635
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
636
|
+
var _a, _b, _c, _d, _e;
|
|
609
637
|
log.info(`getting outstanding balances for ${(_a = f.channels) !== null && _a !== void 0 ? _a : '(no channels specified)'} epoch: ${(_b = f.startEpochId.id) !== null && _b !== void 0 ? _b : '(no epoch specified)'}`);
|
|
610
638
|
let epochUi;
|
|
611
639
|
let epochEndTime;
|
|
@@ -714,9 +742,9 @@ const pgClient = (config) => {
|
|
|
714
742
|
return out;
|
|
715
743
|
});
|
|
716
744
|
},
|
|
717
|
-
fetchNodeOperatorEpoch(
|
|
718
|
-
|
|
719
|
-
|
|
745
|
+
fetchNodeOperatorEpoch(epochId_1) {
|
|
746
|
+
return __awaiter(this, arguments, void 0, function* (epochId, log = logger_1.consoleLogger) {
|
|
747
|
+
var _a;
|
|
720
748
|
const q = db
|
|
721
749
|
.selectFrom(exports.JOB_ID_TABLE)
|
|
722
750
|
.innerJoin(exports.EPOCH_TABLE, 'epoch.id', 'job_id.epoch_id')
|
|
@@ -766,14 +794,14 @@ const pgClient = (config) => {
|
|
|
766
794
|
};
|
|
767
795
|
});
|
|
768
796
|
},
|
|
769
|
-
insertEpoch(
|
|
770
|
-
return __awaiter(this,
|
|
797
|
+
insertEpoch(db_1, epoch_1) {
|
|
798
|
+
return __awaiter(this, arguments, void 0, function* (db, epoch, log = logger_1.consoleLogger) {
|
|
771
799
|
yield getOrInsertEpoch(db.trx, Object.assign(Object.assign({}, epoch), { uiEpochId: epoch.ui }), log);
|
|
772
800
|
});
|
|
773
801
|
},
|
|
774
|
-
getEpoch(
|
|
775
|
-
|
|
776
|
-
|
|
802
|
+
getEpoch(f_1) {
|
|
803
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
804
|
+
var _a;
|
|
777
805
|
const now = new Date(Date.now());
|
|
778
806
|
try {
|
|
779
807
|
let q = db
|
|
@@ -811,9 +839,9 @@ const pgClient = (config) => {
|
|
|
811
839
|
}
|
|
812
840
|
});
|
|
813
841
|
},
|
|
814
|
-
getLatestNodeOperatorEpoch(
|
|
815
|
-
|
|
816
|
-
|
|
842
|
+
getLatestNodeOperatorEpoch(f_1) {
|
|
843
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
844
|
+
var _a;
|
|
817
845
|
const now = new Date(Date.now());
|
|
818
846
|
try {
|
|
819
847
|
let q = db
|
|
@@ -853,8 +881,8 @@ const pgClient = (config) => {
|
|
|
853
881
|
}
|
|
854
882
|
});
|
|
855
883
|
},
|
|
856
|
-
saveNodeOperatorEpoch(
|
|
857
|
-
return __awaiter(this,
|
|
884
|
+
saveNodeOperatorEpoch(epochId_1, liabilities_1, jobIds_1, totalRndr_1) {
|
|
885
|
+
return __awaiter(this, arguments, void 0, function* (epochId, liabilities, jobIds, totalRndr, log = logger_1.consoleLogger) {
|
|
858
886
|
yield db
|
|
859
887
|
.transaction()
|
|
860
888
|
.setIsolationLevel('repeatable read')
|
|
@@ -890,8 +918,8 @@ const pgClient = (config) => {
|
|
|
890
918
|
return;
|
|
891
919
|
});
|
|
892
920
|
},
|
|
893
|
-
produceBurnedJobs(
|
|
894
|
-
return __awaiter(this,
|
|
921
|
+
produceBurnedJobs(jobs_1) {
|
|
922
|
+
return __awaiter(this, arguments, void 0, function* (jobs, log = logger_1.consoleLogger) {
|
|
895
923
|
yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
|
|
896
924
|
var _a;
|
|
897
925
|
let num = BigInt(0);
|
|
@@ -914,9 +942,9 @@ const pgClient = (config) => {
|
|
|
914
942
|
}));
|
|
915
943
|
});
|
|
916
944
|
},
|
|
917
|
-
markJobsBurntWithGrant(
|
|
918
|
-
|
|
919
|
-
|
|
945
|
+
markJobsBurntWithGrant(db_1, p_1) {
|
|
946
|
+
return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
947
|
+
var _a;
|
|
920
948
|
const solTxId = yield getOrInsertTx(db.trx, { sig: p.tx.sig, executedAt: p.tx.executedAt }, log);
|
|
921
949
|
const { id } = yield db.trx
|
|
922
950
|
.insertInto(exports.GRANT_BURN_TABLE)
|
|
@@ -947,9 +975,9 @@ const pgClient = (config) => {
|
|
|
947
975
|
return;
|
|
948
976
|
});
|
|
949
977
|
},
|
|
950
|
-
insertGrantSpend(
|
|
951
|
-
|
|
952
|
-
|
|
978
|
+
insertGrantSpend(db_1, p_1) {
|
|
979
|
+
return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
980
|
+
var _a, _b, _c;
|
|
953
981
|
const existing = yield getCurrentUserGrantSpend(db.trx, { userId: p.userId }, log);
|
|
954
982
|
const diff = {
|
|
955
983
|
render_spent: ((_a = existing === null || existing === void 0 ? void 0 : existing.renderSpent) !== null && _a !== void 0 ? _a : BigInt(0)) + p.renderSpentDelta,
|
|
@@ -1014,9 +1042,9 @@ const pgClient = (config) => {
|
|
|
1014
1042
|
}
|
|
1015
1043
|
});
|
|
1016
1044
|
},
|
|
1017
|
-
markJobsBurnt(
|
|
1018
|
-
|
|
1019
|
-
|
|
1045
|
+
markJobsBurnt(trx_1, p_1) {
|
|
1046
|
+
return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
|
|
1047
|
+
var _a, _b;
|
|
1020
1048
|
if (!p.buyBurn && !p.grantBurn) {
|
|
1021
1049
|
throw new Error('no buyBurn or grantBurn');
|
|
1022
1050
|
}
|
|
@@ -1024,7 +1052,7 @@ const pgClient = (config) => {
|
|
|
1024
1052
|
let buyBurnId;
|
|
1025
1053
|
let grantBurnId;
|
|
1026
1054
|
if (p.buyBurn) {
|
|
1027
|
-
const { burned, usdcSpent, eurToUsdc, renderToUsdc, quoteAmt, tags,
|
|
1055
|
+
const { burned, usdcSpent, eurToUsdc, renderToUsdc, quoteAmt, tags, jobBurnAdjustmentId, txBurnAdjustmentId, toBurn, fromEscrowCredit, } = p.buyBurn;
|
|
1028
1056
|
let pricedAt = p.buyBurn.pricedAt;
|
|
1029
1057
|
if (!pricedAt) {
|
|
1030
1058
|
const jobs = yield fetchJobs1(trx.trx, { ids: p.jobs.map((j) => String(j.id)) }, log);
|
|
@@ -1043,17 +1071,30 @@ const pgClient = (config) => {
|
|
|
1043
1071
|
quote_amt: quoteAmt,
|
|
1044
1072
|
burned: burned,
|
|
1045
1073
|
tags: tags.join(','),
|
|
1046
|
-
|
|
1074
|
+
job_burn_adjustment_id: jobBurnAdjustmentId,
|
|
1075
|
+
tx_burn_adjustment_id: txBurnAdjustmentId,
|
|
1047
1076
|
to_burn: toBurn,
|
|
1077
|
+
from_escrow_credit: fromEscrowCredit !== null && fromEscrowCredit !== void 0 ? fromEscrowCredit : 0,
|
|
1048
1078
|
};
|
|
1049
1079
|
log.debug(`inserting burn ${JSON.stringify(v)}`);
|
|
1050
|
-
|
|
1080
|
+
// Idempotent on sol_tx_id (uniq_burn_sol_tx_id, migration 27): a retry of
|
|
1081
|
+
// the record step for the same on-chain burn is a safe no-op. On conflict
|
|
1082
|
+
// executeTakeFirst() returns undefined, so re-fetch the existing id.
|
|
1083
|
+
let burnRow = yield trx.trx
|
|
1051
1084
|
.insertInto(exports.BURN_TABLE)
|
|
1052
1085
|
.values(v)
|
|
1053
|
-
|
|
1086
|
+
.onConflict((oc) => oc.column('sol_tx_id').doNothing())
|
|
1054
1087
|
.returning((eb) => ['id as id'])
|
|
1055
|
-
.
|
|
1056
|
-
|
|
1088
|
+
.executeTakeFirst();
|
|
1089
|
+
if (!burnRow) {
|
|
1090
|
+
log.warn(`burn for sol_tx_id ${solTxId} already exists; reusing existing id (idempotent retry)`);
|
|
1091
|
+
burnRow = yield trx.trx
|
|
1092
|
+
.selectFrom(exports.BURN_TABLE)
|
|
1093
|
+
.select((eb) => ['id as id'])
|
|
1094
|
+
.where('sol_tx_id', '=', solTxId)
|
|
1095
|
+
.executeTakeFirstOrThrow();
|
|
1096
|
+
}
|
|
1097
|
+
buyBurnId = Number(burnRow.id);
|
|
1057
1098
|
}
|
|
1058
1099
|
if (p.grantBurn) {
|
|
1059
1100
|
const { burned, tags } = p.grantBurn;
|
|
@@ -1063,12 +1104,22 @@ const pgClient = (config) => {
|
|
|
1063
1104
|
tags: tags === null || tags === void 0 ? void 0 : tags.join(','),
|
|
1064
1105
|
};
|
|
1065
1106
|
log.debug(`inserting grant burn ${JSON.stringify(v)}`);
|
|
1066
|
-
|
|
1107
|
+
// Idempotent on sol_tx_id (uniq_grant_burn_sol_tx_id, migration 27).
|
|
1108
|
+
let grantBurnRow = yield trx.trx
|
|
1067
1109
|
.insertInto(exports.GRANT_BURN_TABLE)
|
|
1068
1110
|
.values(v)
|
|
1111
|
+
.onConflict((oc) => oc.column('sol_tx_id').doNothing())
|
|
1069
1112
|
.returning((eb) => ['id as id'])
|
|
1070
|
-
.
|
|
1071
|
-
|
|
1113
|
+
.executeTakeFirst();
|
|
1114
|
+
if (!grantBurnRow) {
|
|
1115
|
+
log.warn(`grant_burn for sol_tx_id ${solTxId} already exists; reusing existing id (idempotent retry)`);
|
|
1116
|
+
grantBurnRow = yield trx.trx
|
|
1117
|
+
.selectFrom(exports.GRANT_BURN_TABLE)
|
|
1118
|
+
.select((eb) => ['id as id'])
|
|
1119
|
+
.where('sol_tx_id', '=', solTxId)
|
|
1120
|
+
.executeTakeFirstOrThrow();
|
|
1121
|
+
}
|
|
1122
|
+
grantBurnId = Number(grantBurnRow.id);
|
|
1072
1123
|
}
|
|
1073
1124
|
const burnId = buyBurnId;
|
|
1074
1125
|
const grantId = grantBurnId !== null && grantBurnId !== void 0 ? grantBurnId : buyBurnId;
|
|
@@ -1094,8 +1145,8 @@ const pgClient = (config) => {
|
|
|
1094
1145
|
return { grantBurnId, buyBurnId };
|
|
1095
1146
|
});
|
|
1096
1147
|
},
|
|
1097
|
-
markJobsBurned(
|
|
1098
|
-
return __awaiter(this,
|
|
1148
|
+
markJobsBurned(trx_1, p_1) {
|
|
1149
|
+
return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
|
|
1099
1150
|
let { markedAt, solTx } = p;
|
|
1100
1151
|
let res = yield trx.trx
|
|
1101
1152
|
.updateTable(exports.BURN_TABLE)
|
|
@@ -1119,8 +1170,8 @@ const pgClient = (config) => {
|
|
|
1119
1170
|
}
|
|
1120
1171
|
});
|
|
1121
1172
|
},
|
|
1122
|
-
consumeAndLockBurnJobs(
|
|
1123
|
-
return __awaiter(this,
|
|
1173
|
+
consumeAndLockBurnJobs(limit_1, lowerRndrThreshold_1, upperRndrThreshold_1) {
|
|
1174
|
+
return __awaiter(this, arguments, void 0, function* (limit, lowerRndrThreshold, upperRndrThreshold, log = logger_1.consoleLogger) {
|
|
1124
1175
|
const trx = yield (0, base_2.begin)(db, log);
|
|
1125
1176
|
const q = trx.trx
|
|
1126
1177
|
.selectFrom(trx.trx
|
|
@@ -1227,9 +1278,9 @@ const pgClient = (config) => {
|
|
|
1227
1278
|
};
|
|
1228
1279
|
});
|
|
1229
1280
|
},
|
|
1230
|
-
incrBuyBurnMetrics(
|
|
1231
|
-
|
|
1232
|
-
|
|
1281
|
+
incrBuyBurnMetrics() {
|
|
1282
|
+
return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
|
|
1283
|
+
var _a;
|
|
1233
1284
|
const res = yield db
|
|
1234
1285
|
.selectFrom(exports.JOB_TABLE)
|
|
1235
1286
|
.select('inserted_at')
|
|
@@ -1246,9 +1297,9 @@ const pgClient = (config) => {
|
|
|
1246
1297
|
};
|
|
1247
1298
|
});
|
|
1248
1299
|
},
|
|
1249
|
-
fetchBurns(
|
|
1250
|
-
|
|
1251
|
-
|
|
1300
|
+
fetchBurns(db_1, f_1) {
|
|
1301
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1302
|
+
var _a, _b;
|
|
1252
1303
|
let q = db.trx
|
|
1253
1304
|
.selectFrom('burn')
|
|
1254
1305
|
.selectAll('burn')
|
|
@@ -1317,9 +1368,9 @@ const pgClient = (config) => {
|
|
|
1317
1368
|
return burns;
|
|
1318
1369
|
});
|
|
1319
1370
|
},
|
|
1320
|
-
fetchBurnsAndGrants(
|
|
1321
|
-
|
|
1322
|
-
|
|
1371
|
+
fetchBurnsAndGrants(db_1, f_1) {
|
|
1372
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1373
|
+
var _a, _b;
|
|
1323
1374
|
// Build a unified query to get all transactions with both buy burns and grant burns
|
|
1324
1375
|
let baseQuery = db.trx
|
|
1325
1376
|
.selectFrom('sol_tx')
|
|
@@ -1457,13 +1508,13 @@ const pgClient = (config) => {
|
|
|
1457
1508
|
return groupedBurns;
|
|
1458
1509
|
});
|
|
1459
1510
|
},
|
|
1460
|
-
createBridgeTransfers(
|
|
1461
|
-
return __awaiter(this,
|
|
1511
|
+
createBridgeTransfers(db_1, bts_1) {
|
|
1512
|
+
return __awaiter(this, arguments, void 0, function* (db, bts, log = logger_1.consoleLogger) {
|
|
1462
1513
|
return createBridgeTransfers(db.trx, bts, log);
|
|
1463
1514
|
});
|
|
1464
1515
|
},
|
|
1465
|
-
getBridgeTransfers(
|
|
1466
|
-
return __awaiter(this,
|
|
1516
|
+
getBridgeTransfers(_a) {
|
|
1517
|
+
return __awaiter(this, arguments, void 0, function* ({ solKey, page, }, log = logger_1.consoleLogger) {
|
|
1467
1518
|
let q = db
|
|
1468
1519
|
.selectFrom(exports.BRIDGE_TRANSFER_TABLE)
|
|
1469
1520
|
.innerJoin(exports.EPOCH_TABLE, 'epoch.id', 'bridge_transfer.epoch_id')
|
|
@@ -1540,8 +1591,8 @@ const pgClient = (config) => {
|
|
|
1540
1591
|
});
|
|
1541
1592
|
},
|
|
1542
1593
|
getTotalBurned(db) {
|
|
1543
|
-
var _a, _b;
|
|
1544
1594
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1595
|
+
var _a, _b;
|
|
1545
1596
|
const total = yield db.trx
|
|
1546
1597
|
.selectFrom('burn')
|
|
1547
1598
|
.select(({ fn }) => fn.sum('burned').as('total_burned'))
|
|
@@ -1549,8 +1600,8 @@ const pgClient = (config) => {
|
|
|
1549
1600
|
return BigInt((_b = (_a = total[0]) === null || _a === void 0 ? void 0 : _a.total_burned) !== null && _b !== void 0 ? _b : 0);
|
|
1550
1601
|
});
|
|
1551
1602
|
},
|
|
1552
|
-
insertBurn(
|
|
1553
|
-
return __awaiter(this,
|
|
1603
|
+
insertBurn(p_1) {
|
|
1604
|
+
return __awaiter(this, arguments, void 0, function* (p, log = logger_1.consoleLogger) {
|
|
1554
1605
|
yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
|
|
1555
1606
|
var _a;
|
|
1556
1607
|
const solTxId = yield getOrInsertTx(trx, { sig: p.solTx, executedAt: p.executedAt }, log);
|
|
@@ -1587,69 +1638,18 @@ const pgClient = (config) => {
|
|
|
1587
1638
|
}));
|
|
1588
1639
|
});
|
|
1589
1640
|
},
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1593
|
-
const res = yield db
|
|
1594
|
-
.insertInto(exports.DISPERSED_SETTLEMENT_TABLE)
|
|
1595
|
-
.values({
|
|
1596
|
-
tx_signature: p.txSignature,
|
|
1597
|
-
claim_uuid: p.claimUuid,
|
|
1598
|
-
obligation_uuids: p.obligationUuids,
|
|
1599
|
-
settled_amount: p.settledAmount,
|
|
1600
|
-
burned_amount: p.burnedAmount,
|
|
1601
|
-
executed_at: p.executedAt,
|
|
1602
|
-
eur_render: (_a = p.eurRender) !== null && _a !== void 0 ? _a : null,
|
|
1603
|
-
})
|
|
1604
|
-
.onConflict((oc) => oc.column('tx_signature').doNothing())
|
|
1605
|
-
.executeTakeFirst();
|
|
1606
|
-
log.debug(`dispersed outbox tx ${p.txSignature}: ${res.numInsertedOrUpdatedRows} row(s)`);
|
|
1607
|
-
});
|
|
1608
|
-
},
|
|
1609
|
-
markDispersedSettled(txSignature, p, log = logger_1.consoleLogger) {
|
|
1610
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1611
|
-
yield db
|
|
1612
|
-
.updateTable(exports.DISPERSED_SETTLEMENT_TABLE)
|
|
1613
|
-
.set({ settled_at: new Date(), idempotent_replay: p.idempotentReplay })
|
|
1614
|
-
.where('tx_signature', '=', txSignature)
|
|
1615
|
-
.execute();
|
|
1616
|
-
log.debug(`dispersed settled tx ${txSignature}`);
|
|
1617
|
-
});
|
|
1618
|
-
},
|
|
1619
|
-
getUnsettledDispersed(log = logger_1.consoleLogger) {
|
|
1620
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1621
|
-
const rows = yield db
|
|
1622
|
-
.selectFrom(exports.DISPERSED_SETTLEMENT_TABLE)
|
|
1623
|
-
.selectAll()
|
|
1624
|
-
.where('settled_at', 'is', null)
|
|
1625
|
-
.execute();
|
|
1626
|
-
log.debug(`dispersed outbox: ${rows.length} unsettled`);
|
|
1627
|
-
return rows.map((r) => {
|
|
1628
|
-
var _a;
|
|
1629
|
-
return ({
|
|
1630
|
-
txSignature: r.tx_signature,
|
|
1631
|
-
claimUuid: r.claim_uuid,
|
|
1632
|
-
obligationUuids: r.obligation_uuids,
|
|
1633
|
-
settledAmount: r.settled_amount,
|
|
1634
|
-
burnedAmount: r.burned_amount,
|
|
1635
|
-
executedAt: r.executed_at,
|
|
1636
|
-
eurRender: (_a = r.eur_render) !== null && _a !== void 0 ? _a : undefined,
|
|
1637
|
-
});
|
|
1638
|
-
});
|
|
1639
|
-
});
|
|
1640
|
-
},
|
|
1641
|
-
fetchJobs(db, f, log = logger_1.consoleLogger) {
|
|
1642
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1641
|
+
fetchJobs(db_1, f_1) {
|
|
1642
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1643
1643
|
return yield fetchJobs1(db.trx, f, log);
|
|
1644
1644
|
});
|
|
1645
1645
|
},
|
|
1646
|
-
fetchJobsWithGrantValues(
|
|
1647
|
-
return __awaiter(this,
|
|
1646
|
+
fetchJobsWithGrantValues(db_1, f_1) {
|
|
1647
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1648
1648
|
return yield fetchJobs2(db.trx, f, log);
|
|
1649
1649
|
});
|
|
1650
1650
|
},
|
|
1651
|
-
fetchLiabilityEpochs(
|
|
1652
|
-
return __awaiter(this,
|
|
1651
|
+
fetchLiabilityEpochs(db_1) {
|
|
1652
|
+
return __awaiter(this, arguments, void 0, function* (db, log = logger_1.consoleLogger) {
|
|
1653
1653
|
const q = db.trx
|
|
1654
1654
|
.selectFrom(exports.LIABILITY_TABLE)
|
|
1655
1655
|
.select(({ fn }) => [
|
|
@@ -1707,50 +1707,94 @@ const pgClient = (config) => {
|
|
|
1707
1707
|
}));
|
|
1708
1708
|
});
|
|
1709
1709
|
},
|
|
1710
|
-
|
|
1711
|
-
return __awaiter(this,
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
])
|
|
1727
|
-
.groupBy([
|
|
1728
|
-
`${exports.BURN_ADJUSTMENT_TABLE}.id`,
|
|
1729
|
-
`${exports.JOB_TABLE}.completed_at`,
|
|
1730
|
-
`${exports.JOB_TABLE}.render_amt`,
|
|
1731
|
-
])
|
|
1732
|
-
.havingRef((0, kysely_1.sql) `SUM(COALESCE("burn"."to_burn", 0)) - SUM(COALESCE("burn"."burned", 0))`, '<', `${exports.BURN_ADJUSTMENT_TABLE}.down_adj_to_burn`);
|
|
1733
|
-
log.info(`getBurnAdjustments ${q.compile().sql}`);
|
|
1734
|
-
const res = yield q.execute();
|
|
1735
|
-
return res.map((r) => ({
|
|
1736
|
-
id: Number(r.id),
|
|
1737
|
-
createdAt: r.created_at,
|
|
1738
|
-
jobId: Number(r.job_id),
|
|
1739
|
-
downAdjRndrUsed: Number(r.down_adj_rndr_used),
|
|
1740
|
-
downAdjToBurn: Number(r.down_adj_to_burn),
|
|
1741
|
-
adjusted: Number(r.tot_to_burn) - Number(r.tot_burned),
|
|
1742
|
-
job: {
|
|
1743
|
-
id: Number(r.job_id),
|
|
1744
|
-
completedAt: r.completed_at,
|
|
1745
|
-
rndrUsed: BigInt(r.render_amt),
|
|
1746
|
-
},
|
|
1747
|
-
}));
|
|
1710
|
+
createTxBurnAdjustment(trx_1, p_1) {
|
|
1711
|
+
return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
|
|
1712
|
+
// Idempotent per sol_tx_id (unique) — a re-run for the same bad tx is a no-op.
|
|
1713
|
+
const row = yield trx.trx
|
|
1714
|
+
.insertInto(exports.TX_BURN_ADJUSTMENT_TABLE)
|
|
1715
|
+
.values({
|
|
1716
|
+
sol_tx_id: p.solTxId,
|
|
1717
|
+
surplus_render: p.surplusRender,
|
|
1718
|
+
description: p.description,
|
|
1719
|
+
})
|
|
1720
|
+
.onConflict((oc) => oc.column('sol_tx_id').doNothing())
|
|
1721
|
+
.returning('id')
|
|
1722
|
+
.executeTakeFirst();
|
|
1723
|
+
if (!row) {
|
|
1724
|
+
log.info(`tx_burn_adjustment for sol_tx ${p.solTxId} already exists — skipped`);
|
|
1725
|
+
return undefined;
|
|
1748
1726
|
}
|
|
1749
|
-
|
|
1727
|
+
log.info(`created tx_burn_adjustment ${row.id}: ${p.surplusRender} RENDER surplus (sol_tx ${p.solTxId})`);
|
|
1728
|
+
return Number(row.id);
|
|
1750
1729
|
});
|
|
1751
1730
|
},
|
|
1752
|
-
|
|
1753
|
-
return __awaiter(this,
|
|
1731
|
+
getJobBurnAdjustments(trx_1, ps_1) {
|
|
1732
|
+
return __awaiter(this, arguments, void 0, function* (trx, ps, log = logger_1.consoleLogger) {
|
|
1733
|
+
if (!ps.toFill)
|
|
1734
|
+
return [];
|
|
1735
|
+
const q = trx.trx
|
|
1736
|
+
.selectFrom(exports.JOB_BURN_ADJUSTMENT_TABLE)
|
|
1737
|
+
.selectAll(exports.JOB_BURN_ADJUSTMENT_TABLE)
|
|
1738
|
+
.innerJoin(exports.JOB_TABLE, `${exports.JOB_TABLE}.id`, `${exports.JOB_BURN_ADJUSTMENT_TABLE}.job_id`)
|
|
1739
|
+
.select([`${exports.JOB_TABLE}.completed_at`, `${exports.JOB_TABLE}.render_amt`])
|
|
1740
|
+
.leftJoin(exports.BURN_TABLE, `${exports.BURN_TABLE}.job_burn_adjustment_id`, `${exports.JOB_BURN_ADJUSTMENT_TABLE}.id`)
|
|
1741
|
+
.select(({ fn, lit }) => [
|
|
1742
|
+
fn.sum(fn.coalesce(`${exports.BURN_TABLE}.to_burn`, lit(0))).as('tot_to_burn'),
|
|
1743
|
+
fn.sum(fn.coalesce(`${exports.BURN_TABLE}.burned`, lit(0))).as('tot_burned'),
|
|
1744
|
+
])
|
|
1745
|
+
.groupBy([
|
|
1746
|
+
`${exports.JOB_BURN_ADJUSTMENT_TABLE}.id`,
|
|
1747
|
+
`${exports.JOB_TABLE}.completed_at`,
|
|
1748
|
+
`${exports.JOB_TABLE}.render_amt`,
|
|
1749
|
+
]);
|
|
1750
|
+
log.info(`getJobBurnAdjustments ${q.compile().sql}`);
|
|
1751
|
+
const res = yield q.execute();
|
|
1752
|
+
return res
|
|
1753
|
+
.map((r) => ({
|
|
1754
|
+
id: Number(r.id),
|
|
1755
|
+
createdAt: r.created_at,
|
|
1756
|
+
jobId: Number(r.job_id),
|
|
1757
|
+
downAdjRndrUsed: Number(r.down_adj_rndr_used),
|
|
1758
|
+
downAdjToBurn: Number(r.down_adj_to_burn),
|
|
1759
|
+
adjusted: Number(r.tot_to_burn) - Number(r.tot_burned),
|
|
1760
|
+
job: {
|
|
1761
|
+
id: Number(r.job_id),
|
|
1762
|
+
completedAt: r.completed_at,
|
|
1763
|
+
rndrUsed: BigInt(r.render_amt),
|
|
1764
|
+
},
|
|
1765
|
+
}))
|
|
1766
|
+
.filter((a) => a.adjusted < a.downAdjToBurn);
|
|
1767
|
+
});
|
|
1768
|
+
},
|
|
1769
|
+
getTxBurnAdjustments(trx_1, ps_1) {
|
|
1770
|
+
return __awaiter(this, arguments, void 0, function* (trx, ps, log = logger_1.consoleLogger) {
|
|
1771
|
+
if (!ps.toFill)
|
|
1772
|
+
return [];
|
|
1773
|
+
const q = trx.trx
|
|
1774
|
+
.selectFrom(exports.TX_BURN_ADJUSTMENT_TABLE)
|
|
1775
|
+
.selectAll(exports.TX_BURN_ADJUSTMENT_TABLE)
|
|
1776
|
+
.leftJoin(exports.BURN_TABLE, `${exports.BURN_TABLE}.tx_burn_adjustment_id`, `${exports.TX_BURN_ADJUSTMENT_TABLE}.id`)
|
|
1777
|
+
.select(({ fn, lit }) => [
|
|
1778
|
+
fn
|
|
1779
|
+
.sum(fn.coalesce(`${exports.BURN_TABLE}.from_escrow_credit`, lit(0)))
|
|
1780
|
+
.as('tot_from_escrow'),
|
|
1781
|
+
])
|
|
1782
|
+
.groupBy(`${exports.TX_BURN_ADJUSTMENT_TABLE}.id`);
|
|
1783
|
+
log.info(`getTxBurnAdjustments ${q.compile().sql}`);
|
|
1784
|
+
const res = yield q.execute();
|
|
1785
|
+
return res
|
|
1786
|
+
.map((r) => ({
|
|
1787
|
+
id: Number(r.id),
|
|
1788
|
+
createdAt: r.created_at,
|
|
1789
|
+
solTxId: Number(r.sol_tx_id),
|
|
1790
|
+
surplusRender: Number(r.surplus_render),
|
|
1791
|
+
consumed: Number(r.tot_from_escrow),
|
|
1792
|
+
}))
|
|
1793
|
+
.filter((a) => a.consumed < a.surplusRender);
|
|
1794
|
+
});
|
|
1795
|
+
},
|
|
1796
|
+
insertPolygonUpgrade(db_1, p_1) {
|
|
1797
|
+
return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
1754
1798
|
const solTxId = yield getOrInsertTx(db.trx, {
|
|
1755
1799
|
sig: p.solTx.sig,
|
|
1756
1800
|
executedAt: p.solTx.executedAt,
|
|
@@ -1768,8 +1812,8 @@ const pgClient = (config) => {
|
|
|
1768
1812
|
return;
|
|
1769
1813
|
});
|
|
1770
1814
|
},
|
|
1771
|
-
fetchPolygonUpgrades(
|
|
1772
|
-
return __awaiter(this,
|
|
1815
|
+
fetchPolygonUpgrades(db_1, f_1) {
|
|
1816
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1773
1817
|
let query = db.trx
|
|
1774
1818
|
.selectFrom('polygon_upgrade')
|
|
1775
1819
|
.selectAll('polygon_upgrade')
|
|
@@ -1795,13 +1839,13 @@ const pgClient = (config) => {
|
|
|
1795
1839
|
}));
|
|
1796
1840
|
});
|
|
1797
1841
|
},
|
|
1798
|
-
getCurrentUserGrantSpend(
|
|
1799
|
-
return __awaiter(this,
|
|
1842
|
+
getCurrentUserGrantSpend(db_1, f_1) {
|
|
1843
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1800
1844
|
return yield getCurrentUserGrantSpend(db.trx, f, log);
|
|
1801
1845
|
});
|
|
1802
1846
|
},
|
|
1803
|
-
deleteAll(
|
|
1804
|
-
return __awaiter(this,
|
|
1847
|
+
deleteAll() {
|
|
1848
|
+
return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
|
|
1805
1849
|
if (config.database.includes('render')) {
|
|
1806
1850
|
throw new Error('cannot nuke from deployed database. call from tests only');
|
|
1807
1851
|
}
|
|
@@ -1847,8 +1891,8 @@ const pgClient = (config) => {
|
|
|
1847
1891
|
}
|
|
1848
1892
|
});
|
|
1849
1893
|
},
|
|
1850
|
-
checkPaymentsForDate(
|
|
1851
|
-
return __awaiter(this,
|
|
1894
|
+
checkPaymentsForDate(targetDate_1) {
|
|
1895
|
+
return __awaiter(this, arguments, void 0, function* (targetDate, channel = 'both', log = logger_1.consoleLogger) {
|
|
1852
1896
|
const startOfDay = new Date(targetDate);
|
|
1853
1897
|
startOfDay.setHours(0, 0, 0, 0);
|
|
1854
1898
|
const endOfDay = new Date(targetDate);
|
|
@@ -1899,8 +1943,8 @@ const pgClient = (config) => {
|
|
|
1899
1943
|
}
|
|
1900
1944
|
});
|
|
1901
1945
|
},
|
|
1902
|
-
checkEpochProcessed(
|
|
1903
|
-
return __awaiter(this,
|
|
1946
|
+
checkEpochProcessed(epochId_1, channel_1) {
|
|
1947
|
+
return __awaiter(this, arguments, void 0, function* (epochId, channel, log = logger_1.consoleLogger) {
|
|
1904
1948
|
try {
|
|
1905
1949
|
const result = yield db
|
|
1906
1950
|
.selectFrom('epoch')
|
|
@@ -1920,8 +1964,8 @@ const pgClient = (config) => {
|
|
|
1920
1964
|
}
|
|
1921
1965
|
});
|
|
1922
1966
|
},
|
|
1923
|
-
checkRecentPaymentActivity(
|
|
1924
|
-
return __awaiter(this,
|
|
1967
|
+
checkRecentPaymentActivity() {
|
|
1968
|
+
return __awaiter(this, arguments, void 0, function* (lookbackHours = 2, channel = 'both', log = logger_1.consoleLogger) {
|
|
1925
1969
|
const lookbackTime = new Date(Date.now() - lookbackHours * 60 * 60 * 1000);
|
|
1926
1970
|
const now = new Date();
|
|
1927
1971
|
try {
|