Skip to content
Snippets Groups Projects
Commit e9ca6193 authored by Laurine's avatar Laurine
Browse files

add controllers

parent bd1fa1c6
Branches
No related tags found
No related merge requests found
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<properties> <properties>
<java.version>17</java.version> <java.version>17</java.version>
<lombok.version>1.18.20</lombok.version> <lombok.version>1.18.20</lombok.version>
<springdoc.version>2.2.0</springdoc.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
...@@ -43,6 +44,11 @@ ...@@ -43,6 +44,11 @@
<version>${lombok.version}</version> <version>${lombok.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.takima.backskeleton.DAO;
import com.takima.backskeleton.models.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface StudentDao extends JpaRepository<Student, Long> {
@Query("SELECT s FROM Student s JOIN s.courses c WHERE c.id= :courseId AND s.major.id = :majorId ")
List<Student> findByMajorIdAndCourseId(int majorId, int courseId);
}
package com.takima.backskeleton.controllers;
import com.takima.backskeleton.models.Student;
import com.takima.backskeleton.services.StudentService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@CrossOrigin
@RequestMapping("students")
@RestController
@RequiredArgsConstructor
public class StudentController {
private final StudentService studentService;
@GetMapping("")
public List<Student> listStudents(@RequestParam(required = false) Integer majorId, @RequestParam(required = false) Integer courseId) {
if (majorId != null && courseId !=null) {
return studentService.searchByMajorAndCourse(majorId, courseId);
}
return studentService.findAll();
}
@DeleteMapping("/{id}")
public void deleteStudent(@PathVariable Long id) {
studentService.deleteById(id);
}
@PostMapping("")
public void addStudent(@RequestBody Student student) {
studentService.addStudent(student);
}
}
package com.takima.backskeleton.models; package com.takima.backskeleton.models;
import jakarta.persistence.Entity; import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.GeneratedValue; import com.fasterxml.jackson.annotation.JsonManagedReference;
import jakarta.persistence.GenerationType; import jakarta.persistence.*;
import jakarta.persistence.Id;
import lombok.Builder; import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@Entity(name = "courses") import java.util.List;
@Entity
@Table(name = "courses")
@NoArgsConstructor @NoArgsConstructor
@Getter
public class Course { public class Course {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
private String name; private String name;
private Integer hours; private Integer hours;
@ManyToMany(mappedBy = "courses")
@JsonIgnore
List<Student> students;
} }
package com.takima.backskeleton.models; package com.takima.backskeleton.models;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Builder; import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
@Entity(name = "majors") @Entity
@Table(name = "majors")
@Getter
@NoArgsConstructor @NoArgsConstructor
public class Major { public class Major {
@Id @Id
...@@ -15,6 +19,7 @@ public class Major { ...@@ -15,6 +19,7 @@ public class Major {
private String name; private String name;
private String description; private String description;
@OneToMany(mappedBy = "major") @OneToMany(mappedBy = "major")
@JsonIgnore
private List<Student> students; private List<Student> students;
} }
......
package com.takima.backskeleton.models; package com.takima.backskeleton.models;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
@Entity @Entity
@Table(name = "students") @Table(name = "students")
@Getter
public class Student { public class Student {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
...@@ -16,7 +18,7 @@ public class Student { ...@@ -16,7 +18,7 @@ public class Student {
@Column(name = "last_name") @Column(name = "last_name")
private String lastName; private String lastName;
private Instant birthdate; private Instant birthdate;
@ManyToMany(mappedBy="student") @ManyToMany
@JoinTable( @JoinTable(
name = "student_course", name = "student_course",
joinColumns = @JoinColumn(name = "student_id"), joinColumns = @JoinColumn(name = "student_id"),
...@@ -74,7 +76,4 @@ public class Student { ...@@ -74,7 +76,4 @@ public class Student {
return new Student(this); return new Student(this);
} }
} }
} }
package com.takima.backskeleton.services;
import com.takima.backskeleton.DAO.StudentDao;
import com.takima.backskeleton.models.Student;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@RequiredArgsConstructor
public class StudentService {
private final StudentDao studentDao;
public List<Student> findAll() {
Iterable<Student> it = studentDao.findAll();
List <Student> users = new ArrayList<>();
it.forEach(users::add);
return users ;
}
public void deleteById(Long id) {
studentDao.deleteById(id);
}
public void addStudent(Student student) {
studentDao.save(student);
}
public List<Student> searchByMajorAndCourse(int majorId, int courseId) {
return studentDao.findByMajorIdAndCourseId(majorId, courseId);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment