mirror of https://github.com/halo-dev/halo
Add list previous and next posts service
parent
384286782f
commit
38eadc9674
|
@ -224,9 +224,41 @@ public interface PostService extends CrudService<Post, Integer> {
|
||||||
@NonNull
|
@NonNull
|
||||||
Post filterIfEncrypt(@NonNull Post post);
|
Post filterIfEncrypt(@NonNull Post post);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets previous post.
|
||||||
|
*
|
||||||
|
* @param date date must not be null
|
||||||
|
* @return an optional post
|
||||||
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
Optional<Post> getPrePost(@NonNull Date createTime);
|
Optional<Post> getPrePost(@NonNull Date date);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets next post.
|
||||||
|
*
|
||||||
|
* @param date date must not be null
|
||||||
|
* @return an optional post
|
||||||
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
Optional<Post> getNextPost(@NonNull Date createTime);
|
Optional<Post> getNextPost(@NonNull Date date);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lists previous posts.
|
||||||
|
*
|
||||||
|
* @param date date must not be null
|
||||||
|
* @param size previous max post size
|
||||||
|
* @return a list of previous post
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
List<Post> listPrePosts(@NonNull Date date, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lits next posts.
|
||||||
|
*
|
||||||
|
* @param date date must not be null
|
||||||
|
* @param size next max post size
|
||||||
|
* @return a list of next post
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
List<Post> listNextPosts(@NonNull Date date, int size);
|
||||||
}
|
}
|
||||||
|
|
|
@ -447,29 +447,37 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Post> getPrePost(Date createTime) {
|
public Optional<Post> getPrePost(Date date) {
|
||||||
Assert.notNull(createTime, "Create time must not be null");
|
List<Post> posts = listPrePosts(date, 1);
|
||||||
|
|
||||||
Page<Post> prePostPage = postRepository.findAllByStatusAndCreateTimeAfter(PostStatus.PUBLISHED, createTime, PageRequest.of(0, 1));
|
return CollectionUtils.isEmpty(posts) ? Optional.empty() : Optional.of(posts.get(0));
|
||||||
|
|
||||||
if (prePostPage.isEmpty()) {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Optional.of(prePostPage.getContent().get(0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Post> getNextPost(Date createTime) {
|
public Optional<Post> getNextPost(Date date) {
|
||||||
Assert.notNull(createTime, "Create time must not be null");
|
List<Post> posts = listNextPosts(date, 1);
|
||||||
|
|
||||||
Page<Post> nextPostPage = postRepository.findAllByStatusAndCreateTimeBefore(PostStatus.PUBLISHED, createTime, PageRequest.of(0, 1));
|
return CollectionUtils.isEmpty(posts) ? Optional.empty() : Optional.of(posts.get(0));
|
||||||
|
|
||||||
if (nextPostPage.isEmpty()) {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Optional.of(nextPostPage.getContent().get(0));
|
@Override
|
||||||
|
public List<Post> listPrePosts(Date date, int size) {
|
||||||
|
Assert.notNull(date, "Date must not be null");
|
||||||
|
|
||||||
|
return postRepository.findAllByStatusAndCreateTimeAfter(PostStatus.PUBLISHED,
|
||||||
|
date,
|
||||||
|
PageRequest.of(0, size, Sort.by(DESC, "createTime")))
|
||||||
|
.getContent();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Post> listNextPosts(Date date, int size) {
|
||||||
|
Assert.notNull(date, "Date must not be null");
|
||||||
|
|
||||||
|
return postRepository.findAllByStatusAndCreateTimeBefore(PostStatus.PUBLISHED,
|
||||||
|
date,
|
||||||
|
PageRequest.of(0, size, Sort.by(DESC, "createTime")))
|
||||||
|
.getContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue