API 1.0.18 ExerciseTreeParents with controller

This commit is contained in:
Bossanyi Tibor 2020-12-04 23:20:11 +01:00
parent 293379d6fd
commit 64114a82ba
9 changed files with 79 additions and 10 deletions

View File

@ -1 +0,0 @@
0.0.3

View File

@ -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

View File

@ -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<List<ExerciseTreeParents>> {
val list: List<ExerciseTreeParents> = 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)
}
}

View File

@ -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<ExerciseTreeTranslation> = mutableListOf<ExerciseTreeTranslation>().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<ExerciseTreeParents> = mutableListOf<ExerciseTreeParents>().toList()
var parents: List<ExerciseTreeParents> = mutableListOf<ExerciseTreeParents>().toList()*/
}

View File

@ -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
}
*/

View File

@ -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<ExerciseTreeParents, Long> {
@Query("FROM ExerciseTreeParents as e " +
"WHERE exerciseTreeChildId = :id ")
fun findByExerciseTreeChildId(id: Long): List<ExerciseTreeParents>?
}

View File

@ -10,7 +10,6 @@ interface ExerciseTreeRepository : JpaRepository<ExerciseTree, Long> {
@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<ExerciseTree>

View File

@ -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<List<ExerciseTreeParents>> = 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)
}
}

View File

@ -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)
}
}