This commit is contained in:
2026-05-13 09:39:50 +02:00
parent aa19ca9c18
commit 69385094ff
16 changed files with 293 additions and 36 deletions

View File

@@ -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,