From 5e7709f5ffa699bf51f7ed38e2f268fd537c65f7 Mon Sep 17 00:00:00 2001 From: Hanh Date: Wed, 16 Mar 2022 19:14:08 +0800 Subject: [PATCH] Db Indices --- src/db.rs | 20 -------------------- src/db/migration.rs | 11 +++++++++++ 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/db.rs b/src/db.rs index 2f65fef..edcc820 100644 --- a/src/db.rs +++ b/src/db.rs @@ -4,7 +4,6 @@ use crate::prices::Quote; use crate::taddr::derive_tkeys; use crate::transaction::TransactionInfo; use crate::{CTree, Witness}; -use chrono::NaiveDateTime; use rusqlite::{params, Connection, OptionalExtension, Transaction, NO_PARAMS}; use std::collections::HashMap; use zcash_client_backend::encoding::decode_extended_full_viewing_key; @@ -720,25 +719,6 @@ impl DbAdapter { Ok(()) } - pub fn get_missing_prices_timestamp(&self, currency: &str) -> anyhow::Result> { - let mut statement = self.connection.prepare( - "WITH t AS (SELECT timestamp, timestamp/86400 AS day FROM transactions), p AS (SELECT price, timestamp/86400 AS day FROM historical_prices WHERE currency = ?1) \ - SELECT t.timestamp FROM t LEFT JOIN p ON t.day = p.day WHERE p.price IS NULL")?; - let res = statement.query_map(params![currency], |row| { - let timestamp: i64 = row.get(0)?; - Ok(timestamp) - })?; - let mut timestamps: Vec = vec![]; - for ts in res { - let ts = NaiveDateTime::from_timestamp(ts?, 0); - let ts_date = ts.date().and_hms(0, 0, 0); // at midnight - timestamps.push(ts_date.timestamp()); - } - timestamps.sort(); - timestamps.dedup(); - Ok(timestamps) - } - pub fn store_historical_prices( &mut self, prices: &[Quote], diff --git a/src/db/migration.rs b/src/db/migration.rs index b78f08e..8b07b65 100644 --- a/src/db/migration.rs +++ b/src/db/migration.rs @@ -139,6 +139,17 @@ pub fn init_db(connection: &Connection) -> anyhow::Result<()> { dirty BOOL NOT NULL)", NO_PARAMS, )?; + + connection.execute( + "CREATE INDEX i_received_notes ON received_notes(account)", NO_PARAMS)?; + connection.execute( + "CREATE INDEX i_account ON accounts(address)", NO_PARAMS)?; + connection.execute( + "CREATE INDEX i_contact ON contacts(address)", NO_PARAMS)?; + connection.execute( + "CREATE INDEX i_transaction ON transactions(account)", NO_PARAMS)?; + connection.execute( + "CREATE INDEX i_witness ON sapling_witnesses(height)", NO_PARAMS)?; } update_schema_version(&connection, 1)?;