From 8065010d4ad87a24d45b04a7d2bd2910c3cab942 Mon Sep 17 00:00:00 2001
From: Laurine <lenetlaurine@gmail.com>
Date: Wed, 13 Sep 2023 14:05:24 +0200
Subject: [PATCH] finish major controller

---
 back-skeleton/README.MD                       |  1 +
 .../com/takima/backskeleton/DAO/MajorDao.java | 15 +++++++++++
 .../controllers/MajorController.java          | 27 +++++++++++++++++++
 .../takima/backskeleton/models/Course.java    |  2 --
 .../com/takima/backskeleton/models/Major.java |  1 -
 .../backskeleton/services/MajorService.java   | 26 ++++++++++++++++++
 6 files changed, 69 insertions(+), 3 deletions(-)
 create mode 100644 back-skeleton/src/main/java/com/takima/backskeleton/DAO/MajorDao.java
 create mode 100644 back-skeleton/src/main/java/com/takima/backskeleton/controllers/MajorController.java
 create mode 100644 back-skeleton/src/main/java/com/takima/backskeleton/services/MajorService.java

diff --git a/back-skeleton/README.MD b/back-skeleton/README.MD
index 4ec03ee..4bebebf 100644
--- a/back-skeleton/README.MD
+++ b/back-skeleton/README.MD
@@ -2,6 +2,7 @@
 
 ## Set up 
 1. Copie-colle le .env.sample en .env
+2. Fait un `docker-compose up`
 2. Rajoute le pluggin : https://plugins.jetbrains.com/plugin/7861-envfile
 3. <img src="img-readme/img.png">
 3. <img src="img-readme/img_1.png">
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/DAO/MajorDao.java b/back-skeleton/src/main/java/com/takima/backskeleton/DAO/MajorDao.java
new file mode 100644
index 0000000..9d54218
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/DAO/MajorDao.java
@@ -0,0 +1,15 @@
+package com.takima.backskeleton.DAO;
+
+import com.takima.backskeleton.models.Major;
+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 MajorDao extends JpaRepository<Major, Long> {
+    @Query("SELECT m.students FROM Major m WHERE m.id= :majorId")
+    List<Student> getAllStudentsFromMajor(Long majorId);
+}
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/controllers/MajorController.java b/back-skeleton/src/main/java/com/takima/backskeleton/controllers/MajorController.java
new file mode 100644
index 0000000..b531543
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/controllers/MajorController.java
@@ -0,0 +1,27 @@
+package com.takima.backskeleton.controllers;
+
+import com.takima.backskeleton.models.Major;
+import com.takima.backskeleton.models.Student;
+import com.takima.backskeleton.services.MajorService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@CrossOrigin
+@RequestMapping("majors")
+@RestController
+@RequiredArgsConstructor
+public class MajorController {
+    private final MajorService majorService;
+
+    @GetMapping("")
+    public List<Major> findAll() {
+        return majorService.findAll();
+    }
+
+    @GetMapping("/{id}/students")
+    public List<Student> getStudentsOfMajor(@PathVariable Long id) {
+        return majorService.getStudentsOfMajor(id);
+    }
+}
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java
index c0ed9ab..bf8cd46 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java
@@ -1,9 +1,7 @@
 package com.takima.backskeleton.models;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonManagedReference;
 import jakarta.persistence.*;
-import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java
index 57a2e8a..4746c4c 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java
@@ -2,7 +2,6 @@ package com.takima.backskeleton.models;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import jakarta.persistence.*;
-import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/services/MajorService.java b/back-skeleton/src/main/java/com/takima/backskeleton/services/MajorService.java
new file mode 100644
index 0000000..03feb0f
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/services/MajorService.java
@@ -0,0 +1,26 @@
+package com.takima.backskeleton.services;
+
+import com.takima.backskeleton.DAO.MajorDao;
+import com.takima.backskeleton.models.Major;
+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 MajorService {
+    private final MajorDao majorDao;
+    public List<Major> findAll() {
+        Iterable<Major> it = majorDao.findAll();
+        List <Major> majors = new ArrayList<>();
+        it.forEach(majors::add);
+        return majors;
+    }
+
+    public List<Student> getStudentsOfMajor(Long id) {
+        return majorDao.getAllStudentsFromMajor(id);
+    }
+}
-- 
GitLab