Skip to content

Commit 464d781

Browse files
committed
wip(cat-gateway): implement query trait for statement queries
1 parent 4f151a0 commit 464d781

File tree

11 files changed

+91
-53
lines changed

11 files changed

+91
-53
lines changed

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ macro_rules! impl_query_statement {
125125
session: &std::sync::Arc<scylla::Session>,
126126
_: &$crate::settings::cassandra_db::EnvVars,
127127
) -> anyhow::Result<$crate::db::index::queries::QueryKind> {
128-
Self::prepare(session)
128+
Self::prepare(session.clone())
129129
.await
130130
.map($crate::db::index::queries::QueryKind::Statement)
131131
}
@@ -285,9 +285,7 @@ async fn prepare_queries(
285285
( $( $i:ty),* ) => {
286286
{
287287
let queries = vec![
288-
$(
289-
(TypeId::of::<$i>(), <$i>::prepare_query(session, cfg).await?),
290-
)*
288+
$( (TypeId::of::<$i>(), <$i>::prepare_query(session, cfg).await?), )*
291289
];
292290
DashMap::from_iter(queries)
293291
}
@@ -312,7 +310,15 @@ async fn prepare_queries(
312310
CatalystIdForStakeAddressInsert,
313311
// prepared statement queries
314312
GetTxoByStakeAddressQuery,
315-
GetTxiByTxnHashesQuery
313+
GetTxiByTxnHashesQuery,
314+
GetAssetsByStakeAddressQuery,
315+
GetRegistrationQuery,
316+
GetStakeAddrQuery,
317+
GetStakeAddrFromVoteKeyQuery,
318+
GetInvalidRegistrationQuery,
319+
GetAllRegistrationsQuery,
320+
GetAllInvalidRegistrationsQuery,
321+
SyncStatusInsertQuery
316322
);
317323
Ok(queries)
318324
}
@@ -349,8 +355,8 @@ impl PreparedQueries {
349355
) = Rbac509InsertQuery::prepare_batch(&session, cfg).await?;
350356

351357
// Prepared Statement queries
352-
let txo_by_stake_address_query = GetTxoByStakeAddressQuery::prepare(&session).await;
353-
let txi_by_txn_hash_query = GetTxiByTxnHashesQuery::prepare(&session).await;
358+
let txo_by_stake_address_query = GetTxoByStakeAddressQuery::prepare(session.clone()).await;
359+
let txi_by_txn_hash_query = GetTxiByTxnHashesQuery::prepare(session.clone()).await;
354360
let native_assets_by_stake_address_query =
355361
GetAssetsByStakeAddressQuery::prepare(session.clone()).await;
356362
let registration_from_stake_addr_query =

catalyst-gateway/bin/src/db/index/queries/registrations/get_all_invalids.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ use scylla::{
88
};
99
use tracing::error;
1010

11-
use crate::db::index::{
12-
queries::{PreparedQueries, PreparedSelectQuery},
13-
session::CassandraSession,
11+
use crate::{
12+
db::index::{
13+
queries::{PreparedQueries, PreparedSelectQuery},
14+
session::CassandraSession,
15+
},
16+
impl_query_statement,
1417
};
1518

1619
/// Get all invalid registrations
@@ -39,6 +42,8 @@ pub(crate) struct GetAllInvalidRegistrationsQuery {
3942
pub cip36: bool,
4043
}
4144

45+
impl_query_statement!(GetAllInvalidRegistrationsQuery, GET_ALL_INVALIDS);
46+
4247
impl GetAllInvalidRegistrationsQuery {
4348
/// Prepares get all registrations
4449
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

catalyst-gateway/bin/src/db/index/queries/registrations/get_all_registrations.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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},
15+
session::CassandraSession,
16+
},
17+
types::DbTxnIndex,
1518
},
16-
types::DbTxnIndex,
19+
impl_query_statement,
1720
};
1821

1922
/// Get all registrations
@@ -44,6 +47,8 @@ pub(crate) struct GetAllRegistrationsQuery {
4447
pub cip36: bool,
4548
}
4649

50+
impl_query_statement!(GetAllRegistrationsQuery, GET_ALL_REGISTRATIONS);
51+
4752
impl GetAllRegistrationsQuery {
4853
/// Prepares get all registrations
4954
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

catalyst-gateway/bin/src/db/index/queries/registrations/get_from_stake_addr.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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},
15+
session::CassandraSession,
16+
},
17+
types::{DbSlot, DbTxnIndex},
1518
},
16-
types::{DbSlot, DbTxnIndex},
19+
impl_query_statement,
1720
};
1821

1922
/// Get registrations from stake addr query.
@@ -54,6 +57,11 @@ pub(crate) struct GetRegistrationQuery {
5457
pub cip36: bool,
5558
}
5659

60+
impl_query_statement!(
61+
GetRegistrationQuery,
62+
GET_REGISTRATIONS_FROM_STAKE_ADDR_QUERY
63+
);
64+
5765
impl GetRegistrationQuery {
5866
/// Prepares a get registration query.
5967
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

catalyst-gateway/bin/src/db/index/queries/registrations/get_from_stake_address.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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},
16+
session::CassandraSession,
17+
},
18+
types::DbStakeAddress,
1619
},
17-
types::DbStakeAddress,
20+
impl_query_statement,
1821
};
1922

