Skip to content

Commit 1189a56

Browse files
committed
fixed show_task function to check for empty list, added total and remaining tasks
1 parent 89fd1c7 commit 1189a56

5 files changed

Lines changed: 33 additions & 11 deletions

File tree

data/tasks.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,9 @@
1414
{
1515
"desc": "abcdef",
1616
"completed": false
17+
},
18+
{
19+
"desc": "this is to check complete and delete",
20+
"completed": true
1721
}
1822
]

src/commands/complete.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
use crate::storage::{load_tasks, save_tasks, show_tasks};
22

3-
pub fn complete(id: i32) {
3+
pub fn complete(id: u32) {
44
let mut tasks = load_tasks();
5-
if id == 0 || id > tasks.len() as i32 {
5+
if id == 0 || id > tasks.len() as u32 {
66
println!("Invalid task ID");
77
show_tasks();
88
return;
99
}
1010
let index = (id - 1) as usize;
11-
tasks[index].completed = true;
12-
save_tasks(&tasks);
13-
show_tasks();
11+
12+
if tasks[index].completed {
13+
println!(r#"Task already completed: "{}""#, tasks[index].desc);
14+
}
15+
else{
16+
tasks[index].completed = true;
17+
save_tasks(&tasks);
18+
println!(r#"Marked as complete: "{}" successfully."#, tasks[index].desc);
19+
show_tasks();
20+
21+
}
1422
}

src/commands/delete.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::storage::{load_tasks, save_tasks, show_tasks};
22

3-
pub fn delete(id: i32) {
3+
pub fn delete(id: u32) {
44
let mut tasks = load_tasks();
5-
if id == 0 || id > tasks.len() as i32 {
5+
if id == 0 || id > tasks.len() as u32 {
66
println!("Invalid input, nothing was deleted, \nTry Again");
77
show_tasks();
88
return;
@@ -15,6 +15,6 @@ pub fn delete(id: i32) {
1515
.filter_map(|(i, task)| if i != index {Some(task)} else{None})
1616
.collect();
1717
save_tasks(&tasks);
18-
println!(r#"Deleted Task: "{}" successfully"#, deleted);
18+
println!(r#"Deleted Task: "{}" successfully."#, deleted);
1919
show_tasks();
2020
}

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ struct Cli {
2020
enum Commands {
2121
Add { desc: String },
2222
List,
23-
Complete { id: i32 },
24-
Delete { id: i32 },
23+
Complete { id: u32 },
24+
Delete { id: u32 },
2525
}
2626

2727
fn main() {

src/storage/file.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,18 @@ pub fn save_tasks(tasks: &Vec<Task>) {
3030

3131
pub fn show_tasks() {
3232
let tasks = load_tasks();
33+
if tasks.is_empty() {
34+
println!("No task found.");
35+
return;
36+
}
3337
for (i, task) in tasks.iter().enumerate() {
3438
let status = if task.completed { "[x]" } else { "[ ]" };
35-
println!("{} {} {} ", i + 1, status, task.desc);
39+
println!("{:>3}. {:>3} {} ", i + 1, status, task.desc);
3640
}
41+
let total = tasks.iter().filter(|t| !t.completed).count();
42+
println!(
43+
"\nTotal Tasks: {} | Remaining Tasks: {}\n",
44+
tasks.iter().len(),
45+
total
46+
);
3747
}

0 commit comments

Comments
 (0)