candy
This commit is contained in:
parent
a4814d43e0
commit
8becdb231b
|
@ -3,14 +3,15 @@ use diesel_demo::models::{Post, PostDraft};
|
||||||
use libpt::log::{self, debug, error, trace, warn};
|
use libpt::log::{self, debug, error, trace, warn};
|
||||||
|
|
||||||
const HELP_TEXT: &str = "\
|
const HELP_TEXT: &str = "\
|
||||||
help - show this menu\n\
|
help|? - show this menu\n\
|
||||||
exit - exit the application\n\
|
exit - exit the application\n\
|
||||||
list - list all posts\n\
|
list - list all posts\n\
|
||||||
publish [id] - publish the post with the id [id]\n\
|
publish [id] - publish the post with the id [id]\n\
|
||||||
unpublish [id] - make the post with the id [id] a draft\n\
|
unpublish [id] - make the post with the id [id] a draft\n\
|
||||||
delete [id] - delete the post with the id [id]\n\
|
delete [id] - delete the post with the id [id]\n\
|
||||||
read [id] - display the post with the id [id]\n\
|
read|show [id] - display the post with the id [id]\n\
|
||||||
new - create a new post";
|
new - create a new post";
|
||||||
|
const USAGE_TEXT: &str = "Bad input: try 'help'";
|
||||||
|
|
||||||
use colored::*;
|
use colored::*;
|
||||||
|
|
||||||
|
@ -40,9 +41,9 @@ fn repl(conn: &mut SqliteConnection) -> anyhow::Result<()> {
|
||||||
loop {
|
loop {
|
||||||
lib::read_buf_interactive(&mut buf)?;
|
lib::read_buf_interactive(&mut buf)?;
|
||||||
buf = buf.to_uppercase();
|
buf = buf.to_uppercase();
|
||||||
if buf.starts_with("HELP") {
|
if buf.starts_with("HELP") || buf.starts_with("?") {
|
||||||
println!("{}", HELP_TEXT.bright_blue())
|
println!("{}", HELP_TEXT.bright_blue())
|
||||||
} else if buf.starts_with("EXIT") {
|
} else if buf.starts_with("EXIT") || buf.is_empty() {
|
||||||
break;
|
break;
|
||||||
} else if buf.starts_with("UNPUBLISH") {
|
} else if buf.starts_with("UNPUBLISH") {
|
||||||
let id: i32 = match get_id(&buf) {
|
let id: i32 = match get_id(&buf) {
|
||||||
|
@ -70,7 +71,7 @@ fn repl(conn: &mut SqliteConnection) -> anyhow::Result<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else if buf.starts_with("READ") {
|
} else if buf.starts_with("READ") || buf.starts_with("SHOW") {
|
||||||
let id: i32 = match get_id(&buf) {
|
let id: i32 = match get_id(&buf) {
|
||||||
Some(i) => i,
|
Some(i) => i,
|
||||||
None => continue,
|
None => continue,
|
||||||
|
@ -107,7 +108,7 @@ fn repl(conn: &mut SqliteConnection) -> anyhow::Result<()> {
|
||||||
} else if buf.starts_with("NEW") {
|
} else if buf.starts_with("NEW") {
|
||||||
let post = PostDraft::interactive_create()?;
|
let post = PostDraft::interactive_create()?;
|
||||||
let _ = post.post(conn).inspect_err(|e| {
|
let _ = post.post(conn).inspect_err(|e| {
|
||||||
error!("Could not submit the post: {e:?}");
|
error!("Could not submit the post: {}", e.to_string());
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
usage()
|
usage()
|
||||||
|
@ -118,7 +119,7 @@ fn repl(conn: &mut SqliteConnection) -> anyhow::Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn usage() {
|
fn usage() {
|
||||||
println!("Bad input: try 'help'");
|
println!("{}", USAGE_TEXT.red().bold());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_id(buf: &str) -> Option<i32> {
|
fn get_id(buf: &str) -> Option<i32> {
|
||||||
|
@ -126,7 +127,7 @@ fn get_id(buf: &str) -> Option<i32> {
|
||||||
Some(s) => match s.parse() {
|
Some(s) => match s.parse() {
|
||||||
Ok(i) => Some(i),
|
Ok(i) => Some(i),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("could not parse the id: {e:?}");
|
error!("could not parse the id: {}", e.to_string());
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue