findUserTravelsAsTraveler por JPA
This commit is contained in:
@@ -5,9 +5,14 @@ import javax.persistence.*
|
||||
@Entity
|
||||
class Travel(
|
||||
@Id @GeneratedValue var id: Long? = null,
|
||||
@OneToOne
|
||||
@ManyToOne
|
||||
var driver: User,
|
||||
@OneToMany
|
||||
@ManyToMany
|
||||
// @JoinTable(
|
||||
// name = "travel_travelers",
|
||||
// joinColumns = [JoinColumn(name = "travel_id")],
|
||||
// inverseJoinColumns = [JoinColumn(name = "user_id")]
|
||||
// )
|
||||
var travelers: MutableList<User>,
|
||||
var departureDate: String,
|
||||
var origin: String,
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package eu.fosil.okupamicoche.entities
|
||||
|
||||
import javax.persistence.Entity
|
||||
import javax.persistence.GeneratedValue
|
||||
import javax.persistence.Id
|
||||
import javax.persistence.*
|
||||
|
||||
@Entity
|
||||
class User(
|
||||
@Id @GeneratedValue var id: Long? = null,
|
||||
var matrixId: String,
|
||||
var name: String,
|
||||
var email: String
|
||||
var email: String,
|
||||
@OneToMany(mappedBy = "driver")
|
||||
var travelsAsDriver: List<Travel>,
|
||||
@ManyToMany(mappedBy = "travelers")
|
||||
var travelsAsTraveler: List<Travel>
|
||||
)
|
||||
@@ -1,6 +1,10 @@
|
||||
package eu.fosil.okupamicoche.repositories
|
||||
|
||||
import eu.fosil.okupamicoche.entities.Travel
|
||||
import org.springframework.data.jpa.repository.Query
|
||||
import org.springframework.data.repository.CrudRepository
|
||||
|
||||
interface TravelRepository : CrudRepository<Travel, Long>
|
||||
interface TravelRepository : CrudRepository<Travel, Long> {
|
||||
@Query("SELECT t FROM Travel t JOIN t.travelers u ON t.id=u.id WHERE t.id = ?1")
|
||||
fun findUserTravelsAsTraveler(userId: Long): List<Travel>
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import eu.fosil.okupamicoche.repositories.TravelRepository
|
||||
|
||||
class AddTraveler(private val travelRepository: TravelRepository) {
|
||||
fun addTraveler(travel: Travel, user: User) {
|
||||
if (travel.travelers.none { u -> u.id == user.id })
|
||||
if (!travel.travelers.contains(user))
|
||||
travel.travelers.add(user)
|
||||
travelRepository.save(travel)
|
||||
}
|
||||
|
||||
@@ -6,7 +6,9 @@ import eu.fosil.okupamicoche.repositories.TravelRepository
|
||||
|
||||
class ListUserTravels(private val travelRepository: TravelRepository) {
|
||||
fun listUserTravels(user: User): List<Travel> {
|
||||
val travels: List<Travel> = travelRepository.findAll().toList()
|
||||
return travels.filter { travel -> travel.travelers.contains(user) }
|
||||
user.id?.let {
|
||||
return travelRepository.findUserTravelsAsTraveler(it)
|
||||
}
|
||||
return listOf()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user