Type alias para los ids
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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<Travel, Long> {
|
||||
interface TravelRepository : CrudRepository<Travel, TravelId> {
|
||||
@Query("SELECT t FROM Travel t WHERE t.driver.id = :userId")
|
||||
fun findUserTravelsAsDriver(@Param("userId") userId: String): List<Travel>
|
||||
fun findUserTravelsAsDriver(@Param("userId") userId: UserId): List<Travel>
|
||||
@Query("SELECT t FROM Travel t JOIN t.travelers u WHERE u.id = :userId")
|
||||
fun findUserTravelsAsTraveler(@Param("userId") userId: String): List<Travel>
|
||||
fun findUserTravelsAsTraveler(@Param("userId") userId: UserId): List<Travel>
|
||||
}
|
||||
@@ -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<User, String>
|
||||
interface UserRepository : CrudRepository<User, UserId>
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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<String>,
|
||||
val id: TravelId,
|
||||
val driverId: UserId,
|
||||
val travelersId: List<UserId>,
|
||||
val departureDate: String,
|
||||
val origin: String,
|
||||
val destination: String,
|
||||
|
||||
@@ -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?,
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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<Travel> {
|
||||
fun listUserTravels(idUser: UserId): List<Travel> {
|
||||
return listOf(
|
||||
travelRepository.findUserTravelsAsDriver(idUser),
|
||||
travelRepository.findUserTravelsAsTraveler(idUser)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user