Inicio de filtros

This commit is contained in:
Eneko Nieto
2021-01-23 00:45:05 +01:00
parent c8c05a03b6
commit ef9f11454b
9 changed files with 44 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
package eu.fosil.okupamicoche.spring.dto
package eu.fosil.okupamicoche.dto
import eu.fosil.okupamicoche.entities.User
import eu.fosil.okupamicoche.repositories.UserRepository

View File

@@ -1,4 +1,4 @@
package eu.fosil.okupamicoche.spring.dto
package eu.fosil.okupamicoche.dto
import eu.fosil.okupamicoche.entities.Travel
import eu.fosil.okupamicoche.entities.TravelId

View File

@@ -0,0 +1,3 @@
package eu.fosil.okupamicoche.dto
class TravelListDto(val totalTravels: Long, val travels: List<TravelDto>)

View File

@@ -1,4 +1,4 @@
package eu.fosil.okupamicoche.spring.dto
package eu.fosil.okupamicoche.dto
import eu.fosil.okupamicoche.entities.User
import eu.fosil.okupamicoche.entities.UserId

View File

@@ -10,6 +10,14 @@ import org.springframework.data.repository.query.Param
interface TravelRepository : CrudRepository<Travel, TravelId> {
@Query("SELECT t FROM Travel t WHERE t.driver.id = :userId")
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: UserId): List<Travel>
@Query("SELECT t FROM Travel t WHERE t.origin LIKE :filter")
// @Query("SELECT t FROM Travel t WHERE t.origin LIKE :filter LIMIT :pageSize")
fun findFilteredTravels(
@Param("filter") filter: String,
// @Param("pageSize") pageSize: Int
): List<Travel>
}

View File

@@ -9,12 +9,13 @@ class JWTSecurityConfig : WebSecurityConfigurerAdapter() {
@Throws(Exception::class)
override fun configure(http: HttpSecurity) {//@formatter:off
http.cors()
// .and()
// .authorizeRequests()
// .anyRequest()
// .hasAuthority("SCOPE_profile")
.and()
.oauth2ResourceServer()
.jwt()
.authorizeRequests()
.anyRequest()
.permitAll()
// .hasAuthority("SCOPE_profile")
// .and()
// .oauth2ResourceServer()
// .jwt()
}//@formatter:on
}

View File

@@ -5,7 +5,8 @@ import eu.fosil.okupamicoche.entities.TravelId
import eu.fosil.okupamicoche.entities.UserId
import eu.fosil.okupamicoche.repositories.TravelRepository
import eu.fosil.okupamicoche.repositories.UserRepository
import eu.fosil.okupamicoche.spring.dto.TravelDto
import eu.fosil.okupamicoche.dto.TravelDto
import eu.fosil.okupamicoche.dto.TravelListDto
import eu.fosil.okupamicoche.usecases.travel.*
import org.springframework.data.repository.findByIdOrNull
import org.springframework.validation.annotation.Validated
@@ -56,17 +57,26 @@ class TravelRestController(
}
@RequestMapping("/list")
fun listTravels(): ApiResponse<List<TravelDto>> {
fun listTravels(
@RequestParam @Validated filter: String?
): ApiResponse<TravelListDto> {
return response {
ListTravels(travelRepository).listTravels().map { t -> TravelDto(t) }
val travels = if ((filter == null) || (filter.isEmpty()))
ListTravels(travelRepository).listTravels().map { t -> TravelDto(t) }
else
ListTravels(travelRepository).listTravels(
filter, SORT_ASCENDING, 0, 20
).map { t -> TravelDto(t) }
TravelListDto(travelRepository.count(), travels)
}
}
@RequestMapping("/listusertravels")
fun listUserTravels(): ApiResponse<List<TravelDto>> {
fun listUserTravels(): ApiResponse<TravelListDto> {
return response {
val userId = getCurrentUserId()
ListUserTravels(travelRepository).listUserTravels(userId).map { t -> TravelDto(t) }
val travels = ListUserTravels(travelRepository).listUserTravels(userId).map { t -> TravelDto(t) }
TravelListDto(travelRepository.count(), travels)
}
}

View File

@@ -3,8 +3,8 @@ package eu.fosil.okupamicoche.spring.controller
import eu.fosil.okupamicoche.entities.ApiResponse
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.UserDto
import eu.fosil.okupamicoche.dto.CreateUserDto
import eu.fosil.okupamicoche.dto.UserDto
import eu.fosil.okupamicoche.usecases.user.*
import org.springframework.validation.annotation.Validated
import org.springframework.web.bind.annotation.CrossOrigin

View File

@@ -3,8 +3,14 @@ package eu.fosil.okupamicoche.usecases.travel
import eu.fosil.okupamicoche.entities.Travel
import eu.fosil.okupamicoche.repositories.TravelRepository
const val SORT_ASCENDING = true
const val SORT_DESCENDING = false
class ListTravels(private val travelRepository: TravelRepository) {
fun listTravels():List<Travel> {
return travelRepository.findAll().toList()
}
fun listTravels(filter: String = "", sortDirection: Boolean, pageIndex: Int, pageSize: Int):List<Travel> {
return travelRepository.findFilteredTravels(filter).toList()
}
}