Skip to content

Commit bb6e5f1

Browse files
committed
feat(cat-gateway): impl Query for GetTxiByTxnHashesQuery
1 parent 10aef54 commit bb6e5f1

File tree

3 files changed

+63
-19
lines changed

3 files changed

+63
-19
lines changed

catalyst-gateway/bin/src/db/index/queries/mod.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ async fn prepare_queries(
242242
}
243243
// WIP: Adding queries as they implement trait
244244
let queries = prepare_q!(
245+
// prepared batch queries
245246
TxiInsertQuery,
246247
TxoInsertQuery,
247248
TxoAssetInsert,
@@ -251,7 +252,10 @@ async fn prepare_queries(
251252
Cip36Insert,
252253
Cip36InvalidInsert,
253254
Cip36ForVoteKeyInsert,
254-
UpdateTxoSpentQuery
255+
// prepared statement queries
256+
UpdateTxoSpentQuery,
257+
GetTxoByStakeAddressQuery,
258+
GetTxiByTxnHashesQuery
255259
);
256260
Ok(queries)
257261
}
@@ -263,6 +267,8 @@ impl PreparedQueries {
263267
session: Arc<Session>, cfg: &cassandra_db::EnvVars,
264268
) -> anyhow::Result<Self> {
265269
// We initialize like this, so that all errors preparing querys get shown before aborting.
270+
271+
// Prepared batched queries
266272
let txi_insert_queries = TxiInsertQuery::prepare_batch(&session, cfg).await?;
267273
let (
268274
txo_insert_queries,
@@ -278,14 +284,16 @@ impl PreparedQueries {
278284
cip36_registration_for_vote_key_insert_queries,
279285
) = Cip36InsertQuery::prepare_batch(&session, cfg).await?;
280286
let txo_spent_update_queries = UpdateTxoSpentQuery::prepare_batch(&session, cfg).await?;
281-
let txo_by_stake_address_query = GetTxoByStakeAddressQuery::prepare(session.clone()).await;
282-
let txi_by_txn_hash_query = GetTxiByTxnHashesQuery::prepare(session.clone()).await;
283287
let (
284288
rbac509_registration_insert_queries,
285289
rbac509_invalid_registration_insert_queries,
286290
catalyst_id_for_txn_id_insert_queries,
287291
catalyst_id_for_stake_address_insert_queries,
288292
) = Rbac509InsertQuery::prepare_batch(&session, cfg).await?;
293+
294+
// Prepared Statement queries
295+
let txo_by_stake_address_query = GetTxoByStakeAddressQuery::prepare(&session).await;
296+
let txi_by_txn_hash_query = GetTxiByTxnHashesQuery::prepare(&session).await;
289297
let native_assets_by_stake_address_query =
290298
GetAssetsByStakeAddressQuery::prepare(session.clone()).await;
291299
let registration_from_stake_addr_query =

catalyst-gateway/bin/src/db/index/queries/staked_ada/get_txi_by_txn_hash.rs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Get TXI by Transaction hash query
22
3-
use std::sync::Arc;
3+
use std::{fmt, sync::Arc};
44

55
use cardano_blockchain_types::TransactionId;
66
use scylla::{
@@ -9,12 +9,15 @@ use scylla::{
99
};
1010
use tracing::error;
1111

12-
use crate::db::{
13-
index::{
14-
queries::{PreparedQueries, PreparedSelectQuery},
15-
session::CassandraSession,
12+
use crate::{
13+
db::{
14+
index::{
15+
queries::{PreparedQueries, PreparedSelectQuery, Query, QueryKind},
16+
session::CassandraSession,
17+
},
18+
types::{DbSlot, DbTransactionId, DbTxnOutputOffset},
1619
},
17-
types::{DbSlot, DbTransactionId, DbTxnOutputOffset},
20+
settings::cassandra_db,
1821
};
1922

2023
/// Get TXI query string.
@@ -46,11 +49,26 @@ pub(crate) struct GetTxiByTxnHashesQuery {
4649
pub slot_no: DbSlot,
4750
}
4851

52+
impl Query for GetTxiByTxnHashesQuery {
53+
/// Prepare Batch of Insert TXI Index Data Queries
54+
async fn prepare_query(
55+
session: &Arc<Session>, _cfg: &cassandra_db::EnvVars,
56+
) -> anyhow::Result<QueryKind> {
57+
Self::prepare(session).await.map(QueryKind::Statement)
58+
}
59+
}
60+
61+
impl fmt::Display for GetTxiByTxnHashesQuery {
62+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
63+
write!(f, "{GET_TXI_BY_TXN_HASHES_QUERY}")
64+
}
65+
}
66+
4967
impl GetTxiByTxnHashesQuery {
5068
/// Prepares a get txi query.
51-
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {
69+
pub(crate) async fn prepare(session: &Arc<Session>) -> anyhow::Result<PreparedStatement> {
5270
PreparedQueries::prepare(
53-
session,
71+
session.clone(),
5472
GET_TXI_BY_TXN_HASHES_QUERY,
5573
scylla::statement::Consistency::All,
5674
true,

catalyst-gateway/bin/src/db/index/queries/staked_ada/get_txo_by_stake_address.rs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//! Get the TXO by Stake Address
2-
use std::sync::Arc;
2+
use std::{fmt, sync::Arc};
33

44
use cardano_blockchain_types::{Slot, StakeAddress};
55
use scylla::{
@@ -8,12 +8,15 @@ use scylla::{
88
};
99
use tracing::error;
1010

11-
use crate::db::{
12-
index::{
13-
queries::{PreparedQueries, PreparedSelectQuery},
14-
session::CassandraSession,
11+
use crate::{
12+
db::{
13+
index::{
14+
queries::{PreparedQueries, PreparedSelectQuery, Query, QueryKind},
15+
session::CassandraSession,
16+
},
17+
types::{DbSlot, DbStakeAddress, DbTransactionId, DbTxnIndex, DbTxnOutputOffset},
1518
},
16-
types::{DbSlot, DbStakeAddress, DbTransactionId, DbTxnIndex, DbTxnOutputOffset},
19+
settings::cassandra_db,
1720
};
1821

1922
/// Get txo by stake address query string.
@@ -55,11 +58,26 @@ pub(crate) struct GetTxoByStakeAddressQuery {
5558
pub spent_slot: Option<DbSlot>,
5659
}
5760

61+
impl Query for GetTxoByStakeAddressQuery {
62+
/// Prepare Batch of Insert TXI Index Data Queries
63+
async fn prepare_query(
64+
session: &Arc<Session>, _cfg: &cassandra_db::EnvVars,
65+
) -> anyhow::Result<QueryKind> {
66+
Self::prepare(session).await.map(QueryKind::Statement)
67+
}
68+
}
69+
70+
impl fmt::Display for GetTxoByStakeAddressQuery {
71+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
72+
write!(f, "{GET_TXO_BY_STAKE_ADDRESS_QUERY}")
73+
}
74+
}
75+
5876
impl GetTxoByStakeAddressQuery {
5977
/// Prepares a get txo by stake address query.
60-
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {
78+
pub(crate) async fn prepare(session: &Arc<Session>) -> anyhow::Result<PreparedStatement> {
6179
PreparedQueries::prepare(
62-
session,
80+
session.clone(),
6381
GET_TXO_BY_STAKE_ADDRESS_QUERY,
6482
scylla::statement::Consistency::All,
6583
true,

0 commit comments

Comments
 (0)