@@ -13,10 +13,14 @@ def execute
1313 raise AddressNotFoundError if address . is_a? ( NullAddress )
1414
1515 address_id = address . map ( &:id )
16- account_books = AccountBook . where ( address_id :) . order ( "ckb_transaction_id desc" ) . select ( :ckb_transaction_id ) . distinct . limit ( Settings . query_default_limit )
17- records = CkbTransaction . where ( tx_status : :committed , id : account_books . map ( &:ckb_transaction_id ) ) . order ( transactions_ordering ) . page ( page ) . per ( page_size )
16+ account_books = AccountBook . tx_committed . where ( address_id :) .
17+ order ( "block_number desc, tx_index desc" ) .
18+ select ( :ckb_transaction_id , :block_number , :tx_index ) .
19+ distinct .
20+ limit ( Settings . query_default_limit )
21+ records = CkbTransaction . includes ( :account_books ) . where ( id : account_books . map ( &:ckb_transaction_id ) ) . select ( select_fields ) . order ( transactions_ordering ) . page ( page ) . per ( page_size )
1822 options = paginate_options ( records , address_id )
19- options . merge! ( params : { previews : true , address : } )
23+ options . merge! ( params : { previews : true , address_id : } )
2024
2125 result = CkbTransactionsSerializer . new ( records , options )
2226 wrap_result ( result , address )
@@ -33,7 +37,7 @@ def transactions_ordering
3337 end
3438
3539 def paginate_options ( records , address_id )
36- total_count = AccountBook . where ( address_id : ) . distinct . count
40+ total_count = Address . where ( id : address_id ) . sum ( :ckb_transactions_count )
3741 FastJsonapi ::PaginationMetaGenerator . new (
3842 request :, records :, page :, page_size :, total_pages : records . total_pages , total_count :,
3943 ) . call
0 commit comments