From 99598420da116ef34d0e83be449769e6fe8146ae Mon Sep 17 00:00:00 2001 From: ZalanBoss <48163754+ZalanBoss@users.noreply.github.com> Date: Sun, 10 May 2020 13:39:14 +0200 Subject: [PATCH 1/2] Exercise Type Classes --- .../api/controller/ExerciseTypeController.kt | 50 +++++++++++++++++++ .../com/aitrainer/api/model/ExerciseType.kt | 20 ++++++++ .../api/repository/ExerciseTypeRepository.kt | 12 +++++ 3 files changed, 82 insertions(+) create mode 100644 src/main/kotlin/com/aitrainer/api/controller/ExerciseTypeController.kt create mode 100644 src/main/kotlin/com/aitrainer/api/model/ExerciseType.kt create mode 100644 src/main/kotlin/com/aitrainer/api/repository/ExerciseTypeRepository.kt diff --git a/src/main/kotlin/com/aitrainer/api/controller/ExerciseTypeController.kt b/src/main/kotlin/com/aitrainer/api/controller/ExerciseTypeController.kt new file mode 100644 index 0000000..b186bfe --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/controller/ExerciseTypeController.kt @@ -0,0 +1,50 @@ +package com.aitrainer.api.controller + +import com.aitrainer.api.model.ExerciseType +import com.aitrainer.api.repository.ExerciseTypeRepository +import org.springframework.http.HttpStatus +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.* +import java.util.* +import javax.validation.Valid + +@RestController +@RequestMapping("/api") +class ExerciseTypeController ( private val exerciseTypeRepository: ExerciseTypeRepository ) { + + @GetMapping("/exercise_type") + fun getAllExerciseTypes(): List = + exerciseTypeRepository.findAll() + + @PostMapping("/exercise_type") + fun createNewExerciseType(@Valid @RequestBody exerciseType: ExerciseType): ExerciseType = + exerciseTypeRepository.save(exerciseType) + + @GetMapping("/exercise_type/{id}") + fun getExerciseTypeById(@PathVariable(value = "id") exerciseTypeId: Long): ResponseEntity { + return exerciseTypeRepository.findById(exerciseTypeId).map { exerciseType -> + ResponseEntity.ok(exerciseType) + }.orElse(ResponseEntity.notFound().build()) + } +/* + @GetMapping("/exercise_type/name/{name}") + fun getExerciseTypeByName(@PathVariable(value = "name") name: String): ResponseEntity { + return exerciseTypeRepository.findByName(name).map { exerciseType -> + ResponseEntity.ok(exerciseType) + }.orElse(ResponseEntity.notFound().build()) + }*/ + + @PutMapping("/exercise_type/{id}") + fun updateExerciseTypesById(@PathVariable(value = "id") exerciseTypeId: Long, + @Valid @RequestBody newExerciseType: ExerciseType): ResponseEntity { + + return exerciseTypeRepository.findById(exerciseTypeId).map { existingExerciseType -> + val updatedExerciseType: ExerciseType = existingExerciseType + .copy(name = newExerciseType.name, + description = newExerciseType.description, + video = newExerciseType.video) + ResponseEntity.ok().body(exerciseTypeRepository.save(updatedExerciseType)) + }.orElse(ResponseEntity.notFound().build()) + + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/model/ExerciseType.kt b/src/main/kotlin/com/aitrainer/api/model/ExerciseType.kt new file mode 100644 index 0000000..2d181e3 --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/model/ExerciseType.kt @@ -0,0 +1,20 @@ +package com.aitrainer.api.model + +import javax.persistence.Entity +import javax.persistence.GeneratedValue +import javax.persistence.GenerationType +import javax.persistence.Id +import javax.validation.constraints.NotBlank + +@Entity +data class ExerciseType ( + @get: NotBlank + + val name: String = "", + val description: String = "", + val video: Long = 0, + + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + val type_id: Long = 0 +) diff --git a/src/main/kotlin/com/aitrainer/api/repository/ExerciseTypeRepository.kt b/src/main/kotlin/com/aitrainer/api/repository/ExerciseTypeRepository.kt new file mode 100644 index 0000000..c5cdc1e --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/repository/ExerciseTypeRepository.kt @@ -0,0 +1,12 @@ +package com.aitrainer.api.repository + +import com.aitrainer.api.model.ExerciseType +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +@Repository +interface ExerciseTypeRepository : JpaRepository{ + + fun findByName(name: String): ExerciseType + +} \ No newline at end of file From 9a8402d63440293905a64fcb2cad24180a9cd972 Mon Sep 17 00:00:00 2001 From: ZalanBoss <48163754+ZalanBoss@users.noreply.github.com> Date: Sun, 10 May 2020 13:46:26 +0200 Subject: [PATCH 2/2] exercise type readme changes --- readme.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.MD b/readme.MD index bce0cc5..3a4e2c2 100644 --- a/readme.MD +++ b/readme.MD @@ -6,3 +6,4 @@ provide a RESTful API to the mobile app finished API: customers +exercise type impl.ed