From 96086f7bdee8ecdf7ecb5fb2305d95962f47118f Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Wed, 13 Jan 2021 02:30:33 +0100 Subject: [PATCH] Type alias para los ids --- .../eu/fosil/okupamicoche/entities/Travel.kt | 4 +++- .../eu/fosil/okupamicoche/entities/User.kt | 4 +++- .../repositories/TravelRepository.kt | 8 +++++--- .../repositories/UserRepository.kt | 3 ++- .../spring/controller/TravelRestController.kt | 11 +++++++++-- .../spring/controller/UserRestController.kt | 18 ++++++++++++------ .../fosil/okupamicoche/spring/dto/TravelDto.kt | 8 +++++--- .../fosil/okupamicoche/spring/dto/UserDto.kt | 3 ++- .../usecases/travel/DeleteTravel.kt | 6 +++--- .../usecases/travel/ListUserTravels.kt | 3 ++- .../okupamicoche/usecases/user/DeleteUser.kt | 6 +++--- .../okupamicoche/usecases/user/GetUser.kt | 12 ++++++++++++ 12 files changed, 61 insertions(+), 25 deletions(-) create mode 100644 src/main/kotlin/eu/fosil/okupamicoche/usecases/user/GetUser.kt diff --git a/src/main/kotlin/eu/fosil/okupamicoche/entities/Travel.kt b/src/main/kotlin/eu/fosil/okupamicoche/entities/Travel.kt index ac624d6..e480df7 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/entities/Travel.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/entities/Travel.kt @@ -2,9 +2,11 @@ package eu.fosil.okupamicoche.entities import javax.persistence.* +typealias TravelId = Long + @Entity class Travel( - @Id @GeneratedValue var id: Long, + @Id @GeneratedValue var id: TravelId, @ManyToOne var driver: User, @ManyToMany diff --git a/src/main/kotlin/eu/fosil/okupamicoche/entities/User.kt b/src/main/kotlin/eu/fosil/okupamicoche/entities/User.kt index c0657d0..9231dc0 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/entities/User.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/entities/User.kt @@ -2,9 +2,11 @@ package eu.fosil.okupamicoche.entities import javax.persistence.* +typealias UserId = String + @Entity class User( - @Id var id: String, + @Id var id: UserId, var matrixId: String? = null, var name: String, var email: String? = null, diff --git a/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt b/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt index e0d44b9..d651af4 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt @@ -1,13 +1,15 @@ package eu.fosil.okupamicoche.repositories import eu.fosil.okupamicoche.entities.Travel +import eu.fosil.okupamicoche.entities.TravelId +import eu.fosil.okupamicoche.entities.UserId import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.CrudRepository import org.springframework.data.repository.query.Param -interface TravelRepository : CrudRepository { +interface TravelRepository : CrudRepository { @Query("SELECT t FROM Travel t WHERE t.driver.id = :userId") - fun findUserTravelsAsDriver(@Param("userId") userId: String): List + fun findUserTravelsAsDriver(@Param("userId") userId: UserId): List @Query("SELECT t FROM Travel t JOIN t.travelers u WHERE u.id = :userId") - fun findUserTravelsAsTraveler(@Param("userId") userId: String): List + fun findUserTravelsAsTraveler(@Param("userId") userId: UserId): List } \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/repositories/UserRepository.kt b/src/main/kotlin/eu/fosil/okupamicoche/repositories/UserRepository.kt index 5ee04fe..0e993dc 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/repositories/UserRepository.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/repositories/UserRepository.kt @@ -1,6 +1,7 @@ package eu.fosil.okupamicoche.repositories import eu.fosil.okupamicoche.entities.User +import eu.fosil.okupamicoche.entities.UserId import org.springframework.data.repository.CrudRepository -interface UserRepository : CrudRepository \ No newline at end of file +interface UserRepository : CrudRepository \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt index 560615f..1c4b811 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt @@ -1,10 +1,12 @@ package eu.fosil.okupamicoche.spring.controller +import eu.fosil.okupamicoche.entities.TravelId import eu.fosil.okupamicoche.entities.User import eu.fosil.okupamicoche.repositories.TravelRepository import eu.fosil.okupamicoche.repositories.UserRepository import eu.fosil.okupamicoche.spring.dto.TravelDto import eu.fosil.okupamicoche.usecases.travel.* +import org.springframework.data.repository.findByIdOrNull import org.springframework.security.core.context.SecurityContextHolder import org.springframework.security.oauth2.jwt.Jwt import org.springframework.validation.annotation.Validated @@ -25,9 +27,14 @@ class TravelRestController( CreateTravel(travelRepository).createTravel(travelDto.toTravel(userRepository)) } + @RequestMapping("/get") + fun getTravel(@RequestBody @Validated travelId: TravelId): TravelDto? { + return travelRepository.findByIdOrNull(travelId)?.let { TravelDto(it) } + } + @RequestMapping("/delete") - fun deleteTravel(travelDto: TravelDto) { - DeleteTravel(travelRepository).deleteTravel(travelDto.toTravel(userRepository)) + fun deleteTravel(id: TravelId) { + DeleteTravel(travelRepository).deleteTravel(id) } @RequestMapping("/edit") diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt index 4133ed8..a2cc00a 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt @@ -1,12 +1,13 @@ package eu.fosil.okupamicoche.spring.controller +import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.repositories.UserRepository import eu.fosil.okupamicoche.spring.dto.CreateUserDto +import eu.fosil.okupamicoche.spring.dto.TravelDto import eu.fosil.okupamicoche.spring.dto.UserDto -import eu.fosil.okupamicoche.usecases.user.CreateUser -import eu.fosil.okupamicoche.usecases.user.DeleteUser -import eu.fosil.okupamicoche.usecases.user.EditUser -import eu.fosil.okupamicoche.usecases.user.ListUsers +import eu.fosil.okupamicoche.usecases.user.* +import org.springframework.data.repository.findByIdOrNull +import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -20,9 +21,14 @@ class UserRestController(private val userRepository: UserRepository) { CreateUser(userRepository).createUser(createUserDto.toUser(userRepository)) } + @RequestMapping("/get") + fun getUser(@RequestBody @Validated userId: UserId): UserDto? { + return GetUser(userRepository).getUser(userId)?.let { UserDto(it) } + } + @RequestMapping("/delete") - fun deleteUser(userDto: UserDto) { - DeleteUser(userRepository).deleteUser(userDto.toUser(userRepository)) + fun deleteUser(userId: UserId) { + DeleteUser(userRepository).deleteUser(userId) } @RequestMapping("/edit") diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt index 10a8228..7001f3e 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt @@ -1,15 +1,17 @@ package eu.fosil.okupamicoche.spring.dto import eu.fosil.okupamicoche.entities.Travel +import eu.fosil.okupamicoche.entities.TravelId +import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.entities.UserIdNotFoundException import eu.fosil.okupamicoche.repositories.UserRepository import org.springframework.data.repository.findByIdOrNull class TravelDto( // Los campos deben ser públicos para que aparezcan en el JSON - val id: Long, - val driverId: String, - val travelersId: List, + val id: TravelId, + val driverId: UserId, + val travelersId: List, val departureDate: String, val origin: String, val destination: String, diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt index ba818da..ac41ef3 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt @@ -1,11 +1,12 @@ package eu.fosil.okupamicoche.spring.dto import eu.fosil.okupamicoche.entities.User +import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.repositories.UserRepository class UserDto( // Los campos deben ser públicos para que aparezcan en el JSON - val id: String, + val id: UserId, val matrixId: String?, val name: String, val email: String?, diff --git a/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/DeleteTravel.kt b/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/DeleteTravel.kt index 9041034..d060518 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/DeleteTravel.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/DeleteTravel.kt @@ -1,10 +1,10 @@ package eu.fosil.okupamicoche.usecases.travel -import eu.fosil.okupamicoche.entities.Travel +import eu.fosil.okupamicoche.entities.TravelId import eu.fosil.okupamicoche.repositories.TravelRepository class DeleteTravel(private val travelRepository: TravelRepository) { - fun deleteTravel(travel: Travel) { - travelRepository.delete(travel) + fun deleteTravel(id: TravelId) { + travelRepository.deleteById(id) } } \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListUserTravels.kt b/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListUserTravels.kt index b0e9477..ff3a8e0 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListUserTravels.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListUserTravels.kt @@ -1,10 +1,11 @@ package eu.fosil.okupamicoche.usecases.travel import eu.fosil.okupamicoche.entities.Travel +import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.repositories.TravelRepository class ListUserTravels(private val travelRepository: TravelRepository) { - fun listUserTravels(idUser: String): List { + fun listUserTravels(idUser: UserId): List { return listOf( travelRepository.findUserTravelsAsDriver(idUser), travelRepository.findUserTravelsAsTraveler(idUser) diff --git a/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/DeleteUser.kt b/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/DeleteUser.kt index cd8ff8d..788a716 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/DeleteUser.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/DeleteUser.kt @@ -1,11 +1,11 @@ package eu.fosil.okupamicoche.usecases.user -import eu.fosil.okupamicoche.entities.User +import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.repositories.UserRepository class DeleteUser(private val userRepository: UserRepository) { - fun deleteUser(user: User) { - userRepository.delete(user) + fun deleteUser(userId: UserId) { + userRepository.deleteById(userId) // cancelarViajes() // desapuntarseViajes() } diff --git a/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/GetUser.kt b/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/GetUser.kt new file mode 100644 index 0000000..dffd776 --- /dev/null +++ b/src/main/kotlin/eu/fosil/okupamicoche/usecases/user/GetUser.kt @@ -0,0 +1,12 @@ +package eu.fosil.okupamicoche.usecases.user + +import eu.fosil.okupamicoche.entities.User +import eu.fosil.okupamicoche.entities.UserId +import eu.fosil.okupamicoche.repositories.UserRepository +import org.springframework.data.repository.findByIdOrNull + +class GetUser(private val userRepository: UserRepository) { + fun getUser(userId: UserId): User? { + return userRepository.findByIdOrNull(userId) + } +} \ No newline at end of file