diff --git a/first.me b/first.me deleted file mode 100644 index 6812f81..0000000 --- a/first.me +++ /dev/null @@ -1 +0,0 @@ -0.0.3 \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeController.kt b/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeController.kt index 7b1f91a..276045b 100644 --- a/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeController.kt +++ b/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeController.kt @@ -1,6 +1,7 @@ package com.aitrainer.api.controller import com.aitrainer.api.model.ExerciseTree +import com.aitrainer.api.repository.ExerciseTreeParentsRepository import com.aitrainer.api.repository.ExerciseTreeRepository import org.slf4j.LoggerFactory import org.springframework.http.ResponseEntity diff --git a/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeParentsController.kt b/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeParentsController.kt new file mode 100644 index 0000000..71f1003 --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/controller/ExerciseTreeParentsController.kt @@ -0,0 +1,25 @@ +package com.aitrainer.api.controller + +import com.aitrainer.api.model.ExerciseTreeParents +import com.aitrainer.api.repository.ExerciseTreeParentsRepository +import org.slf4j.LoggerFactory +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +@RequestMapping("/api") +class ExerciseTreeParentsController (private val exerciseTreeParentsRepository: ExerciseTreeParentsRepository) { + private val logger = LoggerFactory.getLogger(javaClass) + + @GetMapping("/exercise_tree_parents/{id}") + fun getAllByChildId(@PathVariable(value = "id") exerciseTreeParentsChildId: Long): ResponseEntity> { + val list: List = exerciseTreeParentsRepository.findByExerciseTreeChildId(exerciseTreeParentsChildId).orEmpty() + + logger.info(" -- Get All Exercise Tree Parents by $exerciseTreeParentsChildId: $list") + return if (list.isEmpty()) ResponseEntity.notFound().build() else + ResponseEntity.ok().body(list) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/model/ExerciseTree.kt b/src/main/kotlin/com/aitrainer/api/model/ExerciseTree.kt index 3415112..891f7d0 100644 --- a/src/main/kotlin/com/aitrainer/api/model/ExerciseTree.kt +++ b/src/main/kotlin/com/aitrainer/api/model/ExerciseTree.kt @@ -18,14 +18,13 @@ data class ExerciseTree ( @get: NotBlank var imageUrl: String = "", @get: NonNull var active: Boolean? - ) { @OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "exerciseTree") @Fetch(value = FetchMode.SUBSELECT) val translations: List = mutableListOf().toList() - @OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "exerciseTreeChild") + /* @OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "exerciseTreeChild") @Fetch(value = FetchMode.SUBSELECT) - val parents: List = mutableListOf().toList() + var parents: List = mutableListOf().toList()*/ } \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/model/ExerciseTreeParents.kt b/src/main/kotlin/com/aitrainer/api/model/ExerciseTreeParents.kt index d031f72..58b3aaa 100644 --- a/src/main/kotlin/com/aitrainer/api/model/ExerciseTreeParents.kt +++ b/src/main/kotlin/com/aitrainer/api/model/ExerciseTreeParents.kt @@ -9,13 +9,14 @@ data class ExerciseTreeParents ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var exerciseTreeParentsId: Long = 0, - @get: NotNull var exerciseTreeParentId: Long? -) { + @get: NotNull var exerciseTreeParentId: Long?, + @get: NotNull var exerciseTreeChildId: Long? +)/*{ @ManyToOne(fetch = FetchType.EAGER, optional = false) @JoinColumn(name = "exerciseTreeChildId", nullable = false) @JsonIgnore val exerciseTreeChild: ExerciseTree? = null } - +*/ diff --git a/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeParentsRepository.kt b/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeParentsRepository.kt new file mode 100644 index 0000000..268b012 --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeParentsRepository.kt @@ -0,0 +1,13 @@ +package com.aitrainer.api.repository + +import com.aitrainer.api.model.ExerciseTreeParents +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Query +import org.springframework.stereotype.Repository + +@Repository +interface ExerciseTreeParentsRepository : JpaRepository { + @Query("FROM ExerciseTreeParents as e " + + "WHERE exerciseTreeChildId = :id ") + fun findByExerciseTreeChildId(id: Long): List? +} \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeRepository.kt b/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeRepository.kt index 3f116bb..a4d2b9b 100644 --- a/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeRepository.kt +++ b/src/main/kotlin/com/aitrainer/api/repository/ExerciseTreeRepository.kt @@ -10,7 +10,6 @@ interface ExerciseTreeRepository : JpaRepository { @Query("FROM ExerciseTree as e " + "LEFT JOIN ExerciseTreeTranslation as t ON e.treeId = t.exerciseTree AND t.languageCode = 'hu' " + - "LEFT JOIN ExerciseTreeParents as p ON e.treeId = p.exerciseTreeChild " + "WHERE e.active = 1 " + "ORDER BY e.treeId ") fun getActiveMenu(): List diff --git a/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeParentsTest.kt b/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeParentsTest.kt new file mode 100644 index 0000000..0205467 --- /dev/null +++ b/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeParentsTest.kt @@ -0,0 +1,33 @@ +package com.aitrainer.api.test + + +import com.aitrainer.api.controller.ExerciseTreeController +import com.aitrainer.api.controller.ExerciseTreeParentsController +import com.aitrainer.api.model.ExerciseTree +import com.aitrainer.api.model.ExerciseTreeParents +import com.aitrainer.api.repository.ExerciseTreeParentsRepository +import com.aitrainer.api.repository.ExerciseTreeRepository +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.http.ResponseEntity +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +@SpringBootTest +class ExerciseTreeParentsTest { + + @Autowired + private lateinit var exerciseTreeParentsRepository: ExerciseTreeParentsRepository + @Test + fun testTreeParents() { + val exerciseTreeParentsController = ExerciseTreeParentsController(exerciseTreeParentsRepository) + val responseEntity: ResponseEntity> = exerciseTreeParentsController.getAllByChildId(20) + + assertTrue(responseEntity.body!!.isNotEmpty()) + val exerciseTreeParentList = responseEntity.body!! + assertEquals(exerciseTreeParentList.size, 2) + assertEquals(exerciseTreeParentList[0].exerciseTreeParentId, 9) + assertEquals(exerciseTreeParentList[1].exerciseTreeParentId, 10) + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeTest.kt b/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeTest.kt index dde66c4..c37e6e5 100644 --- a/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeTest.kt +++ b/src/test/kotlin/com/aitrainer/api/test/ExerciseTreeTest.kt @@ -3,6 +3,7 @@ package com.aitrainer.api.test import com.aitrainer.api.controller.ExerciseTreeController import com.aitrainer.api.model.ExerciseTree +import com.aitrainer.api.repository.ExerciseTreeParentsRepository import com.aitrainer.api.repository.ExerciseTreeRepository import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired @@ -27,7 +28,5 @@ class ExerciseTreeTest { val exerciseTreeItem = responseEntity.body!![0] assertEquals(exerciseTreeItem.name, "Cardio") assertEquals(responseEntity.body!![1].translations[0].name, "Erő") - assertEquals(responseEntity.body!![1].parents[0].exerciseTreeParentId, 0) - } } \ No newline at end of file