@cardano-sdk/cardano-services 0.8.0-nightly.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/ChainHistory/DbSyncChainHistory/mappers.d.ts.map +1 -1
  2. package/dist/cjs/ChainHistory/DbSyncChainHistory/mappers.js +3 -5
  3. package/dist/cjs/ChainHistory/DbSyncChainHistory/mappers.js.map +1 -1
  4. package/dist/cjs/Metadata/mappers.d.ts +1 -1
  5. package/dist/cjs/Metadata/mappers.d.ts.map +1 -1
  6. package/dist/cjs/Metadata/mappers.js +11 -4
  7. package/dist/cjs/Metadata/mappers.js.map +1 -1
  8. package/dist/cjs/Metadata/queries.d.ts +1 -1
  9. package/dist/cjs/Metadata/queries.d.ts.map +1 -1
  10. package/dist/cjs/Metadata/queries.js +8 -8
  11. package/dist/cjs/Metadata/queries.js.map +1 -1
  12. package/dist/cjs/Metadata/types.d.ts +1 -3
  13. package/dist/cjs/Metadata/types.d.ts.map +1 -1
  14. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.d.ts +4 -7
  15. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.d.ts.map +1 -1
  16. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.js +14 -16
  17. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.js.map +1 -1
  18. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.d.ts +2 -2
  19. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.d.ts.map +1 -1
  20. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.js +1 -30
  21. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.js.map +1 -1
  22. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/types.d.ts +0 -13
  23. package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/types.d.ts.map +1 -1
  24. package/dist/cjs/Program/loadHttpServer.d.ts.map +1 -1
  25. package/dist/cjs/Program/loadHttpServer.js +12 -4
  26. package/dist/cjs/Program/loadHttpServer.js.map +1 -1
  27. package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.d.ts +4 -5
  28. package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.d.ts.map +1 -1
  29. package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.js +35 -42
  30. package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.js.map +1 -1
  31. package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.d.ts +2 -2
  32. package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.d.ts.map +1 -1
  33. package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.js +7 -9
  34. package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.js.map +1 -1
  35. package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.d.ts +1 -1
  36. package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.d.ts.map +1 -1
  37. package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.js +5 -4
  38. package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.js.map +1 -1
  39. package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.d.ts +15 -15
  40. package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.d.ts.map +1 -1
  41. package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.js +293 -325
  42. package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.js.map +1 -1
  43. package/dist/cjs/StakePool/DbSyncStakePoolProvider/types.d.ts +5 -3
  44. package/dist/cjs/StakePool/DbSyncStakePoolProvider/types.d.ts.map +1 -1
  45. package/dist/cjs/StakePool/openApi.json +11 -8
  46. package/dist/cjs/Utxo/DbSyncUtxoProvider/mappers.d.ts.map +1 -1
  47. package/dist/cjs/Utxo/DbSyncUtxoProvider/mappers.js +12 -12
  48. package/dist/cjs/Utxo/DbSyncUtxoProvider/mappers.js.map +1 -1
  49. package/dist/cjs/original-package.json +12 -8
  50. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  51. package/dist/cjs/types.d.ts +14 -0
  52. package/dist/cjs/types.d.ts.map +1 -1
  53. package/dist/cjs/util/genesis.d.ts +3 -0
  54. package/dist/cjs/util/genesis.d.ts.map +1 -0
  55. package/dist/cjs/util/genesis.js +34 -0
  56. package/dist/cjs/util/genesis.js.map +1 -0
  57. package/dist/cjs/util/index.d.ts +2 -0
  58. package/dist/cjs/util/index.d.ts.map +1 -1
  59. package/dist/cjs/util/index.js +2 -0
  60. package/dist/cjs/util/index.js.map +1 -1
  61. package/package.json +12 -8
@@ -4,20 +4,20 @@ exports.withSort = exports.findPoolStats = exports.getTotalCountQueryFromQuery =
4
4
  const core_1 = require("@cardano-sdk/core");
5
5
  const util_1 = require("./util");
6
6
  exports.findLastEpoch = `
7
- SELECT
7
+ SELECT
8
8
  "no"
9
9
  FROM epoch
10
- ORDER BY no DESC
10
+ ORDER BY no DESC
11
11
  LIMIT 1
12
12
  `;
13
- exports.findLastEpochWithData = `
14
- SELECT
13
+ exports.findLastEpochWithData = `
14
+ SELECT
15
15
  epoch."no",
16
16
  ep.optimal_pool_count
17
- FROM epoch
18
- LEFT JOIN epoch_param ep ON
17
+ FROM epoch
18
+ LEFT JOIN epoch_param ep ON
19
19
  ep.epoch_no = epoch."no"
20
- ORDER BY no DESC
20
+ ORDER BY no DESC
21
21
  LIMIT 1`;
22
22
  exports.findTotalAda = `
23
23
  SELECT COALESCE(SUM(value)) AS total_ada
@@ -25,120 +25,120 @@ FROM tx_out AS tx_outer WHERE
25
25
  NOT exists
26
26
  ( SELECT tx_out.id
27
27
  FROM tx_out
28
- JOIN tx_in on
28
+ JOIN tx_in ON
29
29
  tx_out.tx_id = tx_in.tx_out_id AND
30
30
  tx_out.index = tx_in.tx_out_index
31
31
  WHERE tx_outer.id = tx_out.id
32
32
  );
33
33
  `;
34
34
  exports.findPoolsMetrics = `
