jreed-Aces / note-taker

0 stars 0 forks source link

Sweep: Add another parameter to set a note's status #26

Closed jreed-Aces closed 1 year ago

jreed-Aces commented 1 year ago

Status should be a enum. A note can either be "Open" or "Completed". Add this field to the Note object and set all new notes to "Open".

Add another command that allows a Note's status to be updated to either "Open" or "Completed".

Update the print command to only show "Open" notes by default. Another parameter, named "all" would show both open and completed notes.

Do not remove the addnote command functionality.

The data manipulation to change the note's status should be in the note service.

Checklist - [X] `Note.cs` > • Add a new public enum named "Status" with two values: "Open" and "Completed". > • Add a new public property of type "Status" named "NoteStatus" to the Note class. > • Modify the Note constructor to set the "NoteStatus" property to "Open" by default. - [X] `Services/NoteService.cs` > • Add a new method named "UpdateNoteStatus" that takes two parameters: an int for the note id and a Status for the new status. This method should find the note with the given id and update its status. > • Modify the "PrintNotes" method to take a new bool parameter named "all". If "all" is false, the method should only return notes where "NoteStatus" is "Open". If "all" is true, it should return all notes. - [X] `Services/INoteService.cs` > • Add a new method signature for "UpdateNoteStatus" that matches the one in NoteService. - [X] `Program.cs` > • Add a new command named "update" with two arguments: "id" and "status". The "status" argument should be parsed to the Status enum. The command handler should call the "UpdateNoteStatus" method in the NoteService. > • Modify the "print" command to take a new option named "--all". The command handler should pass the value of this option to the "PrintNotes" method in the NoteService.
sweep-ai[bot] commented 1 year ago

Here's the PR! https://github.com/jreed-Aces/note-taker/pull/28.

⚡ Sweep Free Trial: I used GPT-3.5 to create this ticket. You have 4 GPT-4 tickets left for the month and 0 for the day. For more GPT-4 tickets, visit our payment portal. To retrigger Sweep edit the issue.


Step 1: 🔍 Code Search

I found the following snippets in your repository. I will now analyze these snippets and come up with a plan.

Some code snippets I looked at (click to expand). If some file is missing from here, you can mention the path in the ticket description. https://github.com/jreed-Aces/note-taker/blob/756bd5c2d3e4e3bf1943e72441a4220e74b728dc/README.md#L1-L13 https://github.com/jreed-Aces/note-taker/blob/756bd5c2d3e4e3bf1943e72441a4220e74b728dc/Services/INoteService.cs#L1-L11 https://github.com/jreed-Aces/note-taker/blob/756bd5c2d3e4e3bf1943e72441a4220e74b728dc/Note.cs#L1-L16 https://github.com/jreed-Aces/note-taker/blob/756bd5c2d3e4e3bf1943e72441a4220e74b728dc/Program.cs#L1-L46 https://github.com/jreed-Aces/note-taker/blob/756bd5c2d3e4e3bf1943e72441a4220e74b728dc/Services/NoteService.cs#L1-L44

Step 2: 🧐 Snippet Analysis

From looking through the relevant snippets, I decided to make the following modifications:

File Path Proposed Changes
Note.cs Modify Note.cs with contents:
• Add a new public enum named "Status" with two values: "Open" and "Completed".
• Add a new public property of type "Status" named "NoteStatus" to the Note class.
• Modify the Note constructor to set the "NoteStatus" property to "Open" by default.
Services/NoteService.cs Modify Services/NoteService.cs with contents:
• Add a new method named "UpdateNoteStatus" that takes two parameters: an int for the note id and a Status for the new status. This method should find the note with the given id and update its status.
• Modify the "PrintNotes" method to take a new bool parameter named "all". If "all" is false, the method should only return notes where "NoteStatus" is "Open". If "all" is true, it should return all notes.
Services/INoteService.cs Modify Services/INoteService.cs with contents:
• Add a new method signature for "UpdateNoteStatus" that matches the one in NoteService.
Program.cs Modify Program.cs with contents:
• Add a new command named "update" with two arguments: "id" and "status". The "status" argument should be parsed to the Status enum. The command handler should call the "UpdateNoteStatus" method in the NoteService.
• Modify the "print" command to take a new option named "--all". The command handler should pass the value of this option to the "PrintNotes" method in the NoteService.

Step 3: 📝 Planning

I have created a plan for writing the pull request. I am now working my plan and coding the required changes to address this issue. Here is the planned pull request:

Add status field and update note service and commands sweep/add-status-field

Description

This PR adds a new status field to the Note class, updates the NoteService to handle note status updates, and modifies the commands in the Program class to support updating and printing notes based on their status.

Summary of Changes

  • Added a new enum field named "NoteStatus" to the Note class with two possible values: "Open" and "Completed". All new notes are set to "Open" by default.
  • Added a new method named "UpdateNoteStatus" to the NoteService class that allows updating a note's status based on its id.
  • Modified the "PrintNotes" method in the NoteService class to filter notes based on their status. By default, only "Open" notes are returned, but a new "all" parameter can be used to retrieve both "Open" and "Completed" notes.
  • Added a new command named "update" to the Program class that allows updating a note's status. This command takes two arguments: "id" for the note id and "status" for the new status.
  • Modified the "print" command in the Program class to accept a new option named "--all" that controls whether all notes or only "Open" notes are printed.

Please review and merge this PR to add the requested functionality.


Step 4: ⌨️ Coding

File Instructions Progress
Note.cs Modify Note.cs with contents:
• Add a new public enum named "Status" with two values: "Open" and "Completed".
• Add a new public property of type "Status" named "NoteStatus" to the Note class.
• Modify the Note constructor to set the "NoteStatus" property to "Open" by default.
✅ Commit 8100423
Services/NoteService.cs Modify Services/NoteService.cs with contents:
• Add a new method named "UpdateNoteStatus" that takes two parameters: an int for the note id and a Status for the new status. This method should find the note with the given id and update its status.
• Modify the "PrintNotes" method to take a new bool parameter named "all". If "all" is false, the method should only return notes where "NoteStatus" is "Open". If "all" is true, it should return all notes.
✅ Commit 8100423
Services/INoteService.cs Modify Services/INoteService.cs with contents:
• Add a new method signature for "UpdateNoteStatus" that matches the one in NoteService.
✅ Commit f509276
Program.cs Modify Program.cs with contents:
• Add a new command named "update" with two arguments: "id" and "status". The "status" argument should be parsed to the Status enum. The command handler should call the "UpdateNoteStatus" method in the NoteService.
• Modify the "print" command to take a new option named "--all". The command handler should pass the value of this option to the "PrintNotes" method in the NoteService.
✅ Commit 15f6de0 I have finished coding the issue. I am now reviewing it for completeness.

Step 5: 🔁 Code Review

Here are my self-reviews of my changes at sweep/add-status-field.

Here is the 1st review

No changes required. The code changes are correctly implemented and there are no unimplemented sections or errors. Good job!

I finished incorporating these changes.


To recreate the pull request edit the issue title or description. Join Our Discord