GradeHistoryController.java

  1. package edu.ucsb.cs156.courses.controllers;

  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import edu.ucsb.cs156.courses.entities.GradeHistory;
  4. import edu.ucsb.cs156.courses.repositories.GradeHistoryRepository;
  5. import edu.ucsb.cs156.courses.utilities.CourseUtilities;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import io.swagger.v3.oas.annotations.Parameter;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.GetMapping;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.RestController;

  15. @Slf4j
  16. @Tag(name = "API for grade history data")
  17. @RequestMapping("/api/gradehistory")
  18. @RestController
  19. public class GradeHistoryController extends ApiController {
  20.   @Autowired GradeHistoryRepository gradeHistoryRepository;

  21.   @Autowired ObjectMapper mapper;

  22.   @Operation(summary = "Get grade history for a course")
  23.   @GetMapping(value = "/search", produces = "application/json")
  24.   public Iterable<GradeHistory> gradeHistoryBySubjectAreaAndCourseNumber(
  25.       @Parameter(
  26.               name = "subjectArea",
  27.               description = "Subjects of UCSB",
  28.               example = "CMPSC",
  29.               required = true)
  30.           @RequestParam
  31.           String subjectArea,
  32.       @Parameter(
  33.               name = "courseNumber",
  34.               description = "Represents a subject-specific course",
  35.               example = "130A",
  36.               required = true)
  37.           @RequestParam
  38.           String courseNumber) {
  39.     String course = CourseUtilities.makeFormattedCourseId(subjectArea, courseNumber);
  40.     Iterable<GradeHistory> gradeHistoryRows = gradeHistoryRepository.findByCourse(course);
  41.     return gradeHistoryRows;
  42.   }
  43. }