35
- with current_epoch AS (
35
+ WITH current_epoch AS (
36
36
  SELECT
37
37
  e."no" AS epoch_no,
38
- optimal_pool_count
38
+ optimal_pool_count
39
39
  FROM epoch e
40
- JOIN epoch_param ep on
40
+ JOIN epoch_param ep ON
41
41
  ep.epoch_no = e."no"
42
- order by e.no desc limit 1
42
+ ORDER BY e.no DESC LIMIT 1
43
43
  ),
44
44
  blocks_created AS (
45
- SELECT
46
- count(1) AS blocks_created,
45
+ SELECT
46
+ COUNT(1) AS blocks_created,
47
47
  pool_hash.id AS pool_hash_id
48
- FROM block
49
- JOIN slot_leader on block.slot_leader_id = slot_leader.id
50
- JOIN pool_hash on slot_leader.pool_hash_id = pool_hash.id
51
- where pool_hash.id = ANY($1)
48
+ FROM block
49
+ JOIN slot_leader ON block.slot_leader_id = slot_leader.id
50
+ JOIN pool_hash ON slot_leader.pool_hash_id = pool_hash.id
51
+ WHERE pool_hash.id = ANY($1)
52
52
  GROUP BY pool_hash.id
53
53
  ),
54
54
  pools_delegates AS (
55
- SELECT
55
+ SELECT
56
56
  ph.id AS pool_hash_id,
57
57
  sa.id AS addr_id
58
- FROM pool_hash ph
58
+ FROM pool_hash ph
59
59
  JOIN pool_update pu
60
- ON pu.id = (
61
- SELECT id
62
- FROM pool_update pu2
63
- WHERE pu2.hash_id = ph.id
64
- ORDER BY id DESC
65
- LIMIT 1
66
- )
67
- LEFT JOIN pool_retire pr
68
- ON pr.id = (
69
- SELECT id
70
- FROM pool_retire pr2
71
- WHERE pr2.hash_id = ph.id
72
- ORDER BY id desc
73
- LIMIT 1
74
- )
75
- JOIN stake_address sa ON
76
- sa.id = pu.reward_addr_id
77
- WHERE (pr.id is null or pr.announced_tx_id < pu.registered_tx_id) and
78
- ph.id = ANY($1)
60
+ ON pu.id = (
61
+ SELECT id
62
+ FROM pool_update pu2
63
+ WHERE pu2.hash_id = ph.id
64
+ ORDER BY id DESC
65
+ LIMIT 1
66
+ )
67
+ LEFT JOIN pool_retire pr
68
+ ON pr.id = (
69
+ SELECT id
70
+ FROM pool_retire pr2
71
+ WHERE pr2.hash_id = ph.id
72
+ ORDER BY id desc
73
+ LIMIT 1
74
+ )
75
+ JOIN stake_address sa ON
76
+ sa.id = pu.reward_addr_id
77
+ WHERE (pr.id is null or pr.announced_tx_id < pu.registered_tx_id) and
78
+ ph.id = ANY($1)
79
79
  ),
80
80
  total_rewards_of_reward_acc AS (
81
- SELECT
81
+ SELECT
82
82
  SUM(r.amount) AS amount,
83
83
  pd.pool_hash_id
84
84
  FROM reward r
85
- JOIN pools_delegates pd ON
85
+ JOIN pools_delegates pd ON
86
86
  pd.addr_id = r.addr_id
87
87
  GROUP BY pd.pool_hash_id
88
88
  ),
89
89
  total_withdraws_of_reward_acc AS (
90
- SELECT
90
+ SELECT
91
91
  SUM(w.amount) AS amount,
92
92
  pd.pool_hash_id
93
93
  FROM withdrawal w
94
- JOIN pools_delegates pd ON
95
- pd.addr_id = w.addr_id
94
+ JOIN pools_delegates pd ON
95
+ pd.addr_id = w.addr_id
96
96
  GROUP BY pd.pool_hash_id
97
97
  ),
98
98
  owners_total_utxos AS (
99
99
  SELECT
100
100
  sum(tx_out.value) AS amount,
101
- pu.hash_id
101
+ pu.hash_id
102
102
  FROM tx_out
103
- JOIN pool_owner o ON
103
+ JOIN pool_owner o ON
104
104
  o.addr_id = tx_out.stake_address_id
105
105
  JOIN pool_update pu ON
106
106
  o.pool_update_id = pu.id
107
107
  AND pu.hash_id = ANY($1)
108
- LEFT JOIN tx_in ON
109
- tx_out.tx_id = tx_in.tx_out_id AND
108
+ LEFT JOIN tx_in ON
109
+ tx_out.tx_id = tx_in.tx_out_id AND
110
110
  tx_out.index::smallint = tx_in.tx_out_index::smallint
111
- LEFT JOIN tx AS tx_in_tx ON
111
+ LEFT JOIN tx AS tx_in_tx ON
112
112
  tx_in_tx.id = tx_in.tx_in_id AND
113
- tx_in_tx.valid_contract = TRUE
113
+ tx_in_tx.valid_contract = TRUE
114
114
  JOIN tx AS tx_out_tx ON
115
115
  tx_out_tx.id = tx_out.tx_id AND
116
- tx_out_tx.valid_contract = TRUE
117
- WHERE
116
+ tx_out_tx.valid_contract = TRUE
117
+ WHERE
118
118
  tx_in_tx.id IS null
119
- GROUP BY pu.hash_id
119
+ GROUP BY pu.hash_id
120
120
  ),
121
121
  active_stake AS (
122
- SELECT
122
+ SELECT
123
123
  sum(es.amount) AS active_stake,
124
124
  es.pool_id AS pool_hash_id
125
125
  FROM epoch_stake es
126
- where es.pool_id = ANY($1)
126
+ WHERE es.pool_id = ANY($1)
127
127
  AND es.epoch_no = (SELECT epoch_no FROM current_epoch)
128
- GROUP BY es.pool_id
128
+ GROUP BY es.pool_id
129
129
  ),
130
130
  active_delegations AS (
131
- SELECT
131
+ SELECT
132
132
  d1.addr_id,
133
133
  ph.id AS pool_hash_id
134
134
  FROM pool_hash ph
135
- JOIN delegation d1 on
136
- ph.id = d1.pool_hash_id
135
+ JOIN delegation d1 ON
136
+ ph.id = d1.pool_hash_id
137
137
  WHERE ph.id = ANY($1)
138
138
  AND NOT EXISTS
139
139
  (SELECT TRUE
140
140
  FROM delegation d2
141
- WHERE d2.addr_id=d1.addr_id
141
+ WHERE d2.addr_id=d1.addr_id
142
142
  AND d2.tx_id>d1.tx_id)
143
143
  AND NOT EXISTS
144
144
  (SELECT TRUE
@@ -149,63 +149,63 @@ active_delegations AS (
149
149
  delegators AS (
150
150
  SELECT
151
151
  COUNT(1) AS delegators,
152
- d.pool_hash_id
153
- FROM active_delegations d
154
- GROUP BY d.pool_hash_id
152
+ d.pool_hash_id
153
+ FROM active_delegations d
154
+ GROUP BY d.pool_hash_id
155
155
  ),
156
156
  total_utxos AS (
157
- SELECT
157
+ SELECT
158
158
  COALESCE(SUM(tx_out.value),0) AS total_amount,
159
159
  ad.pool_hash_id
160
- FROM active_delegations ad
161
- JOIN tx_out ON
160
+ FROM active_delegations ad
161
+ JOIN tx_out ON
162
162
  tx_out.stake_address_id = ad.addr_id
163
- LEFT JOIN tx_in ON
164
- tx_out.tx_id = tx_in.tx_out_id AND
165
- tx_out.index::smallint = tx_in.tx_out_index::smallint
166
- LEFT JOIN tx AS tx_in_tx ON
167
- tx_in_tx.id = tx_in.tx_in_id AND
168
- tx_in_tx.valid_contract = TRUE
169
- JOIN tx AS tx_out_tx ON
170
- tx_out_tx.id = tx_out.tx_id AND
171
- tx_out_tx.valid_contract = TRUE
172
- WHERE
173
- tx_in_tx.id IS NULL
163
+ LEFT JOIN tx_in ON
164
+ tx_out.tx_id = tx_in.tx_out_id AND
165
+ tx_out.index::smallint = tx_in.tx_out_index::smallint
166
+ LEFT JOIN tx AS tx_in_tx ON
167
+ tx_in_tx.id = tx_in.tx_in_id AND
168
+ tx_in_tx.valid_contract = TRUE
169
+ JOIN tx AS tx_out_tx ON
170
+ tx_out_tx.id = tx_out.tx_id AND
171
+ tx_out_tx.valid_contract = TRUE
172
+ WHERE
173
+ tx_in_tx.id IS NULL
174
174
  GROUP BY ad.pool_hash_id
175
175
  ),
176
176
  total_rewards AS (
177
- SELECT
177
+ SELECT
178
178
  COALESCE(SUM(r.amount),0) AS total_amount,
179
179
  ad.pool_hash_id
180
- FROM active_delegations ad
181
- JOIN reward r ON
182
- ad.addr_id = r.addr_id
180
+ FROM active_delegations ad
181
+ JOIN reward r ON
182
+ ad.addr_id = r.addr_id
183
183
  WHERE r.spendable_epoch <= (SELECT epoch_no FROM current_epoch)
184
184
  GROUP BY ad.pool_hash_id
185
185
  ),
186
186
  total_withdraws AS (
187
- SELECT
187
+ SELECT
188
188
  COALESCE(SUM(w.amount),0) AS total_amount,
189
189
  ad.pool_hash_id
190
190
  FROM withdrawal w
191
- JOIN tx ON tx.id = w.tx_id AND
191
+ JOIN tx ON tx.id = w.tx_id AND
192
192
  tx.valid_contract = TRUE
193
193
  JOIN active_delegations ad ON ad.addr_id = w.addr_id
194
194
  GROUP BY ad.pool_hash_id
195
195
  ),
196
196
  live_stake AS (
197
- SELECT
197
+ SELECT
198
198
  (total_utxos.total_amount +
199
199
  COALESCE(tr.total_amount,0) -
200
200
  COALESCE(tw.total_amount,0)) AS live_stake,
201
201
  total_utxos.pool_hash_id
202
202
  FROM total_utxos
203
- LEFT JOIN total_rewards tr on
203
+ LEFT JOIN total_rewards tr ON
204
204
  total_utxos.pool_hash_id = tr.pool_hash_id
205
- LEFT JOIN total_withdraws tw on
205
+ LEFT JOIN total_withdraws tw ON
206
206
  total_utxos.pool_hash_id = tw.pool_hash_id
207
207
  )
208
- SELECT
208
+ SELECT
209
209
  COALESCE(bc.blocks_created,0) AS blocks_created,
210
210
  COALESCE(d.delegators,0) AS delegators,
211
211
  COALESCE(a_stake.active_stake,0) AS active_stake,
@@ -213,9 +213,9 @@ SELECT
213
213
  (COALESCE(tr.amount,0) - COALESCE(tw.amount,0) + COALESCE (otu.amount,0))
214
214
  AS live_pledge,
215
215
  CASE
216
- WHEN $2::numeric = 0::numeric
216
+ WHEN $2::numeric = 0::numeric
217
217
  THEN 0::numeric
218
- ELSE
218
+ ELSE
219
219
  (
220
220
  COALESCE(l_stake.live_stake,0::numeric) *
221
221
  ((SELECT optimal_pool_count FROM current_epoch)::NUMERIC) /
@@ -228,165 +228,134 @@ SELECT
228
228
  ELSE
229
229
  (COALESCE(a_stake.active_stake,0)/COALESCE(l_stake.live_stake,0))
230
230
  END AS active_stake_percentage,
231
- ph.id AS pool_hash_id
231
+ ph.id AS pool_hash_id
232
232
  FROM pool_hash ph
233
- LEFT JOIN blocks_created bc on
233
+ LEFT JOIN blocks_created bc ON
234
234
  bc.pool_hash_id = ph.id
235
- LEFT JOIN delegators d on
235
+ LEFT JOIN delegators d ON
236
236
  d.pool_hash_id = ph.id
237
- LEFT JOIN active_stake a_stake on
237
+ LEFT JOIN active_stake a_stake ON
238
238
  a_stake.pool_hash_id = ph.id
239
- LEFT JOIN live_stake l_stake on
239
+ LEFT JOIN live_stake l_stake ON
240
240
  l_stake.pool_hash_id = ph.id
241
241
  LEFT JOIN total_rewards_of_reward_acc AS tr ON
242
- tr.pool_hash_id = ph.id
242
+ tr.pool_hash_id = ph.id
243
243
  LEFT JOIN total_withdraws_of_reward_acc AS tw ON
244
- tw.pool_hash_id = ph.id
245
- LEFT JOIN owners_total_utxos otu on
246
- otu.hash_id = ph.id
247
- where id = ANY($1)
244
+ tw.pool_hash_id = ph.id
245
+ LEFT JOIN owners_total_utxos otu ON
246
+ otu.hash_id = ph.id
247
+ WHERE id = ANY($1)
248
248
  `;
249
- const epochRewardsSubqueries = (limit) => `
249
+ const epochRewardsSubqueries = (epochLength, limit) => `
250
250
  WITH epochs AS (
251
- SELECT
252
- "no" AS epoch_no,
253
- (extract(epoch FROM (end_time - start_time)) * 1000) AS epoch_length
254
- FROM epoch
255
- ORDER BY no DESC
251
+ SELECT
252
+ "no" AS epoch_no,
253
+ CASE
254
+ WHEN "no" = (SELECT MAX("no") FROM epoch)
255
+ THEN EXTRACT(EPOCH FROM (end_time - start_time)) * 1000
256
+ ELSE
257
+ ${epochLength}
258
+ END AS epoch_length
259
+ FROM epoch
260
+ ORDER BY no DESC
256
261
  ${limit !== undefined ? `LIMIT ${limit}` : ''}
257
262
  ),
263
+ pool_mixed_rewards_per_epoch AS (
264
+ SELECT
265
+ reward.pool_id AS hash_id,
266
+ epochs.epoch_no,
267
+ reward.type,
268
+ SUM(reward.amount) AS amount
269
+ FROM epochs
270
+ JOIN reward
271
+ ON reward.earned_epoch = epochs.epoch_no
272
+ AND reward.pool_id = ANY($1)
273
+ WHERE reward.type IN ('leader', 'member')
274
+ GROUP BY reward.pool_id, epochs.epoch_no, reward.type
275
+ ),
258
276
  pool_rewards_per_epoch AS (
259
- SELECT
260
- reward.pool_id AS hash_id,
261
- epochs.epoch_no,
262
- SUM(reward.amount) AS total_amount
263
- FROM epochs
264
- JOIN reward
265
- ON reward.spendable_epoch = epochs.epoch_no
266
- AND reward.pool_id = ANY($1)
267
- WHERE reward.type = 'member'
268
- GROUP BY reward.pool_id, epochs.epoch_no
277
+ SELECT
278
+ leader.hash_id,
279
+ leader.epoch_no,
280
+ leader.amount AS leader_rewards,
281
+ member.amount AS member_rewards
282
+ FROM pool_mixed_rewards_per_epoch AS leader
283
+ JOIN pool_mixed_rewards_per_epoch AS member
284
+ ON leader.hash_id = member.hash_id
285
+ AND leader.epoch_no = member.epoch_no
286
+ WHERE leader.type = 'leader'
287
+ AND member.type = 'member'
269
288
  ),
270
289
  pool_stake_per_epoch AS (
271
- SELECT
272
- epoch_stake.pool_id AS hash_id,
273
- epochs.epoch_no,
290
+ SELECT
291
+ epoch_stake.pool_id AS hash_id,
292
+ epochs.epoch_no,
274
293
  SUM(epoch_stake.amount) AS active_stake
275
- FROM epochs
276
- JOIN epoch_stake
277
- ON epoch_stake.epoch_no = epochs.epoch_no
278
- AND epoch_stake.pool_id = ANY($1)
279
- GROUP BY epoch_stake.pool_id, epochs.epoch_no
294
+ FROM epochs
295
+ JOIN epoch_stake
296
+ ON epoch_stake.epoch_no = epochs.epoch_no
297
+ AND epoch_stake.pool_id = ANY($1)
298
+ GROUP BY epoch_stake.pool_id, epochs.epoch_no
280
299
  ),
281
300
  epoch_rewards AS (
282
- SELECT
283
- epochs.epoch_no,
284
- epochs.epoch_length,
285
- stake.hash_id,
286
- COALESCE(rewards.total_amount, 0) AS total_rewards,
287
- COALESCE(stake.active_stake, 0) AS active_stake,
288
- CASE
289
- WHEN pool.fixed_cost >= rewards.total_amount
290
- THEN COALESCE(rewards.total_amount, 0)
291
- ELSE (
292
- COALESCE(
293
- FLOOR((rewards.total_amount - pool.fixed_cost) * pool.margin) + pool.fixed_cost
294
- , 0)
295
- )
296
- END AS operator_fees,
297
- CASE
298
- WHEN COALESCE(stake.active_stake, 0) = 0
299
- THEN 0
300
- WHEN pool.fixed_cost >= rewards.total_amount
301
- THEN (
302
- COALESCE(
303
- (rewards.total_amount - COALESCE(rewards.total_amount, 0)) / stake.active_stake
304
- , 0)
305
- )
306
- ELSE (
307
- COALESCE(
308
- (rewards.total_amount -
309
- COALESCE(
310
- FLOOR((rewards.total_amount - pool.fixed_cost) * pool.margin) + pool.fixed_cost
311
- , 0)) / stake.active_stake
312
- , 0)
313
- ) END AS member_roi
314
- FROM pool_stake_per_epoch AS stake
315
- JOIN epochs
316
- ON epochs.epoch_no = stake.epoch_no
301
+ SELECT
302
+ epochs.epoch_no,
303
+ epochs.epoch_length,
304
+ stake.hash_id,
305
+ COALESCE(rewards.leader_rewards, 0) AS leader_rewards,
306
+ COALESCE(rewards.member_rewards, 0) AS member_rewards,
307
+ COALESCE(stake.active_stake, 0) AS active_stake,
308
+ pool.pledge,
309
+ COALESCE(rewards.member_rewards / NULLIF(stake.active_stake - pool.pledge, 0), 0)::DOUBLE PRECISION AS member_roi
310
+ FROM pool_stake_per_epoch AS stake
311
+ JOIN epochs
312
+ ON epochs.epoch_no = stake.epoch_no
317
313
  LEFT JOIN pool_rewards_per_epoch AS rewards
318
- ON rewards.epoch_no = stake.epoch_no
319
- AND rewards.hash_id = stake.hash_id
314
+ ON rewards.epoch_no = stake.epoch_no
315
+ AND rewards.hash_id = stake.hash_id
320
316
  JOIN pool_update AS pool
321
317
  ON pool.id = (
322
318
  SELECT id
323
319
  FROM pool_update
324
- WHERE hash_id = stake.hash_id
320
+ WHERE hash_id = stake.hash_id
325
321
  AND active_epoch_no <= epochs.epoch_no
326
322
  ORDER BY id DESC
327
323
  LIMIT 1
328
324
  )
329
325
  )`;
330
- const findPoolEpochRewards = (limit) => `
331
- ${epochRewardsSubqueries(limit)}
332
- SELECT
333
- epoch_no,
334
- epoch_length::TEXT,
335
- hash_id,
336
- total_rewards,
337
- active_stake,
338
- operator_fees,
339
- member_roi
340
- FROM epoch_rewards
341
- ORDER BY epoch_no desc
326
+ const findPoolEpochRewards = (epochLength, limit) => `
327
+ ${epochRewardsSubqueries(epochLength, limit)}
328
+ SELECT
329
+ active_stake,
330
+ epoch_length::TEXT,
331
+ epoch_no,
332
+ hash_id,
333
+ leader_rewards,
334
+ member_rewards,
335
+ member_roi,
336
+ pledge
337
+ FROM epoch_rewards
338
+ ORDER BY epoch_no desc
342
339
  `;
343
340
  exports.findPoolEpochRewards = findPoolEpochRewards;
344
- const findPoolAPY = (limit) => `
345
- ${epochRewardsSubqueries(limit)},
346
- avg_daily_roi AS (
347
- SELECT
348
- hash_id,
349
- SUM(COALESCE(member_roi / NULLIF(epoch_length / 86400000, 0.0), 0.0)) / count(1) AS avg_roi
350
- FROM epoch_rewards
351
- GROUP BY hash_id
352
- ),
353
- pool_apy AS (
354
- SELECT
355
- epochs.hash_id,
356
- (
357
- LEAST(
358
- POWER(
359
- (
360
- 1 + (
361
- avg_daily_roi.avg_roi * (epochs.epoch_length / 86400000)
362
- )
363
- ):: numeric,
364
- COALESCE(
365
- 365 / NULLIF(epochs.epoch_length / 86400000, 0),
366
- 0
367
- ):: numeric
368
- ),
369
- 1E+308
370
- ) -1
371
- ):: double precision AS apy
372
- FROM epoch_rewards AS epochs
373
- JOIN (
374
- SELECT
375
- hash_id,
376
- MAX(epoch_no) AS epoch_no
377
- FROM epoch_rewards AS sub
378
- GROUP BY hash_id
379
- ) AS max_epoch
380
- ON max_epoch.epoch_no = epochs.epoch_no
381
- AND max_epoch.hash_id = epochs.hash_id
382
- JOIN avg_daily_roi
383
- ON avg_daily_roi.hash_id = epochs.hash_id
384
- )
385
- SELECT * FROM pool_apy
341
+ const findPoolAPY = (epochLength, limit) => `
342
+ ${epochRewardsSubqueries(epochLength, limit)}
343
+ SELECT
344
+ hash_id,
345
+ COALESCE(
346
+ (SUM(member_rewards) / NULLIF(SUM(active_stake) - SUM(pledge), 0)) /
347
+ NULLIF(${epochLength} / 86400000, 0) * 365,
348
+ 0
349
+ )::DOUBLE PRECISION AS apy
350
+ FROM epoch_rewards
351
+ WHERE
352
+ epoch_no < (SELECT MAX("no") - 1 FROM epoch)
353
+ GROUP BY
354
+ hash_id
386
355
  `;
387
356
  exports.findPoolAPY = findPoolAPY;
388
357
  exports.findPools = `
389
- SELECT
358
+ SELECT
390
359
  ph.id,
391
360
  pu.id AS update_id
392
361
  FROM pool_hash ph
@@ -409,23 +378,23 @@ SELECT
409
378
  dns_name,
410
379
  dns_srv_name AS hostname --fixme: check this is correct
411
380
  FROM pool_relay
412
- JOIN pool_update
381
+ JOIN pool_update
413
382
  ON pool_relay.update_id = pool_update.id
414
383
  WHERE update_id = ANY($1)
415
384
  `;
416
385
  exports.findPoolsOwners = `
417
- SELECT
418
- address."view" AS address,
419
- pool_update.hash_id AS hash_id
386
+ SELECT
387
+ address."view" AS address,
388
+ pool_update.hash_id AS hash_id
420
389
  FROM pool_owner AS "owner"
421
390
  JOIN pool_update
422
- ON "owner".pool_update_id = pool_update.id
391
+ ON "owner".pool_update_id = pool_update.id
423
392
  JOIN stake_address AS address
424
- ON "owner".addr_id = address.id
393
+ ON "owner".addr_id = address.id
425
394
  WHERE pool_update.id = ANY($1)
426
395
  `;
427
396
  exports.findPoolsRegistrations = `
428
- SELECT
397
+ SELECT
429
398
  tx.hash AS tx_hash,
430
399
  pu.hash_id AS hash_id,
431
400
  active_epoch_no
@@ -436,7 +405,7 @@ WHERE pu.hash_id = ANY($1)
436
405
  ORDER BY pu.id DESC
437
406
  `;
438
407
  exports.findPoolsRetirements = `
439
- SELECT
408
+ SELECT
440
409
  tx.hash AS tx_hash,
441
410
  pr.hash_id AS hash_id,
442
411
  retiring_epoch
@@ -449,14 +418,14 @@ exports.poolsByPledgeMetSubqueries = [
449
418
  {
450
419
  id: { name: 'pools_delegated' },
451
420
  query: `
452
- SELECT
421
+ SELECT
453
422
  ph.id,
454
423
  ph.view,
455
424
  pu.id AS update_id,
456
425
  pu.active_epoch_no,
457
426
  pu.pledge,
458
427
  sa.id AS stake_address_id
459
- FROM pool_hash ph
428
+ FROM pool_hash ph
460
429
  JOIN pool_update pu
461
430
  ON pu.id = (
462
431
  SELECT id
@@ -464,15 +433,15 @@ exports.poolsByPledgeMetSubqueries = [
464
433
  WHERE pu2.hash_id = ph.id
465
434
  ORDER BY id DESC
466
435
  LIMIT 1
467
- )
436
+ )
468
437
  JOIN stake_address sa ON
469
- sa.id = pu.reward_addr_id
470
- JOIN delegation d1 on
471
- sa.id = d1.addr_id
438
+ sa.id = pu.reward_addr_id
439
+ LEFT JOIN delegation d1 ON
440
+ sa.id = d1.addr_id
472
441
  WHERE NOT EXISTS
473
442
  (SELECT TRUE
474
443
  FROM delegation d2
475
- WHERE d2.addr_id=d1.addr_id
444
+ WHERE d2.addr_id=d1.addr_id
476
445
  AND d2.tx_id>d1.tx_id)
477
446
  AND NOT EXISTS
478
447
  (SELECT TRUE
@@ -484,12 +453,12 @@ exports.poolsByPledgeMetSubqueries = [
484
453
  {
485
454
  id: { name: 'pool_owner_rewards' },
486
455
  query: `
487
- SELECT
456
+ SELECT
488
457
  COALESCE(SUM(r.amount),0) AS total_amount,
489
458
  sa.id AS stake_address_id,
490
459
  r.pool_id
491
460
  FROM reward r
492
- JOIN stake_address sa ON
461
+ JOIN stake_address sa ON
493
462
  sa.id = r.addr_id
494
463
  WHERE sa.id in (SELECT stake_address_id FROM pools_delegated) and
495
464
  r.spendable_epoch <= (SELECT "no" FROM current_epoch)
@@ -497,65 +466,65 @@ exports.poolsByPledgeMetSubqueries = [
497
466
  },
498
467
  {
499
468
  id: { name: 'pool_owner_withdraws' },
500
- query: `
501
- SELECT
469
+ query: `
470
+ SELECT
502
471
  COALESCE(SUM(w.amount),0) AS total_amount,
503
472
  sa.id AS stake_address_id
504
473
  FROM withdrawal w
505
- JOIN tx ON tx.id = w.tx_id AND
474
+ JOIN tx ON tx.id = w.tx_id AND
506
475
  tx.valid_contract = TRUE
507
476
  JOIN stake_address sa ON sa.id = w.addr_id
508
- JOIN pools_delegated pool on pool.stake_address_id = sa.id
477
+ JOIN pools_delegated pool ON pool.stake_address_id = sa.id
509
478
  GROUP BY sa.id`
510
479
  },
511
480
  {
512
481
  id: { name: 'reward_acc_balance' },
513
482
  query: `
514
- SELECT
483
+ SELECT
515
484
  (r.total_amount - w.total_amount) AS total_amount,
516
485
  r.stake_address_id,
517
- r.pool_id
486
+ r.pool_id
518
487
  FROM pool_owner_rewards r
519
- JOIN pool_owner_withdraws w
520
- on r.stake_address_id = w.stake_address_id `
488
+ JOIN pool_owner_withdraws w
489
+ ON r.stake_address_id = w.stake_address_id `
521
490
  },
522
491
  {
523
492
  id: { name: 'owners_utxo' },
524
493
  query: `
525
494
  SELECT
526
495
  tx_out.value AS value,
527
- pu.hash_id
496
+ pu.hash_id
528
497
  FROM tx_out
529
- JOIN pool_owner o ON
498
+ JOIN pool_owner o ON
530
499
  o.addr_id = tx_out.stake_address_id
531
500
  JOIN pool_update pu ON
532
501
  o.pool_update_id = pu.id
533
502
  AND pu.hash_id IN (SELECT id FROM pools_delegated)
534
- LEFT JOIN tx_in ON
535
- tx_out.tx_id = tx_in.tx_out_id AND
503
+ LEFT JOIN tx_in ON
504
+ tx_out.tx_id = tx_in.tx_out_id AND
536
505
  tx_out.index::smallint = tx_in.tx_out_index::smallint
537
- LEFT JOIN tx AS tx_in_tx ON
506
+ LEFT JOIN tx AS tx_in_tx ON
538
507
  tx_in_tx.id = tx_in.tx_in_id AND
539
508
  tx_in_tx.valid_contract = TRUE
540
509
  JOIN tx AS tx_out_tx ON
541
510
  tx_out_tx.id = tx_out.tx_id AND
542
511
  tx_out_tx.valid_contract = TRUE
543
- WHERE
512
+ WHERE
544
513
  tx_in_tx.id IS NULL`
545
514
  },
546
515
  {
547
516
  id: { name: 'owners_balance' },
548
517
  query: `
549
- SELECT
518
+ SELECT
550
519
  SUM(value) AS total_amount,
551
520
  hash_id AS pool_hash_id
552
- FROM owners_utxo
521
+ FROM owners_utxo
553
522
  GROUP BY hash_id`
554
523
  }
555
524
  ];
556
525
  exports.POOLS_WITH_PLEDGE_MET = {
557
526
  JOIN_CLAUSE: `
558
- LEFT JOIN owners_balance o_balance ON
527
+ LEFT JOIN owners_balance o_balance ON
559
528
  ph.id = o_balance.pool_hash_id
560
529
  LEFT JOIN reward_acc_balance r_balance ON
561
530
  r_balance.pool_id = ph.id`,
@@ -564,19 +533,19 @@ exports.POOLS_WITH_PLEDGE_MET = {
564
533
  ph.id,
565
534
  ph.update_id
566
535
  FROM pools_delegated AS ph`,
567
- WHERE_CLAUSE: (metPledge) => `
536
+ WHERE_CLAUSE: (metPledge) => `
568
537
  ((COALESCE(o_balance.total_amount,0) +
569
- COALESCE (r_balance.total_amount, 0))
538
+ COALESCE (r_balance.total_amount, 0))
570
539
  ${metPledge ? ' >=' : '<'} ph.pledge)`,
571
- WITH_CLAUSE: `WITH
540
+ WITH_CLAUSE: `WITH
572
541
  current_epoch AS (${exports.findLastEpoch}),
573
542
  ${exports.poolsByPledgeMetSubqueries.map((subQuery) => `${subQuery.id.name} AS (${subQuery.query})`).join(', ')}
574
543
  `
575
544
  };
576
545
  const findPoolsWithPledgeMet = (metPledge) => `
577
- ${exports.POOLS_WITH_PLEDGE_MET.WITH_CLAUSE}
578
- ${exports.POOLS_WITH_PLEDGE_MET.SELECT_CLAUSE}
579
- ${exports.POOLS_WITH_PLEDGE_MET.JOIN_CLAUSE}
546
+ ${exports.POOLS_WITH_PLEDGE_MET.WITH_CLAUSE}
547
+ ${exports.POOLS_WITH_PLEDGE_MET.SELECT_CLAUSE}
548
+ ${exports.POOLS_WITH_PLEDGE_MET.JOIN_CLAUSE}
580
549
  WHERE ${exports.POOLS_WITH_PLEDGE_MET.WHERE_CLAUSE(metPledge)}`;
581
550
  exports.findPoolsWithPledgeMet = findPoolsWithPledgeMet;
582
551
  exports.STATUS_QUERY = {
@@ -593,25 +562,25 @@ exports.STATUS_QUERY = {
593
562
  ORDER BY id DESC
594
563
  LIMIT 1
595
564
  )
596
- LEFT JOIN pool_retire pr
565
+ LEFT JOIN pool_retire pr
597
566
  ON pr.id = (
598
567
  SELECT id
599
568
  FROM pool_retire pr2
600
569
  WHERE pr2.hash_id = ph.id
601
- ORDER BY id desc
570
+ ORDER BY id desc
602
571
  LIMIT 1
603
572
  )
604
573
  `,
605
- WITH_CLAUSE: `WITH
574
+ WITH_CLAUSE: `WITH
606
575
  current_epoch AS (${exports.findLastEpoch})`
607
576
  };
608
577
  exports.IDENTIFIER_QUERY = {
609
578
  JOIN_CLAUSE: {
610
- OFFLINE_METADATA: `
611
- LEFT JOIN pool_offline_data pod
579
+ OFFLINE_METADATA: `
580
+ LEFT JOIN pool_offline_data pod
612
581
  ON pod.pool_id = ph.id
613
582
  `,
614
- POOL_UPDATE: `
583
+ POOL_UPDATE: `
615
584
  JOIN pool_update pu
616
585
  ON pu.id = (
617
586
  SELECT id
@@ -622,18 +591,18 @@ exports.IDENTIFIER_QUERY = {
622
591
  )`
623
592
  },
624
593
  SELECT_CLAUSE: `
625
- SELECT
594
+ SELECT
626
595
  ph.id,
627
596
  pu.id AS update_id
628
- FROM pool_hash ph
597
+ FROM pool_hash ph
629
598
  `
630
599
  };
631
600
  const getIdentifierFullJoinClause = () => `
632
- ${exports.IDENTIFIER_QUERY.JOIN_CLAUSE.POOL_UPDATE}
601
+ ${exports.IDENTIFIER_QUERY.JOIN_CLAUSE.POOL_UPDATE}
633
602
  ${exports.IDENTIFIER_QUERY.JOIN_CLAUSE.OFFLINE_METADATA}`;
634
603
  exports.getIdentifierFullJoinClause = getIdentifierFullJoinClause;
635
604
  exports.findPoolsData = `
636
- SELECT
605
+ SELECT
637
606
  pu.hash_id,
638
607
  ph.hash_raw AS pool_hash,
639
608
  pu.id AS update_id,
@@ -644,12 +613,11 @@ SELECT
644
613
  pu.fixed_cost,
645
614
  pu.margin,
646
615
  pu.vrf_key_hash,
647
- metadata.url AS metadata_url,
616
+ metadata.url AS metadata_url,
648
617
  metadata.hash AS metadata_hash,
649
- pod.json AS offline_data,
650
- pod.json -> 'name' AS name
618
+ pod.json AS offline_data
651
619
  FROM pool_update pu
652
- JOIN pool_hash ph ON
620
+ JOIN pool_hash ph ON
653
621
  ph.id = pu.hash_id
654
622
  JOIN stake_address sa ON
655
623
  sa.id = pu.reward_addr_id
@@ -692,16 +660,16 @@ const getStatusWhereClause = (status, columns) => {
692
660
  const whereClause = [];
693
661
  const activeEpochColumn = columns?.activeEpoch || 'pu.active_epoch_no';
694
662
  if (status.includes(core_1.Cardano.StakePoolStatus.Retiring))
695
- whereClause.push(`(COALESCE(pr.retiring_epoch,0) > (SELECT "no" FROM current_epoch)
663
+ whereClause.push(`(COALESCE(pr.retiring_epoch,0) > (SELECT "no" FROM current_epoch)
696
664
  AND COALESCE(pr.retiring_epoch,0) > ${activeEpochColumn})`);
697
665
  if (status.includes(core_1.Cardano.StakePoolStatus.Retired))
698
- whereClause.push(`(COALESCE(pr.retiring_epoch,0) <= (SELECT "no" FROM current_epoch)
666
+ whereClause.push(`(COALESCE(pr.retiring_epoch,0) <= (SELECT "no" FROM current_epoch)
699
667
  AND COALESCE(pr.retiring_epoch,0) > ${activeEpochColumn})`);
700
668
  if (status.includes(core_1.Cardano.StakePoolStatus.Activating))
701
- whereClause.push(`(${activeEpochColumn} > (SELECT "no" FROM current_epoch)
669
+ whereClause.push(`(${activeEpochColumn} > (SELECT "no" FROM current_epoch)
702
670
  AND COALESCE(pr.retiring_epoch,0) <= ${activeEpochColumn})`);
703
671
  if (status.includes(core_1.Cardano.StakePoolStatus.Active))
704
- whereClause.push(`(${activeEpochColumn} <= (SELECT "no" FROM current_epoch)
672
+ whereClause.push(`(${activeEpochColumn} <= (SELECT "no" FROM current_epoch)
705
673
  AND COALESCE(pr.retiring_epoch,0) < ${activeEpochColumn})`);
706
674
  return `(${whereClause.join(' OR ')})`;
707
675
  };
@@ -728,7 +696,7 @@ const buildOrQueryFromClauses = (clauses) => {
728
696
  });
729
697
  const primarySubQueries = clauses.filter((clause) => clause.id.isPrimary);
730
698
  return `
731
- WITH ${uniqueClauses.map(({ id, query }) => `${id.name} AS (${query})`).join(', ')}
699
+ WITH ${uniqueClauses.map(({ id, query }) => `${id.name} AS (${query})`).join(', ')}
732
700
  SELECT id, update_id
733
701
  FROM
734
702
  (${primarySubQueries.map((subQuery) => `SELECT id, update_id FROM ${subQuery.id.name}`).join(' UNION ')})
@@ -739,68 +707,68 @@ const buildOrQueryFromClauses = (clauses) => {
739
707
  };
740
708
  exports.buildOrQueryFromClauses = buildOrQueryFromClauses;
741
709
  const getTotalCountQueryFromQuery = (query) => `
742
- SELECT
710
+ SELECT
743
711
  COUNT(1) AS total_count
744
- FROM (${query}) as query
712
+ FROM (${query}) AS query
745
713
  `;
746
714
  exports.getTotalCountQueryFromQuery = getTotalCountQueryFromQuery;
747
715
  exports.findPoolStats = `
748
716
  WITH current_epoch AS (
749
- SELECT max(epoch_no) AS epoch_no
750
- FROM block
717
+ SELECT MAX(epoch_no) AS epoch_no
718
+ FROM block
751
719
  ),
752
720
  last_pool_update AS (
753
- SELECT
754
- pool_update.hash_id,
755
- pool_update.registered_tx_id,
756
- pool_update.active_epoch_no
757
- FROM pool_update
758
- JOIN (
759
- SELECT hash_id, max(registered_tx_id) AS tx_id
760
- FROM pool_update
761
- WHERE active_epoch_no <= (SELECT epoch_no FROM current_epoch)
762
- GROUP BY hash_id
763
- ) AS last_update ON pool_update.hash_id = last_update.hash_id
764
- AND pool_update.registered_tx_id = last_update.tx_id
721
+ SELECT
722
+ pool_update.hash_id,
723
+ pool_update.registered_tx_id,
724
+ pool_update.active_epoch_no
725
+ FROM pool_update
726
+ JOIN (
727
+ SELECT hash_id, MAX(registered_tx_id) AS tx_id
728
+ FROM pool_update
729
+ WHERE active_epoch_no <= (SELECT epoch_no FROM current_epoch)
730
+ GROUP BY hash_id
731
+ ) AS last_update ON pool_update.hash_id = last_update.hash_id
732
+ AND pool_update.registered_tx_id = last_update.tx_id
765
733
  ),
766
734
  last_pool_retire AS (
767
- SELECT
768
- pool_retire.hash_id,
769
- max(pool_retire.announced_tx_id) AS announced_tx_id,
770
- pool_retire.retiring_epoch FROM pool_retire
771
- JOIN (
772
- SELECT hash_id, max(retiring_epoch) AS epoch
773
- FROM pool_retire
774
- GROUP BY hash_id
775
- ) AS last_retired ON pool_retire.hash_id = last_retired.hash_id
776
- AND pool_retire.retiring_epoch = last_retired.epoch
777
- GROUP BY pool_retire.hash_id, pool_retire.retiring_epoch
735
+ SELECT
736
+ pool_retire.hash_id,
737
+ MAX(pool_retire.announced_tx_id) AS announced_tx_id,
738
+ pool_retire.retiring_epoch FROM pool_retire
739
+ JOIN (
740
+ SELECT hash_id, MAX(retiring_epoch) AS epoch
741
+ FROM pool_retire
742
+ GROUP BY hash_id
743
+ ) AS last_retired ON pool_retire.hash_id = last_retired.hash_id
744
+ AND pool_retire.retiring_epoch = last_retired.epoch
745
+ GROUP BY pool_retire.hash_id, pool_retire.retiring_epoch
778
746
  )
779
- SELECT
780
- count(
781
- CASE WHEN pool_retire.hash_id IS NULL
782
- OR (
783
- pool_update.active_epoch_no > pool_retire.retiring_epoch
784
- AND pool_retire.retiring_epoch <= (SELECT epoch_no FROM current_epoch)
785
- ) THEN 1 ELSE NULL END) AS active,
786
- count(
787
- CASE WHEN pool_retire.hash_id IS NOT NULL
788
- AND (
789
- pool_update.active_epoch_no <= pool_retire.retiring_epoch
790
- AND pool_retire.retiring_epoch <= (SELECT epoch_no FROM current_epoch)
791
- ) THEN 1 ELSE NULL END) AS retired,
792
- count(
793
- CASE WHEN pool_retire.hash_id IS NOT NULL
794
- AND (
795
- pool_update.active_epoch_no <= pool_retire.retiring_epoch
796
- AND pool_retire.retiring_epoch > (SELECT epoch_no FROM current_epoch)
797
- ) THEN 1 ELSE NULL END) AS retiring
798
- FROM last_pool_update AS pool_update
799
- LEFT JOIN last_pool_retire AS pool_retire
800
- ON pool_update.hash_id = pool_retire.hash_id`;
747
+ SELECT
748
+ COUNT(
749
+ CASE WHEN pool_retire.hash_id IS NULL
750
+ OR (
751
+ pool_update.active_epoch_no > pool_retire.retiring_epoch
752
+ AND pool_retire.retiring_epoch <= (SELECT epoch_no FROM current_epoch)
753
+ ) THEN 1 ELSE NULL END) AS active,
754
+ COUNT(
755
+ CASE WHEN pool_retire.hash_id IS NOT NULL
756
+ AND (
757
+ pool_update.active_epoch_no <= pool_retire.retiring_epoch
758
+ AND pool_retire.retiring_epoch <= (SELECT epoch_no FROM current_epoch)
759
+ ) THEN 1 ELSE NULL END) AS retired,
760
+ COUNT(
761
+ CASE WHEN pool_retire.hash_id IS NOT NULL
762
+ AND (
763
+ pool_update.active_epoch_no <= pool_retire.retiring_epoch
764
+ AND pool_retire.retiring_epoch > (SELECT epoch_no FROM current_epoch)
765
+ ) THEN 1 ELSE NULL END) AS retiring
766
+ FROM last_pool_update AS pool_update
767
+ LEFT JOIN last_pool_retire AS pool_retire
768
+ ON pool_update.hash_id = pool_retire.hash_id`;
801
769
  const sortFieldMapping = {
802
770
  cost: { field: 'fixed_cost', secondary: ['margin'] },
803
- name: { field: "lower((pod.json -> 'name')::TEXT)" }
771
+ name: { field: "lower((pod.json ->> 'name')::TEXT)" }
804
772
  };
805
773
  const mapSort = (sort) => {
806
774
  if (!sort)