0.7.31
This commit is contained in:
@@ -145,6 +145,7 @@ pub use trade_event::query_trade_events_get_by_decoded_event_id;
|
||||
pub use trade_event::query_trade_events_list_by_pair_id;
|
||||
pub use trade_event::query_trade_events_list_by_transaction_id;
|
||||
pub use trade_event::query_trade_events_upsert;
|
||||
pub use trade_event::query_trade_market_materialization_delete_all;
|
||||
pub use transaction_classification::query_transaction_classifications_get_by_signature;
|
||||
pub use transaction_classification::query_transaction_classifications_get_by_transaction_id;
|
||||
pub use transaction_classification::query_transaction_classifications_list_recent;
|
||||
|
||||
@@ -2,6 +2,41 @@
|
||||
|
||||
//! Queries for `k_sol_trade_events`.
|
||||
|
||||
/// Deletes all local market materialization rows that are rebuilt from trade events.
|
||||
///
|
||||
/// The local replay pipeline is deterministic over persisted raw transactions. Clearing
|
||||
/// these derived tables before replay prevents stale failed-transaction trades, metrics
|
||||
/// or candles from surviving after actionability rules change.
|
||||
pub async fn query_trade_market_materialization_delete_all(
|
||||
database: &crate::Database,
|
||||
) -> Result<u64, crate::Error> {
|
||||
match database.connection() {
|
||||
crate::DatabaseConnection::Sqlite(pool) => {
|
||||
let statements = [
|
||||
("k_sol_pair_analytic_signals", "DELETE FROM k_sol_pair_analytic_signals"),
|
||||
("k_sol_pair_candles", "DELETE FROM k_sol_pair_candles"),
|
||||
("k_sol_pair_metrics", "DELETE FROM k_sol_pair_metrics"),
|
||||
("k_sol_trade_events", "DELETE FROM k_sol_trade_events"),
|
||||
];
|
||||
let mut deleted_count = 0_u64;
|
||||
for (table_name, statement) in statements {
|
||||
let query_result = sqlx::query(statement).execute(pool).await;
|
||||
let result = match query_result {
|
||||
Ok(result) => result,
|
||||
Err(error) => {
|
||||
return Err(crate::Error::Db(format!(
|
||||
"cannot clear {} during local market materialization reset on sqlite: {}",
|
||||
table_name, error
|
||||
)));
|
||||
},
|
||||
};
|
||||
deleted_count += result.rows_affected();
|
||||
}
|
||||
return Ok(deleted_count);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// Inserts or updates one trade-event row and returns its stable internal id.
|
||||
pub async fn query_trade_events_upsert(
|
||||
database: &crate::Database,
|
||||
|
||||
Reference in New Issue
Block a user