mithril_persistence/database/
mod.rs1pub mod cardano_transaction_migration;
5mod db_version;
6mod hydrator;
7pub(crate) mod query;
8pub mod record;
9pub mod repository;
10mod version_checker;
11
12pub use db_version::*;
13pub use hydrator::Hydrator;
14pub use version_checker::{DatabaseVersionChecker, SqlMigration};
15
16pub type DbVersion = i64;
18
19#[cfg(test)]
20pub(crate) mod test_helper {
21 use std::path::Path;
22
23 use mithril_common::StdResult;
24 use mithril_common::entities::CardanoBlockWithTransactions;
25
26 use crate::database::query::{InsertCardanoBlockQuery, InsertCardanoTransactionQuery};
27 use crate::database::record::IntoRecords;
28 use crate::sqlite::{
29 ConnectionBuilder, ConnectionExtensions, ConnectionOptions, SqliteConnection,
30 };
31
32 pub fn cardano_tx_db_connection() -> StdResult<SqliteConnection> {
34 let connection = ConnectionBuilder::open_memory()
35 .with_options(&[ConnectionOptions::EnableForeignKeys])
36 .with_migrations(crate::database::cardano_transaction_migration::get_migrations())
37 .build()?;
38 Ok(connection)
39 }
40
41 #[allow(unused)] pub fn cardano_tx_db_connection_file(dir_path: &Path) -> StdResult<SqliteConnection> {
44 cardano_tx_db_connection_builder(dir_path).build()
45 }
46
47 pub fn cardano_tx_db_connection_builder(dir_path: &Path) -> ConnectionBuilder {
49 ConnectionBuilder::open_file(&dir_path.join("cardano_tx.db"))
50 .with_options(&[ConnectionOptions::EnableForeignKeys])
51 .with_migrations(crate::database::cardano_transaction_migration::get_migrations())
52 }
53
54 #[cfg(test)]
55 pub(crate) fn insert_cardano_blocks_and_transaction(
56 connection: &SqliteConnection,
57 blocks_with_txs: Vec<CardanoBlockWithTransactions>,
58 ) {
59 let (blocks_records, transactions_records) = blocks_with_txs.into_records();
60
61 connection
62 .apply(InsertCardanoBlockQuery::insert_many(blocks_records).unwrap())
63 .unwrap();
64 if !transactions_records.is_empty() {
65 connection
66 .apply(InsertCardanoTransactionQuery::insert_many(transactions_records).unwrap())
67 .unwrap();
68 }
69 }
70}