@@ -318,57 +318,67 @@ export const fetchDrepVoteDetails = async (dRepId: string, isScript?: boolean) =
318
318
}
319
319
320
320
const result = ( await prisma . $queryRaw `
321
- WITH DrepVoteDetails
322
- as (SELECT DISTINCT
323
- ON (gp.id, voting_procedure.drep_voter) concat(encode(gov_action_tx.hash, 'hex'), '#', gp.index) as govActionId,
324
- gov_action_metadata.title as title,
325
- voting_procedure.vote::text as voteType,
326
- voting_anchor.url as voteAnchorUrl,
327
- encode(voting_anchor.data_hash, 'hex') as voteAnchorHash,
328
- block.epoch_no as epochNo,
329
- block.time as time,
330
- encode(vote_tx.hash, 'hex') as voteTxHash,
331
- gp.type as govActionType
321
+ WITH TimeOrderedDrepVoteDetails AS (
322
+ SELECT DISTINCT
323
+ ON (vote_tx.id, gp.id, voting_procedure.drep_voter)
324
+ concat(encode(gov_action_tx.hash, 'hex'), '#', gp.index) AS govActionId,
325
+ gov_action_metadata.title AS title,
326
+ voting_procedure.vote::text AS voteType,
327
+ voting_anchor.url AS voteAnchorUrl,
328
+ encode(voting_anchor.data_hash, 'hex') AS voteAnchorHash,
329
+ block.epoch_no AS epochNo,
330
+ block.time AS time,
331
+ encode(vote_tx.hash, 'hex') AS voteTxHash,
332
+ gp.type AS govActionType
332
333
FROM voting_procedure
333
334
JOIN gov_action_proposal AS gp
334
- ON gp.id = voting_procedure.gov_action_proposal_id
335
+ ON gp.id = voting_procedure.gov_action_proposal_id
335
336
JOIN drep_hash
336
- ON drep_hash.id = voting_procedure.drep_voter
337
+ ON drep_hash.id = voting_procedure.drep_voter
337
338
LEFT JOIN voting_anchor
338
- ON voting_anchor.id = voting_procedure.voting_anchor_id
339
+ ON voting_anchor.id = voting_procedure.voting_anchor_id
339
340
JOIN tx AS gov_action_tx
340
- ON gov_action_tx.id = gp.tx_id
341
+ ON gov_action_tx.id = gp.tx_id
341
342
JOIN tx AS vote_tx
342
- ON vote_tx.id = voting_procedure.tx_id
343
+ ON vote_tx.id = voting_procedure.tx_id
343
344
JOIN block
344
- ON block.id = vote_tx.block_id
345
+ ON block.id = vote_tx.block_id
345
346
LEFT JOIN off_chain_vote_data
346
- ON off_chain_vote_data.voting_anchor_id = gp.voting_anchor_id
347
+ ON off_chain_vote_data.voting_anchor_id = gp.voting_anchor_id
347
348
LEFT JOIN off_chain_vote_gov_action_data AS gov_action_metadata
348
- ON gov_action_metadata.off_chain_vote_data_id = off_chain_vote_data.id
349
- WHERE drep_hash.raw = decode(${ dRepId }
350
- , 'hex')
351
- AND (drep_hash.has_script = ${ scriptPart [ 0 ] }
352
- OR drep_hash.has_script= ${ scriptPart [ 1 ] } )
353
- ORDER BY gp.id, voting_procedure.drep_voter, block.time, voting_procedure.id DESC),
354
- TimeOrderedDrepVoteDetails as (
355
- select *
356
- from DrepVoteDetails
357
- order by DrepVoteDetails.time desc)
358
- SELECT json_agg(
359
- json_build_object(
360
- 'govActionId', TimeOrderedDrepVoteDetails.govActionId,
361
- 'title', TimeOrderedDrepVoteDetails.title,
362
- 'voteType', TimeOrderedDrepVoteDetails.voteType,
363
- 'voteAnchorUrl', TimeOrderedDrepVoteDetails.voteAnchorUrl,
364
- 'voteAnchorHash', TimeOrderedDrepVoteDetails.voteAnchorHash,
365
- 'epochNo', TimeOrderedDrepVoteDetails.epochNo,
366
- 'time', TimeOrderedDrepVoteDetails.time,
367
- 'voteTxHash', TimeOrderedDrepVoteDetails.voteTxHash,
368
- 'govActionType', TimeOrderedDrepVoteDetails.govActionType
369
- )
370
- ) AS votes
371
- from TimeOrderedDrepVoteDetails
349
+ ON gov_action_metadata.off_chain_vote_data_id = off_chain_vote_data.id
350
+ WHERE drep_hash.raw = decode(${ dRepId } , 'hex')
351
+ AND (drep_hash.has_script = ${ scriptPart [ 0 ] } OR drep_hash.has_script = ${ scriptPart [ 1 ] } )
352
+ ORDER BY vote_tx.id DESC, gp.id, voting_procedure.drep_voter, block.time, voting_procedure.id DESC
353
+ ),
354
+ GroupedVoteDetails AS (
355
+ SELECT DISTINCT ON (govActionId)
356
+ govActionId,
357
+ title,
358
+ voteType,
359
+ voteAnchorUrl,
360
+ voteAnchorHash,
361
+ epochNo,
362
+ time,
363
+ voteTxHash,
364
+ govActionType
365
+ FROM TimeOrderedDrepVoteDetails
366
+ ORDER BY govActionId, voteTxHash DESC
367
+ )
368
+ SELECT json_agg(
369
+ json_build_object(
370
+ 'govActionId', GroupedVoteDetails.govActionId,
371
+ 'title', GroupedVoteDetails.title,
372
+ 'voteType', GroupedVoteDetails.voteType,
373
+ 'voteAnchorUrl', GroupedVoteDetails.voteAnchorUrl,
374
+ 'voteAnchorHash', GroupedVoteDetails.voteAnchorHash,
375
+ 'epochNo', GroupedVoteDetails.epochNo,
376
+ 'time', GroupedVoteDetails.time,
377
+ 'voteTxHash', GroupedVoteDetails.voteTxHash,
378
+ 'govActionType', GroupedVoteDetails.govActionType
379
+ )
380
+ ) AS votes
381
+ from GroupedVoteDetails
372
382
` ) as Record < any , any > [ ]
373
383
return result [ 0 ] . votes
374
384
}
0 commit comments