mirror of https://github.com/halo-dev/halo
Add get preview and next post feature
parent
6f6ed51e8a
commit
b6e42e2d7e
|
@ -1,10 +1,15 @@
|
|||
package run.halo.app.repository;
|
||||
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.lang.NonNull;
|
||||
import run.halo.app.model.entity.Post;
|
||||
import run.halo.app.repository.base.BasePostRepository;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* Post repository.
|
||||
|
@ -19,4 +24,10 @@ public interface PostRepository extends BasePostRepository<Post>, JpaSpecificati
|
|||
|
||||
@Query("select sum(p.likes) from Post p")
|
||||
Long countLike();
|
||||
|
||||
@NonNull
|
||||
Page<Post> findAllByStatusAndCreateTimeBefore(Date createTime, @NonNull Pageable pageable);
|
||||
|
||||
@NonNull
|
||||
Page<Post> findAllByStatusAndCreateTimeAfter(Date createTime, @NonNull Pageable pageable);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,9 @@ import run.halo.app.model.vo.PostDetailVO;
|
|||
import run.halo.app.model.vo.PostListVO;
|
||||
import run.halo.app.service.base.CrudService;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
|
@ -211,4 +213,10 @@ public interface PostService extends CrudService<Post, Integer> {
|
|||
*/
|
||||
@NonNull
|
||||
Post filterIfEncrypt(@NonNull Post post);
|
||||
|
||||
@NonNull
|
||||
Optional<Post> getPrePost(@NonNull Date createTime);
|
||||
|
||||
@NonNull
|
||||
Optional<Post> getNextPost(@NonNull Date createTime);
|
||||
}
|
||||
|
|
|
@ -437,6 +437,32 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
|
|||
return post;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Post> getPrePost(Date createTime) {
|
||||
Assert.notNull(createTime, "Create time must not be null");
|
||||
|
||||
Page<Post> prePostPage = postRepository.findAllByStatusAndCreateTimeAfter(createTime, PageRequest.of(0, 1));
|
||||
|
||||
if (prePostPage.isEmpty()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.of(prePostPage.getContent().get(0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Post> getNextPost(Date createTime) {
|
||||
Assert.notNull(createTime, "Create time must not be null");
|
||||
|
||||
Page<Post> prePostPage = postRepository.findAllByStatusAndCreateTimeBefore(createTime, PageRequest.of(0, 1));
|
||||
|
||||
if (prePostPage.isEmpty()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.of(prePostPage.getContent().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts to post minimal output dto.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue