mirror of
https://git.alemi.dev/memo-cli.git
synced 2024-11-10 04:49:21 +01:00
fix: sqlite storage, add max deptth in list
This commit is contained in:
parent
cfe29f0c12
commit
6ec8ad3ab5
4 changed files with 20 additions and 12 deletions
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "memo-cli"
|
name = "memo-cli"
|
||||||
version = "0.1.1"
|
version = "0.2.0"
|
||||||
authors = ["alemidev <me@alemi.dev>"]
|
authors = ["alemidev <me@alemi.dev>"]
|
||||||
description = "A simple CLI tool to help you remember things"
|
description = "A simple CLI tool to help you remember things"
|
||||||
repository = "https://github.com/alemidev/memo-cli"
|
repository = "https://github.com/alemidev/memo-cli"
|
||||||
|
|
|
@ -20,7 +20,8 @@ impl Tree {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn format_tree(node: &MemoNode, depth: i32, colored: bool) -> String {
|
pub fn format_tree(node: &MemoNode, depth: i32, colored: bool, max_depth: i32) -> String {
|
||||||
|
if depth >= max_depth { return "".to_string(); }
|
||||||
let mut out = "".to_string();
|
let mut out = "".to_string();
|
||||||
let mut prefix = "".to_string(); // TODO string builder?
|
let mut prefix = "".to_string(); // TODO string builder?
|
||||||
for i in 0..depth {
|
for i in 0..depth {
|
||||||
|
@ -45,7 +46,7 @@ pub fn format_tree(node: &MemoNode, depth: i32, colored: bool) -> String {
|
||||||
for sub in &node.sub {
|
for sub in &node.sub {
|
||||||
let sep = if colored { "┐".bright_black().to_string() } else { "┐".to_string() };
|
let sep = if colored { "┐".bright_black().to_string() } else { "┐".to_string() };
|
||||||
out.push_str(format!("{}{} #{}\n", prefix, sep, sub.tag).as_str());
|
out.push_str(format!("{}{} #{}\n", prefix, sep, sub.tag).as_str());
|
||||||
out.push_str(format_tree(sub, depth + 1, colored).as_str());
|
out.push_str(format_tree(sub, depth + 1, colored, max_depth).as_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// if prefix.len() > 0 {
|
// if prefix.len() > 0 {
|
||||||
|
|
12
src/main.rs
12
src/main.rs
|
@ -62,6 +62,8 @@ enum Commands {
|
||||||
tag: Option<String>,
|
tag: Option<String>,
|
||||||
#[clap(short, long, help = "show memos in a notification")]
|
#[clap(short, long, help = "show memos in a notification")]
|
||||||
notify: bool,
|
notify: bool,
|
||||||
|
#[clap(short, long, help = "limit how deep the memo tree is traversed", default_value_t = 20)]
|
||||||
|
depth: i32,
|
||||||
#[clap(long, help = "show completed tasks")]
|
#[clap(long, help = "show completed tasks")]
|
||||||
old: bool,
|
old: bool,
|
||||||
},
|
},
|
||||||
|
@ -216,13 +218,13 @@ where T: StorageDriver,
|
||||||
m_str,
|
m_str,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Some(Commands::List { tag, notify, old }) => {
|
Some(Commands::List { tag, notify, depth, old }) => {
|
||||||
let all = storage.all(old).unwrap();
|
let all = storage.all(old).unwrap();
|
||||||
display_memos(all, tag, &ctx, notify);
|
display_memos(all, tag, &ctx, notify, depth);
|
||||||
},
|
},
|
||||||
None => {
|
None => {
|
||||||
let all = storage.all(false).unwrap();
|
let all = storage.all(false).unwrap();
|
||||||
display_memos(all, None, &ctx, false);
|
display_memos(all, None, &ctx, false, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +247,7 @@ where T: StorageDriver,
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn display_memos(all: Vec<Memo>, query: Option<String>, ctx: &Context, notify: bool) {
|
fn display_memos(all: Vec<Memo>, query: Option<String>, ctx: &Context, notify: bool, max_depth: i32) {
|
||||||
// let all = storage.all(args.old).unwrap();
|
// let all = storage.all(args.old).unwrap();
|
||||||
let mut builder = String::new();
|
let mut builder = String::new();
|
||||||
let timing = format!(
|
let timing = format!(
|
||||||
|
@ -264,7 +266,7 @@ fn display_memos(all: Vec<Memo>, query: Option<String>, ctx: &Context, notify: b
|
||||||
if let Some(q) = query {
|
if let Some(q) = query {
|
||||||
tree_ref = traverse(tree_ref, q);
|
tree_ref = traverse(tree_ref, q);
|
||||||
}
|
}
|
||||||
builder.push_str(format_tree(tree_ref, 0, !notify).as_str());
|
builder.push_str(format_tree(tree_ref, 0, !notify, max_depth).as_str());
|
||||||
if notify {
|
if notify {
|
||||||
Notification::new()
|
Notification::new()
|
||||||
.summary(format!("memo-cli | {}", timing).as_str())
|
.summary(format!("memo-cli | {}", timing).as_str())
|
||||||
|
|
|
@ -37,8 +37,8 @@ impl SQLiteStorage {
|
||||||
)?;
|
)?;
|
||||||
connection.execute(
|
connection.execute(
|
||||||
"CREATE TABLE IF NOT EXISTS state (
|
"CREATE TABLE IF NOT EXISTS state (
|
||||||
last_edit DATETIME DEFAULT NULL,
|
last_edit DATETIME NOT NULL,
|
||||||
last_sync DATETIME DEFAULT NULL
|
last_sync DATETIME DEFAULT NULL,
|
||||||
last_memo TEXT DEFAULT NULL
|
last_memo TEXT DEFAULT NULL
|
||||||
);",
|
);",
|
||||||
[],
|
[],
|
||||||
|
@ -51,6 +51,11 @@ impl SQLiteStorage {
|
||||||
// );",
|
// );",
|
||||||
// [],
|
// [],
|
||||||
// )?;
|
// )?;
|
||||||
|
|
||||||
|
connection.execute(
|
||||||
|
"INSERT INTO state (last_edit) VALUES (?)",
|
||||||
|
params![Utc::now()]
|
||||||
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(SQLiteStorage { conn: connection , tmpfile: None });
|
return Ok(SQLiteStorage { conn: connection , tmpfile: None });
|
||||||
|
@ -131,8 +136,8 @@ impl StorageDriver for SQLiteStorage {
|
||||||
let tx = self.conn.transaction()?;
|
let tx = self.conn.transaction()?;
|
||||||
tx.execute("DELETE FROM memo WHERE id = ?", params![m.id.to_string()])?;
|
tx.execute("DELETE FROM memo WHERE id = ?", params![m.id.to_string()])?;
|
||||||
tx.execute(
|
tx.execute(
|
||||||
"INSERT INTO memo (id, body, due, done, last_edit) VALUES (?, ?, ?, ?, ?)",
|
"INSERT INTO memo (id, tag, body, due, done, last_edit) VALUES (?, ?, ?, ?, ?, ?)",
|
||||||
params![m.id.to_string(), m.body, m.due, m.done, m.last_edit],
|
params![m.id.to_string(), m.tag, m.body, m.due, m.done, m.last_edit],
|
||||||
)?;
|
)?;
|
||||||
tx.execute("UPDATE state SET last_edit = ?", params![Utc::now()])?;
|
tx.execute("UPDATE state SET last_edit = ?", params![Utc::now()])?;
|
||||||
tx.commit()?;
|
tx.commit()?;
|
||||||
|
|
Loading…
Reference in a new issue