Skip to content

Commit

Permalink
Merge pull request #378 from boudicca-events/abl/fix-ical-paging
Browse files Browse the repository at this point in the history
fix ical service paging and allow empty and null queries which return…
  • Loading branch information
twatzl authored Apr 9, 2024
2 parents a90ea78 + f326b9d commit 5df0c68
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class CalendarService @Autowired constructor(@Value("\${boudicca.search.url}") p
}

fun getEvents(query: String): ByteArray {
val events = searchClient.queryEvents(QueryDTO(query, 100))
val events = searchClient.queryEvents(QueryDTO(query, 0, Int.MAX_VALUE))
return createCalendar(events.result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class IcalResource @Autowired constructor(private val calendarService: CalendarS
"/calendar.ics",
produces = [MediaType.APPLICATION_OCTET_STREAM_VALUE],
)
fun getAllEvents(@RequestParam query: String): ResponseEntity<ByteArray> {
val calendarFile = calendarService.getEvents(query)
fun getAllEvents(@RequestParam(required = false) query: String?): ResponseEntity<ByteArray> {
val calendarFile = calendarService.getEvents(query ?: "")
return ResponseEntity.ok()
.header("Content-Disposition", "attachment;filename=calendar.ics")
.body(calendarFile)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package base.boudicca.search.service
import base.boudicca.api.search.model.QueryDTO
import base.boudicca.api.search.model.ResultDTO
import base.boudicca.model.Entry
import base.boudicca.query.QueryException
import base.boudicca.query.BoudiccaQueryRunner
import base.boudicca.query.QueryException
import base.boudicca.query.Utils
import base.boudicca.query.evaluator.Evaluator
import base.boudicca.query.evaluator.NoopEvaluator
Expand All @@ -24,10 +24,10 @@ class QueryService {

@Throws(QueryException::class)
fun query(queryDTO: QueryDTO): ResultDTO {
val query =
queryDTO.query ?: return ResultDTO(Utils.offset(entries, queryDTO.offset, queryDTO.size), entries.size)

return evaluateQuery(query, Page(queryDTO.offset ?: 0, queryDTO.size ?: 30))
if (queryDTO.query.isNullOrEmpty()) {
return ResultDTO(Utils.offset(entries, queryDTO.offset, queryDTO.size), entries.size)
}
return evaluateQuery(queryDTO.query!!, Page(queryDTO.offset ?: 0, queryDTO.size ?: 30))
}

@EventListener
Expand All @@ -42,6 +42,7 @@ class QueryService {
val queryResult = evaluator.evaluate(expression, page)
ResultDTO(queryResult.result, queryResult.totalResults, queryResult.error)
} catch (e: QueryException) {
//TODO this should return a 400 error or something, not a 200 message with an error message...
ResultDTO(emptyList(), 0, e.message)
}
}
Expand Down

0 comments on commit 5df0c68

Please sign in to comment.