### <!-- About tasks --> <!-- This form is for creating a specific, actionable task. Tasks should be small enough to be completed by one person in a short amount of time. --> ### <h2> Task Description & Context </h2> <!-- Briefly describe what needs to be done and why. Example: Create the backend API endpoint for liking a video. The endpoint will handle authentication, database updates, and return the correct response codes. --> ### <h2> Subtasks </h2> <!-- Break down the task into a checklist of specific, actionable subtasks. This is your "how-to" guide for meeting the Task Acceptance Criteria. Example: - [ ] Create the POST /api/v1/video/{id}/like route and its controller function. - [ ] Implement the LikeService logic to handle successful like/unlike operations, 404 (video not found), and 409 (already liked) responses. - [ ] Apply JWT authentication middleware to the new like route to ensure it's protected. - [ ] Write unit tests for LikeService covering all scenarios. - [ ] Document the new endpoint in the OpenAPI/Swagger spec. --> ### <h2> Task Acceptance Criteria </h2> <!-- List specific and verifiable outcomes. This is what will be checked during review. Example: - [ ] A `POST` route is created at `/api/v1/video/{id}/like`. - [ ] The route is protected and requires a valid JWT. - [ ] A successful request returns a `200 OK` status. - [ ] A request for a video the user has already liked returns a `409 Conflict`. - [ ] A request with a non-existent `video_id` returns a `404 Not Found`. - [ ] Unit tests for the `LikeService` are written and pass with >90% coverage. - [ ] The new endpoint is documented in the OpenAPI/Swagger spec. --> ### <h2> Sub-issues </h2> Sub-issues are blockers for this task.
Task Description & Context
Subtasks
Task Acceptance Criteria
Sub-issues
Sub-issues are blockers for this task.