@render-foundation/utils 0.0.76 → 0.0.78

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.
Files changed (86) hide show
  1. package/package.json +1 -1
  2. package/lib/cjs/client/onchain.js +0 -109
  3. package/lib/cjs/client/onchain.js.map +0 -1
  4. package/lib/cjs/client/pg/v1.js +0 -623
  5. package/lib/cjs/client/pg/v1.js.map +0 -1
  6. package/lib/cjs/client/pg/v2.js +0 -840
  7. package/lib/cjs/client/pg/v2.js.map +0 -1
  8. package/lib/cjs/client/pg/v2Client.js +0 -769
  9. package/lib/cjs/client/pg/v2Client.js.map +0 -1
  10. package/lib/cjs/client/price.js +0 -46
  11. package/lib/cjs/client/price.js.map +0 -1
  12. package/lib/cjs/client/render.js +0 -164
  13. package/lib/cjs/client/render.js.map +0 -1
  14. package/lib/cjs/client/squads.js +0 -204
  15. package/lib/cjs/client/squads.js.map +0 -1
  16. package/lib/cjs/client/trade.js +0 -127
  17. package/lib/cjs/client/trade.js.map +0 -1
  18. package/lib/cjs/client/wormhole.js +0 -69
  19. package/lib/cjs/client/wormhole.js.map +0 -1
  20. package/lib/cjs/dbTypes.js +0 -3
  21. package/lib/cjs/dbTypes.js.map +0 -1
  22. package/lib/cjs/dbTypesV2.js +0 -3
  23. package/lib/cjs/dbTypesV2.js.map +0 -1
  24. package/lib/cjs/errorReporter.js +0 -77
  25. package/lib/cjs/errorReporter.js.map +0 -1
  26. package/lib/cjs/index.js +0 -41
  27. package/lib/cjs/index.js.map +0 -1
  28. package/lib/cjs/logger.js +0 -21
  29. package/lib/cjs/logger.js.map +0 -1
  30. package/lib/esm/src/client/onchain.js +0 -100
  31. package/lib/esm/src/client/onchain.js.map +0 -1
  32. package/lib/esm/src/client/pg/v1.js +0 -559
  33. package/lib/esm/src/client/pg/v1.js.map +0 -1
  34. package/lib/esm/src/client/pg/v2.js +0 -774
  35. package/lib/esm/src/client/pg/v2.js.map +0 -1
  36. package/lib/esm/src/client/pg/v2Client.js +0 -709
  37. package/lib/esm/src/client/pg/v2Client.js.map +0 -1
  38. package/lib/esm/src/client/price.js +0 -32
  39. package/lib/esm/src/client/price.js.map +0 -1
  40. package/lib/esm/src/client/render.js +0 -138
  41. package/lib/esm/src/client/render.js.map +0 -1
  42. package/lib/esm/src/client/squads.js +0 -163
  43. package/lib/esm/src/client/squads.js.map +0 -1
  44. package/lib/esm/src/client/trade.js +0 -114
  45. package/lib/esm/src/client/trade.js.map +0 -1
  46. package/lib/esm/src/client/wormhole.js +0 -33
  47. package/lib/esm/src/client/wormhole.js.map +0 -1
  48. package/lib/esm/src/dbTypes.js +0 -2
  49. package/lib/esm/src/dbTypes.js.map +0 -1
  50. package/lib/esm/src/dbTypesV2.js +0 -2
  51. package/lib/esm/src/dbTypesV2.js.map +0 -1
  52. package/lib/esm/src/errorReporter.js +0 -68
  53. package/lib/esm/src/errorReporter.js.map +0 -1
  54. package/lib/esm/src/index.js +0 -12
  55. package/lib/esm/src/index.js.map +0 -1
  56. package/lib/esm/src/logger.js +0 -18
  57. package/lib/esm/src/logger.js.map +0 -1
  58. package/lib/esm/tsconfig.esm.tsbuildinfo +0 -1
  59. package/lib/types/src/client/onchain.d.ts +0 -19
  60. package/lib/types/src/client/onchain.d.ts.map +0 -1
  61. package/lib/types/src/client/pg/v1.d.ts +0 -163
  62. package/lib/types/src/client/pg/v1.d.ts.map +0 -1
  63. package/lib/types/src/client/pg/v2.d.ts +0 -35
  64. package/lib/types/src/client/pg/v2.d.ts.map +0 -1
  65. package/lib/types/src/client/pg/v2Client.d.ts +0 -142
  66. package/lib/types/src/client/pg/v2Client.d.ts.map +0 -1
  67. package/lib/types/src/client/price.d.ts +0 -11
  68. package/lib/types/src/client/price.d.ts.map +0 -1
  69. package/lib/types/src/client/render.d.ts +0 -19
  70. package/lib/types/src/client/render.d.ts.map +0 -1
  71. package/lib/types/src/client/squads.d.ts +0 -17
  72. package/lib/types/src/client/squads.d.ts.map +0 -1
  73. package/lib/types/src/client/trade.d.ts +0 -15
  74. package/lib/types/src/client/trade.d.ts.map +0 -1
  75. package/lib/types/src/client/wormhole.d.ts +0 -9
  76. package/lib/types/src/client/wormhole.d.ts.map +0 -1
  77. package/lib/types/src/dbTypes.d.ts +0 -123
  78. package/lib/types/src/dbTypes.d.ts.map +0 -1
  79. package/lib/types/src/dbTypesV2.d.ts +0 -109
  80. package/lib/types/src/dbTypesV2.d.ts.map +0 -1
  81. package/lib/types/src/errorReporter.d.ts +0 -12
  82. package/lib/types/src/errorReporter.d.ts.map +0 -1
  83. package/lib/types/src/index.d.ts +0 -12
  84. package/lib/types/src/index.d.ts.map +0 -1
  85. package/lib/types/src/logger.d.ts +0 -16
  86. package/lib/types/src/logger.d.ts.map +0 -1