2023
/// Get stake addr from stake hash query string.
@@ -43,6 +46,8 @@ pub(crate) struct GetStakeAddrQuery {
4346
pub stake_public_key: Vec<u8>,
4447
}
4548

49+
impl_query_statement!(GetStakeAddrQuery, GET_QUERY);
50+
4651
impl GetStakeAddrQuery {
4752
/// Prepares a get get stake addr from stake hash query.
4853
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

catalyst-gateway/bin/src/db/index/queries/registrations/get_from_vote_key.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ use scylla::{
77
};
88
use tracing::error;
99

10-
use crate::db::index::{
11-
queries::{PreparedQueries, PreparedSelectQuery},
12-
session::CassandraSession,
10+
use crate::{
11+
db::index::{
12+
queries::{PreparedQueries, PreparedSelectQuery},
13+
session::CassandraSession,
14+
},
15+
impl_query_statement,
1316
};
1417

1518
/// Get stake addr from vote key query.
@@ -36,6 +39,8 @@ pub(crate) struct GetStakeAddrFromVoteKeyQuery {
3639
pub stake_public_key: Vec<u8>,
3740
}
3841

42+
impl_query_statement!(GetStakeAddrFromVoteKeyQuery, GET_STAKE_ADDR_FROM_VOTE_KEY);
43+
3944
impl GetStakeAddrFromVoteKeyQuery {
4045
/// Prepares a get stake addr from vote key query.
4146
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

catalyst-gateway/bin/src/db/index/queries/registrations/get_invalid.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use crate::{
1616
},
1717
types::DbSlot,
1818
},
19+
impl_query_statement,
1920
service::common::types::cardano::slot_no::SlotNo,
2021
};
2122

@@ -59,6 +60,11 @@ pub(crate) struct GetInvalidRegistrationQuery {
5960
pub cip36: bool,
6061
}
6162

63+
impl_query_statement!(
64+
GetInvalidRegistrationQuery,
65+
GET_INVALID_REGISTRATIONS_FROM_STAKE_ADDR_QUERY
66+
);
67+
6268
impl GetInvalidRegistrationQuery {
6369
/// Prepares a get invalid registration query.
6470
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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},
15+
session::CassandraSession,
16+
},
17+
types::{DbSlot, DbStakeAddress, DbTxnIndex, DbTxnOutputOffset},
1518
},
16-
types::{DbSlot, DbStakeAddress, DbTxnIndex, DbTxnOutputOffset},
19+
impl_query_statement,
1720
};
1821

1922
/// Get assets by stake address query string.
@@ -56,6 +59,11 @@ pub(crate) struct GetAssetsByStakeAddressQuery {
5659
pub value: num_bigint::BigInt,
5760
}
5861

62+
impl_query_statement!(
63+
GetAssetsByStakeAddressQuery,
64+
GET_ASSETS_BY_STAKE_ADDRESS_QUERY
65+
);
66+
5967
impl GetAssetsByStakeAddressQuery {
6068
/// Prepares a get assets by stake address query.
6169
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {

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

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

55
use cardano_blockchain_types::TransactionId;
66
use scylla::{
@@ -12,12 +12,12 @@ use tracing::error;
1212
use crate::{
1313
db::{
1414
index::{
15-
queries::{PreparedQueries, PreparedSelectQuery, Query, QueryKind},
15+
queries::{PreparedQueries, PreparedSelectQuery},
1616
session::CassandraSession,
1717
},
1818
types::{DbSlot, DbTransactionId, DbTxnOutputOffset},
1919
},
20-
settings::cassandra_db,
20+
impl_query_statement,
2121
};
2222

2323
/// Get TXI query string.
@@ -49,24 +49,11 @@ pub(crate) struct GetTxiByTxnHashesQuery {
4949
pub slot_no: DbSlot,
5050
}
5151

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-
}
52+
impl_query_statement!(GetTxiByTxnHashesQuery, GET_TXI_BY_TXN_HASHES_QUERY);
6653

6754
impl GetTxiByTxnHashesQuery {
6855
/// Prepares a get txi query.
69-
pub(crate) async fn prepare(session: &Arc<Session>) -> anyhow::Result<PreparedStatement> {
56+
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {
7057
PreparedQueries::prepare(
7158
session.clone(),
7259
GET_TXI_BY_TXN_HASHES_QUERY,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ impl_query_statement!(GetTxoByStakeAddressQuery, GET_TXO_BY_STAKE_ADDRESS_QUERY)
6262

6363
impl GetTxoByStakeAddressQuery {
6464
/// Prepares a get txo by stake address query.
65-
pub(crate) async fn prepare(session: &Arc<Session>) -> anyhow::Result<PreparedStatement> {
65+
pub(crate) async fn prepare(session: Arc<Session>) -> anyhow::Result<PreparedStatement> {
6666
PreparedQueries::prepare(
67-
session.clone(),
67+
session,
6868
GET_TXO_BY_STAKE_ADDRESS_QUERY,
6969
scylla::statement::Consistency::All,
7070
true,

0 commit comments

Comments
 (0)