Bladeren bron

[Build] Update to qif_generator-0.1.7 with new Chrono

Signed-off-by: Slava Barinov <rayslava@gmail.com>
Slava Barinov 3 jaren geleden
bovenliggende
commit
6c468edcca
6 gewijzigde bestanden met toevoegingen van 33 en 48 verwijderingen
  1. 2 2
      Cargo.lock
  2. 1 1
      Cargo.toml
  3. 2 2
      build.rs
  4. 2 2
      src/convert.rs
  5. 7 7
      src/receipt.rs
  6. 19 34
      src/telegram.rs

+ 2 - 2
Cargo.lock

@@ -1157,9 +1157,9 @@ dependencies = [
 
 [[package]]
 name = "qif_generator"
-version = "0.1.6"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67cbd79c4de2d3c133fc78442b4ca2d00051bff574a1aae7172d845965c189ba"
+checksum = "1014be8b0da111d490ad96144fae0ae8c808fd1dd18ad1f34b91d5231e8cda68"
 dependencies = [
  "chrono",
 ]

+ 1 - 1
Cargo.toml

@@ -7,7 +7,7 @@ edition = "2021"
 [dependencies]
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
-qif_generator = "0.1.6"
+qif_generator = "0.1.7"
 chrono = "0.4"
 pickledb = "0.4.1"
 csv = "1.1"

+ 2 - 2
build.rs

@@ -16,7 +16,7 @@ fn main() {
         println!("cargo:rerun-if-changed=extern/tvision");
 
         Command::new("cmake")
-            .args(&[
+            .args([
                 "extern/tvision",
                 "-B",
                 "extern/tvision/build",
@@ -31,7 +31,7 @@ fn main() {
         let jobs = env::var("NUM_JOBS").unwrap();
 
         Command::new("cmake")
-            .args(&["--build", "extern/tvision/build", "--parallel", &jobs])
+            .args(["--build", "extern/tvision/build", "--parallel", &jobs])
             .status()
             .unwrap();
 

+ 2 - 2
src/convert.rs

@@ -3,7 +3,7 @@ use crate::categories::get_top_category;
 use crate::categories::CatStats;
 use crate::receipt;
 use crate::user::User;
-use chrono::{Date, Utc};
+use chrono::{DateTime, Utc};
 use qif_generator::{account::Account, split::Split, transaction::Transaction};
 use std::fs;
 
@@ -56,7 +56,7 @@ where
 /// Generate QIF transaction from `splits`
 pub fn gen_trans<'a>(
     acc: &'a Account,
-    date: Date<Utc>,
+    date: DateTime<Utc>,
     sum: i64,
     memo: &str,
     splits: Vec<Split>,

+ 7 - 7
src/receipt.rs

@@ -1,10 +1,10 @@
-use chrono::{Date, Utc};
+use chrono::{DateTime, Utc};
 use serde::Deserialize;
 use std::fmt;
 
 pub struct Purchase {
     sum: i64,
-    date: Date<Utc>,
+    date: DateTime<Utc>,
     pub items: Vec<Item>,
 }
 
@@ -13,7 +13,7 @@ impl Purchase {
         self.sum
     }
 
-    pub fn date(&self) -> Date<Utc> {
+    pub fn date(&self) -> DateTime<Utc> {
         self.date
     }
 }
@@ -55,18 +55,18 @@ struct Ticket {
 struct Query {
     sum: i64,
     #[serde(with = "custom_date_format")]
-    date: Date<Utc>,
+    date: DateTime<Utc>,
 }
 
 mod custom_date_format {
-    use chrono::{Date, TimeZone, Utc};
+    use chrono::{DateTime, TimeZone, Utc};
     use serde::{self, Deserialize, Deserializer};
 
     /// The format seems alike to RFC3339 but is not compliant
     const FORMAT: &str = "%Y-%m-%dT%H:%M";
 
     /// Custom deserializer for format in our json
-    pub fn deserialize<'de, D>(deserializer: D) -> Result<Date<Utc>, D::Error>
+    pub fn deserialize<'de, D>(deserializer: D) -> Result<DateTime<Utc>, D::Error>
     where
         D: Deserializer<'de>,
     {
@@ -75,7 +75,7 @@ mod custom_date_format {
             .datetime_from_str(&s, FORMAT)
             .map_err(serde::de::Error::custom);
         match dt {
-            Ok(date) => Ok(date.date()),
+            Ok(date) => Ok(date.with_timezone(&Utc)),
             Err(e) => Err(e),
         }
     }

+ 19 - 34
src/telegram.rs

@@ -91,10 +91,7 @@ enum Command {
 static IS_RUNNING: AtomicBool = AtomicBool::new(false);
 
 #[cfg(feature = "telegram")]
-async fn download_file(
-    downloader: &AutoSend<Bot>,
-    file_id: &str,
-) -> Result<String, FileReceiveError> {
+async fn download_file(downloader: &Bot, file_id: &str) -> Result<String, FileReceiveError> {
     let TgFile { path, .. } = downloader.get_file(file_id).send().await?;
     log::info!("Attempt to download file");
     let filepath = format!("/tmp/{}", file_id);
@@ -179,16 +176,16 @@ pub enum State {
     CategorySelect {
         filename: String,
         item: String,
-        items_left: Box<Vec<String>>,
-        items_processed: Box<HashMap<String, String>>,
+        items_left: Vec<String>,
+        items_processed: HashMap<String, String>,
     },
 
     SubCategorySelect {
         filename: String,
         item: String,
         category: String,
-        items_left: Box<Vec<String>>,
-        items_processed: Box<HashMap<String, String>>,
+        items_left: Vec<String>,
+        items_processed: HashMap<String, String>,
     },
 
     Ready,
@@ -227,11 +224,7 @@ impl fmt::Display for State {
 
 type QIFDialogue = Dialogue<State, InMemStorage<State>>;
 
-async fn handle_idle(
-    bot: AutoSend<Bot>,
-    msg: Message,
-    dialogue: QIFDialogue,
-) -> anyhow::Result<()> {
+async fn handle_idle(bot: Bot, msg: Message, dialogue: QIFDialogue) -> anyhow::Result<()> {
     bot.send_message(msg.chat.id, "Upload your file").await?;
     dialogue
         .update(State::NewJson {
@@ -242,7 +235,7 @@ async fn handle_idle(
 }
 
 async fn handle_json(
-    bot: AutoSend<Bot>,
+    bot: Bot,
     msg: Message,
     dialogue: QIFDialogue,
     (filename,): (String,), // Available from `State::Idle`.
@@ -290,8 +283,8 @@ async fn handle_json(
                 .update(State::CategorySelect {
                     filename,
                     item,
-                    items_left: Box::new(i),
-                    items_processed: Box::new(HashMap::new()),
+                    items_left: i,
+                    items_processed: HashMap::new(),
                 })
                 .await?;
         } else {
@@ -302,14 +295,14 @@ async fn handle_json(
 }
 
 async fn handle_category(
-    bot: AutoSend<Bot>,
+    bot: Bot,
     msg: Message,
     dialogue: QIFDialogue,
     (filename, item, items_left, items_processed): (
         String,
         String,
-        Box<Vec<String>>,
-        Box<HashMap<String, String>>,
+        Vec<String>,
+        HashMap<String, String>,
     ), // Available from `State::NewJson`.
 ) -> anyhow::Result<()> {
     let accounts = [
@@ -357,15 +350,15 @@ async fn handle_category(
 }
 
 async fn handle_subcategory(
-    bot: AutoSend<Bot>,
+    bot: Bot,
     msg: Message,
     dialogue: QIFDialogue,
     (filename, item, category, mut items_left, mut items_processed): (
         String,
         String,
         String,
-        Box<Vec<String>>,
-        Box<HashMap<String, String>>,
+        Vec<String>,
+        HashMap<String, String>,
     ), // Available from `State::Category`.
 ) -> anyhow::Result<()> {
     match msg.text() {
@@ -396,11 +389,7 @@ async fn handle_subcategory(
     Ok(())
 }
 
-async fn handle_qif_ready(
-    bot: AutoSend<Bot>,
-    msg: Message,
-    dialogue: QIFDialogue,
-) -> anyhow::Result<()> {
+async fn handle_qif_ready(bot: Bot, msg: Message, dialogue: QIFDialogue) -> anyhow::Result<()> {
     bot.send_message(msg.chat.id, "QIF is ready.").await?;
     dialogue.update(State::Idle).await?;
     Ok(())
@@ -541,11 +530,7 @@ where
     Ok(())
 }*/
 
-async fn callback_handler(
-    q: CallbackQuery,
-    bot: AutoSend<Bot>,
-    dialogue: QIFDialogue,
-) -> anyhow::Result<()> {
+async fn callback_handler(q: CallbackQuery, bot: Bot, dialogue: QIFDialogue) -> anyhow::Result<()> {
     if let Some(version) = q.data {
         let text = format!("You chose: {}", version);
 
@@ -600,7 +585,7 @@ async fn run() {
 
     //    let storage = InMemStorage::new();
 
-    let bot = Bot::from_env().auto_send();
+    let bot = Bot::from_env();
     let handler = dptree::entry()
         .branch(
             Update::filter_message()
@@ -639,8 +624,8 @@ async fn run() {
         );
     Dispatcher::builder(bot, handler)
         .dependencies(dptree::deps![InMemStorage::<State>::new()])
+        .enable_ctrlc_handler()
         .build()
-        .setup_ctrlc_handler()
         .dispatch()
         .await;