database returns default sheet even it there is no record

This commit is contained in:
Abraham Toriz 2022-05-08 11:36:03 +08:00
parent 9eea9af249
commit 23cc987266
No known key found for this signature in database
GPG Key ID: D5B4A746DB5DD42A
10 changed files with 17 additions and 19 deletions

View File

@ -53,7 +53,7 @@ impl<'a> Command<'a> for ArchiveCommand {
let mut entries = {
let start = args.start.map(|s| time_or_warning(s, &streams.db)).transpose()?.map(|s| s.0);
let end = args.end.map(|e| time_or_warning(e, &streams.db)).transpose()?.map(|e| e.0);
let current_sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".into());
let current_sheet = streams.db.current_sheet()?;
let sheet = args.sheet.unwrap_or(current_sheet);
streams.db.entries_by_sheet(&sheet, start, end)?

View File

@ -59,7 +59,7 @@ where
Some(Sheet::Full) => streams.db.entries_full(start, end)?,
Some(Sheet::Sheet(name)) => streams.db.entries_by_sheet(&name, start, end)?,
None => {
let current_sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".into());
let current_sheet = streams.db.current_sheet()?;
streams.db.entries_by_sheet(&current_sheet, start, end)?
}

View File

@ -59,7 +59,7 @@ impl<'a> Command<'a> for EditCommand {
O: Write,
E: Write,
{
let current_sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".to_owned());
let current_sheet = streams.db.current_sheet()?;
let needs_warning = streams.db.version()? == DBVersion::Timetrap;
let entry = if let Some(id) = args.id {

View File

@ -42,7 +42,7 @@ impl<'a> Command<'a> for InCommand {
E: Write,
{
let start = args.at.unwrap_or(facts.now);
let sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".into());
let sheet = streams.db.current_sheet()?;
if streams.db.running_entry(&sheet)?.is_some() {
writeln!(streams.out, "Timer is already running for sheet '{}'", sheet)?;

View File

@ -56,11 +56,9 @@ impl<'a> Command<'a> for ListCommand {
let last = streams.db.last_sheet()?;
// introducte two fake entries to make both current and last show up
if let Some(ref current) = current {
entries.push(Entry {
id: 1, sheet: current.clone(), start: facts.now, end: Some(facts.now), note: None,
});
}
entries.push(Entry {
id: 1, sheet: current.clone(), start: facts.now, end: Some(facts.now), note: None,
});
entries.sort_unstable_by_key(|e| e.sheet.clone());
@ -87,7 +85,7 @@ impl<'a> Command<'a> for ListCommand {
total = total + s_total;
(
if current.as_ref() == Some(&key) {
if current == key {
"*".into()
} else if last.as_ref() == Some(&key) {
"-".into()

View File

@ -62,7 +62,7 @@ impl<'a> Command<'a> for NowCommand {
for entry in entries {
tabs.feed(vec![
if current.as_ref() == Some(&entry.sheet) {
if current == entry.sheet {
"*".into()
} else if last.as_ref() == Some(&entry.sheet) {
"-".into()

View File

@ -40,7 +40,7 @@ impl<'a> Command<'a> for OutCommand {
E: Write,
{
let end = args.at.unwrap_or(facts.now);
let sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".into());
let sheet = streams.db.current_sheet()?;
let (end, needs_warning) = time_or_warning(end, &streams.db)?;

View File

@ -79,7 +79,7 @@ impl<'a> Command<'a> for ResumeCommand {
O: Write,
E: Write,
{
let current_sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".to_owned());
let current_sheet = streams.db.current_sheet()?;
// First try to process using the given id
match args.entry {

View File

@ -37,7 +37,7 @@ impl<'a> Command<'a> for SheetCommand {
E: Write,
{
if let Some(sheet) = args.sheet {
let current_sheet = streams.db.current_sheet()?.unwrap_or_else(|| "default".into());
let current_sheet = streams.db.current_sheet()?;
// sheet given, switch to it
let move_to = if sheet == "-" {
@ -88,7 +88,7 @@ mod tests {
SheetCommand::handle(args, &mut streams, &facts).unwrap();
assert_eq!(streams.db.current_sheet().unwrap().unwrap(), "new_sheet");
assert_eq!(streams.db.current_sheet().unwrap(), "new_sheet");
assert_eq!(Ps(&String::from_utf8_lossy(&streams.out)), Ps("Switching to sheet 'new_sheet'\n"));
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
}
@ -105,7 +105,7 @@ mod tests {
SheetCommand::handle(args, &mut streams, &facts).unwrap();
assert_eq!(streams.db.current_sheet().unwrap().unwrap(), "foo");
assert_eq!(streams.db.current_sheet().unwrap(), "foo");
assert_eq!(Ps(&String::from_utf8_lossy(&streams.out)), Ps("Already on sheet 'foo'\n"));
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
}
@ -123,7 +123,7 @@ mod tests {
SheetCommand::handle(args, &mut streams, &facts).unwrap();
assert_eq!(streams.db.current_sheet().unwrap().unwrap(), "var");
assert_eq!(streams.db.current_sheet().unwrap(), "var");
assert_eq!(streams.db.last_sheet().unwrap().unwrap(), "foo");
assert_eq!(Ps(&String::from_utf8_lossy(&streams.out)), Ps("Switching to sheet 'var'\n"));
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));

View File

@ -195,10 +195,10 @@ pub trait Database {
}
// Meta queries
fn current_sheet(&self) -> Result<Option<String>> {
fn current_sheet(&self) -> Result<String> {
let results = self.meta_query("select * from meta where key='current_sheet'", &[])?;
Ok(results.into_iter().next().map(|m| m.value))
Ok(results.into_iter().next().map(|m| m.value).unwrap_or_else(|| "default".to_owned()))
}
fn last_sheet(&self) -> Result<Option<String>> {