@@ -1,559 +0,0 @@
1
- import { Pool } from 'pg';
2
- import { Kysely, NoResultError, PostgresDialect, sql, } from 'kysely';
3
- import { consoleLogger } from '../../logger';
4
- export const transferTypToChan = (t) => {
5
- if (t == 'open_compute_rewards') {
6
- return 'open_compute';
7
- }
8
- if (t == 'node_operator_rewards') {
9
- return 'node_operator';
10
- }
11
- if (t == 'availability_rewards') {
12
- return 'availability';
13
- }
14
- return 'upgrade';
15
- };
16
- const transferFromDB = (o) => {
17
- return {
18
- id: o.id,
19
- solKey: o.sol_key,
20
- solTx: o.sol_tx,
21
- sqTx: o.sq_tx,
22
- createdAt: o.created_at,
23
- payedAt: o.payed_at,
24
- amountDue: BigInt(o.amount_due),
25
- amountPayed: o.amount_payed ? BigInt(o.amount_payed) : undefined,
26
- channel: transferTypToChan(o.transfer_type),
27
- operatorRewards: o.transfer_type == 'node_operator_rewards'
28
- ? {
29
- epochId: o.epoch_id,
30
- startTime: o.start_time,
31
- endTime: o.end_time,
32
- }
33
- : undefined,
34
- computeClientRewards: o.transfer_type == 'open_compute_rewards'
35
- ? {
36
- epochId: o.epoch_id,
37
- deviceId: o.device_id,
38
- }
39
- : undefined,
40
- upgradeRewards: o.transfer_type == 'upgrade_rewards' && !!o.epoch_id
41
- ? {
42
- epochId: o.epoch_id,
43
- epochStartTime: o.epoch_start_time,
44
- points: BigInt(o.points),
45
- }
46
- : undefined,
47
- availabilityRewards: o.transfer_type == 'availability_rewards'
48
- ? {
49
- epochId: o.epoch_id,
50
- deviceId: o.device_id,
51
- }
52
- : undefined,
53
- };
54
- };
55
- export const TRANSFER_TABLE = 'transfer';
56
- export const NODE_OPERATOR_REWARDS_TRANSFER_TABLE = 'node_operator_rewards_transfer';
57
- export const OPEN_COMPUTE_REWARDS_TRANSFER_TABLE = 'open_compute_rewards_transfer';
58
- export const AVAILABILITY_REWARDS_TRANSFER_TABLE = 'availability_rewards_transfer';
59
- export const UPGRADE_REWARDS_TRANSFER_TABLE = 'upgrade_rewards_transfer';
60
- export const SQUADS_TX_TABLE = 'squads_tx';
61
- export const NODE_OPERATOR_EPOCH_TABLE = 'node_operator_epoch';
62
- export const JOB_ID_TABLE = 'job_id';
63
- export const JOB_TABLE = 'job';
64
- export const BURN_TABLE = 'burn';
65
- export const NETWORK_REVENUE_TABLE = 'network_revenue';
66
- export const pgClient = (config) => {
67
- const dialect = new PostgresDialect({
68
- pool: new Pool({
69
- ...config,
70
- port: config.port ?? 5432,
71
- max: config.max ?? 10,
72
- }),
73
- });
74
- // Database interface is passed to Kysely's constructor, and from now on, Kysely
75
- // knows your database structure.
76
- // Dialect is passed to Kysely's constructor, and from now on, Kysely knows how
77
- // to communicate with your database.
78
- const db = new Kysely({
79
- dialect,
80
- });
81
- const createTransfers = async (db, transfers, log = consoleLogger) => {
82
- for (const t of transfers) {
83
- const { id: transferId } = (await db
84
- .insertInto(TRANSFER_TABLE)
85
- .values({
86
- amount_due: BigInt(t.amountDue),
87
- amount_payed: t.amountPayed ? BigInt(t.amountPayed) : 0,
88
- created_at: t.createdAt,
89
- payed_at: t.payedAt,
90
- sol_key: t.solKey,
91
- sol_tx: t.solTx,
92
- transfer_type: (() => {
93
- if (t.operatorRewards) {
94
- return 'node_operator_rewards';
95
- }
96
- else if (t.upgradeRewards) {
97
- return 'upgrade_rewards';
98
- }
99
- else if (t.computeClientRewards) {
100
- return 'open_compute_rewards';
101
- }
102
- else if (t.availabilityRewards) {
103
- return 'availability_rewards';
104
- }
105
- throw new Error('wtf');
106
- })(),
107
- })
108
- .returning((eb) => ['id as id'])
109
- .executeTakeFirst());
110
- log.info(`inserted transfer ${JSON.stringify(t, (key, value) => typeof value === 'bigint' ? value.toString() : value)}`);
111
- if (t.operatorRewards) {
112
- log.info(`inserting operator rewards ${transferId}`);
113
- const x = (await db
114
- .insertInto(NODE_OPERATOR_REWARDS_TRANSFER_TABLE)
115
- .values({
116
- end_time: t.operatorRewards.endTime,
117
- start_time: t.operatorRewards.startTime,
118
- epoch_id: t.operatorRewards.epochId,
119
- transfer_id: transferId,
120
- })
121
- .executeTakeFirst()).insertId;
122
- }
123
- else if (t.computeClientRewards) {
124
- log.info(`inserting compute client rewards ${transferId}`);
125
- const x = (await db
126
- .insertInto(OPEN_COMPUTE_REWARDS_TRANSFER_TABLE)
127
- .values({
128
- epoch_id: t.computeClientRewards.epochId,
129
- device_id: t.computeClientRewards.deviceId,
130
- transfer_id: transferId,
131
- })
132
- .executeTakeFirst()).insertId;
133
- }
134
- else if (t.upgradeRewards) {
135
- log.info(`inserting upgrade rewards ${transferId}`);
136
- const x = (await db
137
- .insertInto(UPGRADE_REWARDS_TRANSFER_TABLE)
138
- .values({
139
- epoch_id: t.upgradeRewards.epochId,
140
- epoch_start_time: t.upgradeRewards.epochStartTime,
141
- points: t.upgradeRewards.points,
142
- transfer_id: transferId,
143
- })
144
- .executeTakeFirst()).insertId;
145
- }
146
- else if (t.availabilityRewards) {
147
- log.info(`inserting availability rewards ${transferId}`);
148
- const x = (await db
149
- .insertInto(AVAILABILITY_REWARDS_TRANSFER_TABLE)
150
- .values({
151
- epoch_id: t.availabilityRewards.epochId,
152
- device_id: t.availabilityRewards.deviceId,
153
- transfer_id: transferId,
154
- })
155
- .executeTakeFirst()).insertId;
156
- }
157
- }
158
- return;
159
- };
160
- return {
161
- db,
162
- async fetchBurns(f, log = consoleLogger) {
163
- throw new Error('not implemented');
164
- },
165
- async backfillBurn(p, log) {
166
- throw new Error('cant backfill into v1');
167
- },
168
- async saveNodeOperatorEpoch(epochId, transfers, jobIds, totalRndr, log = consoleLogger) {
169
- await db.transaction().execute(async (trx) => {
170
- await createTransfers(trx, transfers, log);
171
- log.info(`inserted transfers`);
172
- for (const id of jobIds) {
173
- await trx
174
- .insertInto(JOB_ID_TABLE)
175
- .values({
176
- id: BigInt(id),
177
- epoch_id: epochId,
178
- })
179
- .executeTakeFirstOrThrow();
180
- }
181
- log.info(`inserted jobids`);
182
- const now = new Date(Date.now());
183
- const res = await trx
184
- .updateTable(NODE_OPERATOR_EPOCH_TABLE)
185
- .set({
186
- saved_at: now,
187
- total_rndr: totalRndr,
188
- })
189
- .where('id', '=', epochId.toString())
190
- .executeTakeFirstOrThrow();
191
- log.info(`saved node operator epoch: ${res.numUpdatedRows}`);
192
- });
193
- return;
194
- },
195
- async getLatestNodeOperatorEpoch(log = consoleLogger) {
196
- const now = new Date(Date.now());
197
- try {
198
- const res = await db
199
- .selectFrom(NODE_OPERATOR_EPOCH_TABLE)
200
- .selectAll()
201
- .where('end_time', '<=', now)
202
- .where('saved_at', 'is', null)
203
- .orderBy('end_time asc')
204
- .limit(1)
205
- .executeTakeFirstOrThrow();
206
- return {
207
- epochId: BigInt(res.id),
208
- startedAt: res.start_time,
209
- endedAt: res.end_time,
210
- savedAt: res.saved_at ?? undefined,
211
- };
212
- }
213
- catch (e) {
214
- if (e instanceof NoResultError) {
215
- log.info(`no node operator epoch found`);
216
- return undefined;
217
- }
218
- throw e;
219
- }
220
- },
221
- async getOutstanding(f, log = consoleLogger) {
222
- const { typ, nullKey, due } = f;
223
- //select sol_key, sum(amount_due)-sum(amount_payed) from transfer group by sol_key;
224
- let q = db
225
- .selectFrom(TRANSFER_TABLE)
226
- .select(({ fn, val, ref }) => [
227
- 'sol_key',
228
- sql `${fn.sum('amount_due')} -
229
- ${fn.sum('amount_payed')}`.as('due'),
230
- ])
231
- .where('transfer_type', '=', typ)
232
- .groupBy(['sol_key']);
233
- if (!nullKey) {
234
- q = q.where('sol_key', 'is not', null);
235
- }
236
- if (due) {
237
- q = q.having(({ fn, ref }) => sql `${fn.sum('amount_due')} -
238
- ${fn.sum('amount_payed')}
239
- >
240
- 0`);
241
- }
242
- const res = await q.execute();
243
- log.info(`outstanding query ${q.compile().sql} params ${JSON.stringify(f)} ${res.length} rows`);
244
- const out = {};
245
- for (const r of res) {
246
- out[r.sol_key ?? ''] = BigInt(r.due);
247
- }
248
- return out;
249
- },
250
- async fetchTransfers(f, log = consoleLogger) {
251
- let base = db
252
- .selectFrom(TRANSFER_TABLE)
253
- // @ts-ignore
254
- .selectAll(TRANSFER_TABLE);
255
- if (f.typ) {
256
- base = base.where('transfer.transfer_type', '=', f.typ);
257
- }
258
- if (f.solKey) {
259
- base = base.where('transfer.sol_key', '=', f.solKey);
260
- }
261
- if (f.payed != undefined) {
262
- base = base.where('transfer.payed_at', f.payed ? 'is not' : 'is', null);
263
- }
264
- if (f.createdBefore != undefined) {
265
- base = base.where('transfer.created_at', '<=', f.createdBefore);
266
- }
267
- if (f.typ == 'upgrade_rewards') {
268
- base = base
269
- .innerJoin(UPGRADE_REWARDS_TRANSFER_TABLE, 'upgrade_rewards_transfer.transfer_id', 'transfer.id')
270
- .selectAll(UPGRADE_REWARDS_TRANSFER_TABLE);
271
- if (f.epochId) {
272
- // @ts-ignore
273
- base = base.where('upgrade_rewards_transfer.epoch_id', '=', f.epochId);
274
- }
275
- }
276
- if (f.typ == 'open_compute_rewards') {
277
- base = base
278
- .innerJoin(OPEN_COMPUTE_REWARDS_TRANSFER_TABLE, 'open_compute_rewards_transfer.transfer_id', 'transfer.id')
279
- .selectAll(OPEN_COMPUTE_REWARDS_TRANSFER_TABLE);
280
- if (f.epochId) {
281
- base = base.where(
282
- // @ts-ignore
283
- 'open_compute_rewards_transfer.epoch_id', '=', f.epochId);
284
- }
285
- }
286
- if (f.typ == 'node_operator_rewards') {
287
- base = base
288
- .innerJoin(NODE_OPERATOR_REWARDS_TRANSFER_TABLE, 'node_operator_rewards_transfer.transfer_id', 'transfer.id')
289
- .selectAll(NODE_OPERATOR_REWARDS_TRANSFER_TABLE);
290
- if (f.epochId) {
291
- base = base.where(
292
- // @ts-ignore
293
- 'node_operator_rewards_transfer.epoch_id', '=', f.epochId);
294
- }
295
- }
296
- if (f.typ == 'availability_rewards') {
297
- base = base
298
- .innerJoin(AVAILABILITY_REWARDS_TRANSFER_TABLE, 'availability_rewards_transfer.transfer_id', 'transfer.id')
299
- .selectAll(AVAILABILITY_REWARDS_TRANSFER_TABLE);
300
- if (f.epochId) {
301
- base = base.where(
302
- // @ts-ignore
303
- 'availability_rewards_transfer.epoch_id', '=', f.epochId);
304
- }
305
- }
306
- if (f.sort) {
307
- base = base.orderBy('transfer.sol_key asc');
308
- }
309
- const res = await base.execute();
310
- log.info(`fetched ${base.compile().sql} params ${JSON.stringify(f)} ${res.length} transfers`);
311
- return res.map((r) => transferFromDB(r));
312
- },
313
- async payoutTransfers(idToAmt, payedAt, solTx, log = consoleLogger) {
314
- const res = await db.transaction().execute(async (tx) => {
315
- const alreadyUpdatedIds = (await tx
316
- .selectFrom(TRANSFER_TABLE)
317
- .select(['id'])
318
- .where('id', 'in', Object.keys(idToAmt))
319
- .where('sol_tx', 'is not', null)
320
- .execute()).map(({ id }) => id);
321
- for (const [id, amt] of Object.entries(idToAmt)) {
322
- if (alreadyUpdatedIds.includes(id)) {
323
- log.info(`transfer ${id} already marked payed out. skipping`);
324
- continue;
325
- }
326
- const res = await tx
327
- .updateTable(TRANSFER_TABLE)
328
- .set({
329
- payed_at: payedAt,
330
- sol_tx: solTx,
331
- amount_payed: amt,
332
- })
333
- .where('id', '=', id.toString())
334
- .executeTakeFirstOrThrow();
335
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
336
- }
337
- });
338
- },
339
- async payoutTransfer(id, payedAt, solTx, amtPayed, log = consoleLogger) {
340
- const res = await db
341
- .updateTable(TRANSFER_TABLE)
342
- .set({
343
- payed_at: payedAt,
344
- sol_tx: solTx,
345
- amount_payed: amtPayed,
346
- })
347
- .where('id', '=', id.toString())
348
- .executeTakeFirst();
349
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
350
- return;
351
- },
352
- async createTransfers(transfers, log = consoleLogger) {
353
- await createTransfers(db, transfers, log);
354
- },
355
- async fetchInfoForEpoch(epochId) {
356
- const res = await db
357
- .selectFrom(JOB_ID_TABLE)
358
- .innerJoin(NODE_OPERATOR_EPOCH_TABLE, 'node_operator_epoch.id', 'job_id.epoch_id')
359
- .where('job_id.epoch_id', '=', epochId.toString())
360
- .select([
361
- 'job_id.id',
362
- 'node_operator_epoch.total_rndr',
363
- 'node_operator_epoch.start_time',
364
- 'node_operator_epoch.end_time',
365
- 'node_operator_epoch.burned',
366
- 'node_operator_epoch.burn_tx',
367
- ])
368
- .execute();
369
- if (res.length == 0) {
370
- throw new Error(`epoch ${epochId} not found`);
371
- }
372
- return {
373
- jobIds: res.map((r) => Number(r.id)),
374
- totalRndr: BigInt(res[0].total_rndr),
375
- startTime: res[0].start_time,
376
- endTime: res[0].end_time,
377
- burned: BigInt(res[0].burned),
378
- burnTx: res[0].burn_tx,
379
- };
380
- },
381
- async updateComputeClientSolKey(deviceId, solKey, log = consoleLogger) {
382
- const q = db
383
- .updateTable(`${TRANSFER_TABLE} as t`)
384
- .set({
385
- sol_key: solKey,
386
- })
387
- .from(`${OPEN_COMPUTE_REWARDS_TRANSFER_TABLE} as o`)
388
- .whereRef('t.id', '=', 'o.transfer_id')
389
- .where('t.sol_key', 'is', null)
390
- .where('o.device_id', '=', deviceId);
391
- const sql = await q.compile();
392
- log.info(`sql ${sql.sql} params ${sql.parameters}`);
393
- const res = await q.executeTakeFirstOrThrow();
394
- log.info(`updated ${res.numUpdatedRows} device-id sol_keys`);
395
- },
396
- async markJobsBurned(p, log = consoleLogger) {
397
- let { markedAt, solTx } = p;
398
- let res = await db
399
- .updateTable(BURN_TABLE)
400
- .set({ marked_burned_at: markedAt })
401
- .where('sol_tx', '=', solTx)
402
- .executeTakeFirstOrThrow();
403
- log.debug(`set ${res.numUpdatedRows} ${solTx} -> marked_burned_at ${markedAt.toISOString()}`);
404
- },
405
- async markJobsBurnt(trx, p, log = consoleLogger) {
406
- const { id } = await trx
407
- .insertInto(BURN_TABLE)
408
- .values({
409
- sol_tx: p.solTx,
410
- executed_at: p.executedAt,
411
- priced_at: p.pricedAt,
412
- usdc_spent: p.usdcSpent,
413
- quote_amt: p.quoteAmt,
414
- burned: p.burned,
415
- })
416
- .onConflict((oc) => oc.column('sol_tx').doNothing())
417
- .returning((eb) => ['id as id'])
418
- .executeTakeFirstOrThrow();
419
- const jobIdsStr = p.jobsIds.map(String);
420
- const res = await trx
421
- .updateTable(JOB_TABLE)
422
- .where('id', 'in', jobIdsStr)
423
- .set('burn_id', id)
424
- .executeTakeFirstOrThrow();
425
- log.debug(`set burn_id on ${res.numUpdatedRows} jobs`);
426
- return;
427
- },
428
- async produceBurnedJobs(jobs, log = consoleLogger) {
429
- await db.transaction().execute(async (trx) => {
430
- let num = BigInt(0);
431
- for (const { amount, completedAt, jobId } of jobs) {
432
- const res = await trx
433
- .insertInto(JOB_TABLE)
434
- .values({
435
- id: jobId,
436
- render_amt: amount,
437
- completed_at: completedAt,
438
- inserted_at: new Date(Date.now()),
439
- })
440
- .onConflict((oc) => oc.column('id').doNothing())
441
- .executeTakeFirstOrThrow();
442
- num += res.numInsertedOrUpdatedRows ?? BigInt(0);
443
- }
444
- log.debug(`inserted ${num} of ${jobs.length} burn jobs`);
445
- });
446
- },
447
- async consumeAndLockBurnJobs(limit, lowerRndrThreshold, upperRndrThreshold, log = consoleLogger) {
448
- const trx = await begin(db);
449
- const q = trx.trx
450
- .selectFrom(trx.trx
451
- .selectFrom(JOB_TABLE)
452
- .select(({ fn, val, ref }) => [
453
- 'id',
454
- fn
455
- .sum('render_amt')
456
- .over((ob) => ob.orderBy(`completed_at`, `asc`))
457
- .as('total'),
458
- ])
459
- .where('burn_id', 'is', null)
460
- .as('t'))
461
- .select('id')
462
- .where('total', '>', lowerRndrThreshold)
463
- .where('total', '<', upperRndrThreshold);
464
- log.debug(`outstanding jobs q: ${q.compile().sql} ${JSON.stringify({
465
- limit,
466
- lowerRndrThreshold,
467
- upperRndrThreshold,
468
- })}`);
469
- const idRs = await q.execute();
470
- const ids = idRs.map((x) => x.id);
471
- log.debug(`${ids.length} candidate jobs for burn. locking up to ${limit} jobs`);
472
- if (ids.length == 0) {
473
- return { trx, jobs: [] };
474
- }
475
- const rows = await trx.trx
476
- .selectFrom(JOB_TABLE)
477
- .selectAll()
478
- .where('id', 'in', ids)
479
- .limit(limit)
480
- .forUpdate()
481
- .skipLocked()
482
- .execute();
483
- log.debug(`locked ${rows.length} jobs`);
484
- const jobs = [];
485
- for (const r of rows) {
486
- jobs.push({
487
- id: Number(r.id),
488
- completedAt: r.completed_at,
489
- rndrUsed: BigInt(r.render_amt),
490
- });
491
- }
492
- return { trx, jobs };
493
- },
494
- async incrBuyBurnMetrics(log = consoleLogger) {
495
- const res = await db
496
- .selectFrom(JOB_TABLE)
497
- .select('completed_at')
498
- .orderBy('completed_at asc')
499
- .where('burn_id', 'is', null)
500
- .execute();
501
- if (res.length == 0) {
502
- return { outstandingJobs: 0 };
503
- }
504
- return {
505
- outstandingJobs: res.length,
506
- oldestJobFinishedAt: res[0].completed_at,
507
- };
508
- },
509
- async deleteAll() { },
510
- };
511
- };
512
- async function begin(db) {
513
- const connection = new Deferred();
514
- const result = new Deferred();
515
- // Do NOT await this line.
516
- db.transaction()
517
- .execute((trx) => {
518
- connection.resolve(trx);
519
- return result.promise;
520
- })
521
- .catch((err) => {
522
- // Don't do anything here. Just swallow the exception.
523
- });
524
- const trx = await connection.promise;
525
- return {
526
- trx,
527
- commit() {
528
- result.resolve(null);
529
- },
530
- rollback() {
531
- result.reject(new Error('rollback'));
532
- },
533
- };
534
- }
535
- export class Deferred {
536
- #promise;
537
- #resolve;
538
- #reject;
539
- constructor() {
540
- this.#promise = new Promise((resolve, reject) => {
541
- this.#reject = reject;
542
- this.#resolve = resolve;
543
- });
544
- }
545
- get promise() {
546
- return this.#promise;
547
- }
548
- resolve = (value) => {
549
- if (this.#resolve) {
550
- this.#resolve(value);
551
- }
552
- };
553
- reject = (reason) => {
554
- if (this.#reject) {
555
- this.#reject(reason);
556
- }
557
- };
558
- }
559
- //# sourceMappingURL=v1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v1.js","sourceRoot":"","sources":["../../../../../src/client/pg/v1.ts"],"names":[],"mappings":"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"}