Skip to content

Feature: Add Note to Budget Command#179

Open
EstherNyumu wants to merge 2 commits intoitalanta:mainfrom
EstherNyumu:feat/add-budget-note-command
Open

Feature: Add Note to Budget Command#179
EstherNyumu wants to merge 2 commits intoitalanta:mainfrom
EstherNyumu:feat/add-budget-note-command

Conversation

@EstherNyumu
Copy link
Copy Markdown

This PR implements adding a note to a budget feature.

The Handler Class, AddNoteToBudgetHandler extends FunctionHandler<AddNoteToBudgetCommand, AddNoteToBudgetResult>. This ensures proper alignment with the repo’s serverless function pattern.
The Command Class, AddNoteToBudgetCommand carries the required data (budgetId, content, createdBy) to execute the operation.
The Result Class, AddNoteToBudgetResult returns a success flag which can be used to say to determine if the note has been added successfully, and the noteId of the newly created note.
The handler performs basic validation where the budgetId must be present, and the content for the content cannot be empty.
The getRepository method from tools is used to call addNote. This ensures decoupling from the actual database implementation and aligns with dependency injection practices.
The handler can be deployed as a serverless function in Google Cloud Functions via the existing monorepo tooling (@ngfi/functions).
Each execution of AddNoteToBudgetHandler is stateless, allowing horizontal scaling automatically in a serverless environment. The use of getRepository abstracts data access, so the handler remains lightweight and can scale without database connection bottlenecks. The validation ensures that invalid commands are rejected early, reducing unnecessary load on the backend.

This PR adds the command, result, and handler for Add Note to Budget it implements validation and repository integration, it fully adheres to the CQRS pattern and FunctionHandler architecture, it supports serverless deployment and scalable execution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant