Skip to content

Commit

Permalink
added paging
Browse files Browse the repository at this point in the history
  • Loading branch information
Max Handke committed Jan 12, 2024
1 parent 467d504 commit 90ac2f0
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.example.kickevent.exceptions.EventNotFoundException;
import com.example.kickevent.model.Event;
import com.example.kickevent.services.EventService;
import org.springframework.data.domain.Page;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -30,8 +31,8 @@ public EventController(EventService eventService) {


@GetMapping("/api/event")
List<Event> all(@RequestParam(required = false) String sort, @RequestParam(required = false) String search) {
return eventService.getAll(sort,search);
Page<Event> all(@RequestParam(required = false) String sort, @RequestParam(required = false) String search, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "3") int size) {
return eventService.getAll(sort,search,size,page);
}

@PreAuthorize("hasAuthority('USER') || hasAuthority('ADMIN')")
Expand All @@ -53,7 +54,7 @@ Event create(@RequestBody Event newEvent, Authentication auth) {
EntityModel<Event> one(@PathVariable Long id) {
Event event = eventService.findById(id).orElseThrow(() -> new EventNotFoundException(id));
return EntityModel.of(event, linkTo(WebMvcLinkBuilder.methodOn(EventController.class).one(id)).withSelfRel(),
linkTo(WebMvcLinkBuilder.methodOn(EventController.class).all(null,null)).withRel("Events"));
linkTo(WebMvcLinkBuilder.methodOn(EventController.class).all(null,null,0,3)).withRel("Events"));
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
public class RefreshToken {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected void configure(HttpSecurity httpSecurity) throws Exception {
// dont authenticate this particular request
.authorizeRequests().requestMatchers(CorsUtils::isCorsRequest).permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("/login", "/register", "/refreshtoken", "/api/event","/user","/error").permitAll().
.antMatchers("/login", "/register", "/refreshtoken", "/api/event","/user","/error,","/api/event*").permitAll().
// all other requests need to be authenticated
anyRequest().authenticated().and().
// make sure we use stateless session; session won't be used to
Expand Down
29 changes: 21 additions & 8 deletions src/main/java/com/example/kickevent/services/EventService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.*;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;

Expand All @@ -26,31 +26,44 @@ public class EventService {
private UserRepository userRepository;


public List<Event> getAll(String sortBy, String search) {
List<Event> returnlist;
public Page<Event> getAll(String sortBy, String search, int size, int page) {
Page<Event> returnlist;


if (sortBy != null && !sortBy.isBlank() && sortBy.contains(",")){
try{
String filterOne = sortBy.split(",")[0];
String filterTwo = sortBy.split(",")[1];
Sort sort = Sort.by(filterOne);

if(filterTwo.equals("desc")){
sort = sort.descending();
}

returnlist = this.eventRepository.findAll(sort);
Pageable paging = PageRequest.of(page,size,sort);
returnlist = this.eventRepository.findAll(paging);
if (search!= null && !search.isBlank()){
return returnlist.stream().filter(event->filter(event,search)).toList();
List<Event> searchRes = this.eventRepository.findAll(sort).stream().filter(event->filter(event,search)).toList();
int start = (int) paging.getOffset();
int end = Math.min((start + paging.getPageSize()),searchRes.size());
List<Event> searchPageContent = searchRes.subList(start,end);
return new PageImpl<>(searchPageContent,paging,searchRes.size());
}
return returnlist;
}catch (Exception e){
e.printStackTrace();
}
}
Pageable paging = PageRequest.of(page,size);
if (search!= null && !search.isBlank()){

return this.eventRepository.findAll().stream().filter(event->filter(event,search)).toList();
List<Event> searchRes = this.eventRepository.findAll().stream().filter(event->filter(event,search)).toList();
int start = (int) paging.getOffset();
int end = Math.min((start + paging.getPageSize()),searchRes.size());
List<Event> searchPageContent = searchRes.subList(start,end);
return new PageImpl<>(searchPageContent,paging,searchRes.size());
}
return this.eventRepository.findAll();

return this.eventRepository.findAll(paging);

}

Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

spring.datasource.url=jdbc:sqlserver://kickevent.database.windows.net:1433;database=kickevent;user=${MYSQL_USER};password=${MYSQL_PASSWORD};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2016Dialect
server.port=443
user.token.expirationTimeInMs=600000L
user.refreshtoken.expirationTimeInMs=86400000
Expand Down

0 comments on commit 90ac2f0

Please sign in to comment.