database returns default sheet even it there is no record
This commit is contained in:
parent
9eea9af249
commit
23cc987266
|
@ -53,7 +53,7 @@ impl<'a> Command<'a> for ArchiveCommand {
|
||||||
let mut entries = {
|
let mut entries = {
|
||||||
let start = args.start.map(|s| time_or_warning(s, &streams.db)).transpose()?.map(|s| s.0);
|
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 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);
|
let sheet = args.sheet.unwrap_or(current_sheet);
|
||||||
|
|
||||||
streams.db.entries_by_sheet(&sheet, start, end)?
|
streams.db.entries_by_sheet(&sheet, start, end)?
|
||||||
|
|
|
@ -59,7 +59,7 @@ where
|
||||||
Some(Sheet::Full) => streams.db.entries_full(start, end)?,
|
Some(Sheet::Full) => streams.db.entries_full(start, end)?,
|
||||||
Some(Sheet::Sheet(name)) => streams.db.entries_by_sheet(&name, start, end)?,
|
Some(Sheet::Sheet(name)) => streams.db.entries_by_sheet(&name, start, end)?,
|
||||||
None => {
|
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(¤t_sheet, start, end)?
|
streams.db.entries_by_sheet(¤t_sheet, start, end)?
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ impl<'a> Command<'a> for EditCommand {
|
||||||
O: Write,
|
O: Write,
|
||||||
E: 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 needs_warning = streams.db.version()? == DBVersion::Timetrap;
|
||||||
|
|
||||||
let entry = if let Some(id) = args.id {
|
let entry = if let Some(id) = args.id {
|
||||||
|
|
|
@ -42,7 +42,7 @@ impl<'a> Command<'a> for InCommand {
|
||||||
E: Write,
|
E: Write,
|
||||||
{
|
{
|
||||||
let start = args.at.unwrap_or(facts.now);
|
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() {
|
if streams.db.running_entry(&sheet)?.is_some() {
|
||||||
writeln!(streams.out, "Timer is already running for sheet '{}'", sheet)?;
|
writeln!(streams.out, "Timer is already running for sheet '{}'", sheet)?;
|
||||||
|
|
|
@ -56,11 +56,9 @@ impl<'a> Command<'a> for ListCommand {
|
||||||
let last = streams.db.last_sheet()?;
|
let last = streams.db.last_sheet()?;
|
||||||
|
|
||||||
// introducte two fake entries to make both current and last show up
|
// introducte two fake entries to make both current and last show up
|
||||||
if let Some(ref current) = current {
|
|
||||||
entries.push(Entry {
|
entries.push(Entry {
|
||||||
id: 1, sheet: current.clone(), start: facts.now, end: Some(facts.now), note: None,
|
id: 1, sheet: current.clone(), start: facts.now, end: Some(facts.now), note: None,
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
entries.sort_unstable_by_key(|e| e.sheet.clone());
|
entries.sort_unstable_by_key(|e| e.sheet.clone());
|
||||||
|
|
||||||
|
@ -87,7 +85,7 @@ impl<'a> Command<'a> for ListCommand {
|
||||||
total = total + s_total;
|
total = total + s_total;
|
||||||
|
|
||||||
(
|
(
|
||||||
if current.as_ref() == Some(&key) {
|
if current == key {
|
||||||
"*".into()
|
"*".into()
|
||||||
} else if last.as_ref() == Some(&key) {
|
} else if last.as_ref() == Some(&key) {
|
||||||
"-".into()
|
"-".into()
|
||||||
|
|
|
@ -62,7 +62,7 @@ impl<'a> Command<'a> for NowCommand {
|
||||||
|
|
||||||
for entry in entries {
|
for entry in entries {
|
||||||
tabs.feed(vec![
|
tabs.feed(vec![
|
||||||
if current.as_ref() == Some(&entry.sheet) {
|
if current == entry.sheet {
|
||||||
"*".into()
|
"*".into()
|
||||||
} else if last.as_ref() == Some(&entry.sheet) {
|
} else if last.as_ref() == Some(&entry.sheet) {
|
||||||
"-".into()
|
"-".into()
|
||||||
|
|
|
@ -40,7 +40,7 @@ impl<'a> Command<'a> for OutCommand {
|
||||||
E: Write,
|
E: Write,
|
||||||
{
|
{
|
||||||
let end = args.at.unwrap_or(facts.now);
|
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)?;
|
let (end, needs_warning) = time_or_warning(end, &streams.db)?;
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ impl<'a> Command<'a> for ResumeCommand {
|
||||||
O: Write,
|
O: Write,
|
||||||
E: 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
|
// First try to process using the given id
|
||||||
match args.entry {
|
match args.entry {
|
||||||
|
|
|
@ -37,7 +37,7 @@ impl<'a> Command<'a> for SheetCommand {
|
||||||
E: Write,
|
E: Write,
|
||||||
{
|
{
|
||||||
if let Some(sheet) = args.sheet {
|
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
|
// sheet given, switch to it
|
||||||
let move_to = if sheet == "-" {
|
let move_to = if sheet == "-" {
|
||||||
|
@ -88,7 +88,7 @@ mod tests {
|
||||||
|
|
||||||
SheetCommand::handle(args, &mut streams, &facts).unwrap();
|
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.out)), Ps("Switching to sheet 'new_sheet'\n"));
|
||||||
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
|
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ mod tests {
|
||||||
|
|
||||||
SheetCommand::handle(args, &mut streams, &facts).unwrap();
|
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.out)), Ps("Already on sheet 'foo'\n"));
|
||||||
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
|
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ mod tests {
|
||||||
|
|
||||||
SheetCommand::handle(args, &mut streams, &facts).unwrap();
|
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!(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.out)), Ps("Switching to sheet 'var'\n"));
|
||||||
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
|
assert_eq!(Ps(&String::from_utf8_lossy(&streams.err)), Ps(""));
|
||||||
|
|
|
@ -195,10 +195,10 @@ pub trait Database {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Meta queries
|
// 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'", &[])?;
|
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>> {
|
fn last_sheet(&self) -> Result<Option<String>> {
|
||||||
|
|
Loading…
Reference in New Issue