feat(api): implement notes feature #7
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds full CRUD functionality for user notes, including advanced filtering, sorting, and pagination.
Description:
This pull request introduces the full backend implementation for the user notes feature, allowing learners to create, manage, and review personal notes associated with topics.
Key Changes:
Database: Added a Note model to the Prisma schema with relationships to User, Topic, and Course for efficient filtering.
API Endpoints: Implemented a new set of RESTful endpoints under /api/notes and /api/topics/:topicId/notes for complete CRUD functionality.
Business Logic: Created a dedicated note.service.ts to encapsulate all business logic, ensuring a clean separation of concerns.
Validation: Integrated Zod schemas for rigorous validation of all incoming requests, including query parameters for advanced filtering, sorting, search, and pagination.
Security: All new endpoints are protected and require user authentication. Authorization checks are in place to ensure users can only access and modify their own notes.