banner
[面包]MrTwoC

[面包]MrTwoC

你好,欢迎来到这个基于区块链的个人博客 名字:面包 / MrTwoc 爱好:跑步(5/10KM)、拿铁咖啡、游戏(Minecraft、Warframe、CS) 兴趣方向:Rust、区块链、图形学、游戏设计与开发
bilibili
steam
email
github

[4]Todo-rs-Sqlite

上一章內容

項目地址:https://github.com/MrTwoc/todo-rs

上一章實現了任務的表格化輸出,但是美化效果不怎麼樣。。

這次將存儲任務的 json 文件,改為了用 sqlite 存儲數據,以及將任務級別從固定幾個級別改為了 u8 級別,

可以支持更大的分級空間。

以及新增了基於 sqlite 的用戶管理功能,為以後可能會將項目結構改為 cs 結構做準備。

增加了 toml 配置文件,目前只有一條參數:if_login。如果為 false,則跳過登錄,默認為本地登錄。

後續如果要支持 pgsql 的話,可以在配置文件中設置連接地址。

目前遇到的難點:

  1. sqlite 中的任務批量狀態更新
  2. sqlite 中的任務編輯

其中任務編輯是直接用的是遍歷中用 match 匹配參數,然後挨個更新。。每個符合的 match,用一句代替

conn.execute(
  "UPDATE tasks SET description = ? WHERE id = ?",
  (value, task_id),
)?;

而任務批量更新,則是將 id 用 iter 和 collect 組為數組,然後遍歷中,為每個任務修改狀態

pub fn sql_update_status(args: &[&str]) -> Result<(), Box<dyn std::error::Error>> {
    let status = args[1];
    let ids: Vec<u32> = args[2..]
        .iter()
        .map(|s| s.parse())
        .collect::<Result<_, _>>()?;
    let conn = get_conn()?;
    for id in ids {
        conn.execute(
            "UPDATE tasks SET task_status = ? WHERE id = ?",
            (status, id),
        )?;
    }
    info!("[sqlite]任務狀態更新成功");
    println!("任務更新");
    Ok(())
}

未實現內容:

將排序算法融入其中

將查找算法融入其中

將應用隱藏到托盤運行

將對任務的刪除,改為對任務的狀態更改,已刪除的任務將狀態從 0 改為 1,不再直接刪除任務。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。