feat: adds remaining Navigator actions
This commit is contained in:
parent
7ec23699a8
commit
786ab80474
6
flake.lock
generated
6
flake.lock
generated
@ -30,11 +30,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722738111,
|
"lastModified": 1723429325,
|
||||||
"narHash": "sha256-cWD5pCs9AYb+512/yCx9D0Pl5KcmyuXHeJpsDw/D1vs=",
|
"narHash": "sha256-4x/32xTCd+xCwFoI/kKSiCr5LQA2ZlyTRYXKEni5HR8=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "27ec296d93cb4b2d03e8cbd019b1b4cde8c34280",
|
"rev": "65e3dc0fe079fe8df087cd38f1fe6836a0373aad",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -16,7 +16,7 @@ pub struct Navigator {
|
|||||||
impl Navigator {
|
impl Navigator {
|
||||||
pub fn new(db: Rc<JiraDatabase>) -> Self {
|
pub fn new(db: Rc<JiraDatabase>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
pages: vec![],
|
pages: vec![Box::new(HomePage::new(Rc::clone(&db)))],
|
||||||
prompts: Prompts::new(),
|
prompts: Prompts::new(),
|
||||||
db,
|
db,
|
||||||
}
|
}
|
||||||
@ -49,28 +49,41 @@ impl Navigator {
|
|||||||
}
|
}
|
||||||
Action::CreateEpic => {
|
Action::CreateEpic => {
|
||||||
// prompt the user to create a new epic and persist it in the database
|
// prompt the user to create a new epic and persist it in the database
|
||||||
self.db.create_epic((self.prompts.create_epic)());
|
self.db
|
||||||
|
.create_epic((self.prompts.create_epic)())
|
||||||
|
.with_context(|| format!("failed to create epic"))?;
|
||||||
}
|
}
|
||||||
Action::UpdateEpicStatus { epic_id } => {
|
Action::UpdateEpicStatus { epic_id } => {
|
||||||
todo!(); // prompt the user to update status and persist it in the database
|
// prompt the user to update status and persist it in the database
|
||||||
// let status = (self.prompts.update_status)().(|| {
|
let status = (self.prompts.update_status)()
|
||||||
// return Err(anyhow!("failed to update epic status")
|
.with_context(|| format!("invalid status: {epic_id}"))?;
|
||||||
// .context(format!("invalid status given")));
|
self.db.update_epic_status(epic_id, status)?;
|
||||||
// });
|
|
||||||
self.db
|
|
||||||
.update_epic_status(epic_id, crate::models::Status::Open);
|
|
||||||
}
|
}
|
||||||
Action::DeleteEpic { epic_id } => {
|
Action::DeleteEpic { epic_id } => {
|
||||||
todo!() // prompt the user to delete the epic and persist it in the database
|
// prompt the user to delete the epic and persist it in the database
|
||||||
|
self.db
|
||||||
|
.delete_epic(epic_id)
|
||||||
|
.with_context(|| format!("failed to delete epic: {epic_id}"))?;
|
||||||
}
|
}
|
||||||
Action::CreateStory { epic_id } => {
|
Action::CreateStory { epic_id } => {
|
||||||
todo!() // prompt the user to create a new story and persist it in the database
|
// prompt the user to create a new story and persist it in the database
|
||||||
|
self.db
|
||||||
|
.create_story((self.prompts.create_story)(), epic_id)
|
||||||
|
.with_context(|| format!("failed to create story: {epic_id}"))?;
|
||||||
}
|
}
|
||||||
Action::UpdateStoryStatus { story_id } => {
|
Action::UpdateStoryStatus { story_id } => {
|
||||||
todo!() // prompt the user to update status and persist it in the database
|
// prompt the user to update status and persist it in the database
|
||||||
|
let status = (self.prompts.update_status)()
|
||||||
|
.with_context(|| format!("invalid status: {story_id}"))?;
|
||||||
|
self.db.update_story_status(story_id, status)?;
|
||||||
}
|
}
|
||||||
Action::DeleteStory { epic_id, story_id } => {
|
Action::DeleteStory { epic_id, story_id } => {
|
||||||
todo!() // prompt the user to delete the story and persist it in the database
|
// prompt the user to delete the story and persist it in the database
|
||||||
|
if (self.prompts.delete_story)() {
|
||||||
|
self.db
|
||||||
|
.delete_story(epic_id, story_id)
|
||||||
|
.with_context(|| format!("failed to delete story: {story_id}"))?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Action::Exit => {
|
Action::Exit => {
|
||||||
// remove all pages from the pages vector
|
// remove all pages from the pages vector
|
||||||
|
@ -20,6 +20,12 @@ pub trait Page {
|
|||||||
pub struct HomePage {
|
pub struct HomePage {
|
||||||
pub db: Rc<JiraDatabase>,
|
pub db: Rc<JiraDatabase>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl HomePage {
|
||||||
|
pub fn new(db: Rc<JiraDatabase>) -> Self {
|
||||||
|
Self { db }
|
||||||
|
}
|
||||||
|
}
|
||||||
impl Page for HomePage {
|
impl Page for HomePage {
|
||||||
fn draw_page(&self) -> Result<()> {
|
fn draw_page(&self) -> Result<()> {
|
||||||
println!("----------------------------- EPICS -----------------------------");
|
println!("----------------------------- EPICS -----------------------------");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user