From a07bddcb7a42587c57f1a2c50e4c8dd93f486424 Mon Sep 17 00:00:00 2001 From: johnniang Date: Sat, 23 Mar 2019 00:00:18 +0800 Subject: [PATCH] Abstract PostRepository for Post, Page and Journal entities --- .../halo/repository/JournalRepository.java | 4 +- .../ryanc/halo/repository/PageRepository.java | 4 +- .../ryanc/halo/repository/PostRepository.java | 52 +-------------- .../repository/base/BasePostRepository.java | 64 +++++++++++++++++++ 4 files changed, 70 insertions(+), 54 deletions(-) create mode 100644 src/main/java/cc/ryanc/halo/repository/base/BasePostRepository.java diff --git a/src/main/java/cc/ryanc/halo/repository/JournalRepository.java b/src/main/java/cc/ryanc/halo/repository/JournalRepository.java index cfe03cfae..a74933be2 100644 --- a/src/main/java/cc/ryanc/halo/repository/JournalRepository.java +++ b/src/main/java/cc/ryanc/halo/repository/JournalRepository.java @@ -1,7 +1,7 @@ package cc.ryanc.halo.repository; import cc.ryanc.halo.model.entity.Journal; -import cc.ryanc.halo.repository.base.BaseRepository; +import cc.ryanc.halo.repository.base.BasePostRepository; /** * Journal repository. @@ -9,6 +9,6 @@ import cc.ryanc.halo.repository.base.BaseRepository; * @author johnniang * @date 3/22/19 */ -public interface JournalRepository extends BaseRepository { +public interface JournalRepository extends BasePostRepository { } diff --git a/src/main/java/cc/ryanc/halo/repository/PageRepository.java b/src/main/java/cc/ryanc/halo/repository/PageRepository.java index 6b84b18aa..28f58b081 100644 --- a/src/main/java/cc/ryanc/halo/repository/PageRepository.java +++ b/src/main/java/cc/ryanc/halo/repository/PageRepository.java @@ -1,7 +1,7 @@ package cc.ryanc.halo.repository; import cc.ryanc.halo.model.entity.Page; -import cc.ryanc.halo.repository.base.BaseRepository; +import cc.ryanc.halo.repository.base.BasePostRepository; /** * Page repository. @@ -9,6 +9,6 @@ import cc.ryanc.halo.repository.base.BaseRepository; * @author johnniang * @date 3/22/19 */ -public interface PageRepository extends BaseRepository { +public interface PageRepository extends BasePostRepository { } diff --git a/src/main/java/cc/ryanc/halo/repository/PostRepository.java b/src/main/java/cc/ryanc/halo/repository/PostRepository.java index 72144f67d..f9b8eab1f 100644 --- a/src/main/java/cc/ryanc/halo/repository/PostRepository.java +++ b/src/main/java/cc/ryanc/halo/repository/PostRepository.java @@ -1,14 +1,8 @@ package cc.ryanc.halo.repository; import cc.ryanc.halo.model.entity.Post; -import cc.ryanc.halo.model.enums.PostStatus; -import cc.ryanc.halo.repository.base.BaseRepository; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; +import cc.ryanc.halo.repository.base.BasePostRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import org.springframework.lang.NonNull; - -import java.util.Optional; /** @@ -17,48 +11,6 @@ import java.util.Optional; * @author johnniang * @author RYAN0UP */ -public interface PostRepository extends BaseRepository, JpaSpecificationExecutor { +public interface PostRepository extends BasePostRepository, JpaSpecificationExecutor { - /** - * Finds posts by status and type. - * - * @param status status - * @param pageable pageable - * @return Page - */ - @NonNull - Page findAllByStatus(@NonNull PostStatus status, @NonNull Pageable pageable); - - /** - * Counts posts by status and type. - * - * @param status status - * @return posts count - */ - long countByStatus(@NonNull PostStatus status); - - /** - * Count by post url. - * - * @param url post url must not be blank - * @return the count - */ - long countByUrl(@NonNull String url); - - /** - * Count by not url and post id not in. - * - * @param id post id must not be null - * @param url post url must not be null - * @return the count - */ - long countByIdNotAndUrl(@NonNull Integer id, @NonNull String url); - - /** - * Get post by url - * - * @param url post url - * @return Optional - */ - Optional getByUrl(@NonNull String url); } diff --git a/src/main/java/cc/ryanc/halo/repository/base/BasePostRepository.java b/src/main/java/cc/ryanc/halo/repository/base/BasePostRepository.java new file mode 100644 index 000000000..150325c74 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/repository/base/BasePostRepository.java @@ -0,0 +1,64 @@ +package cc.ryanc.halo.repository.base; + +import cc.ryanc.halo.model.entity.BasePost; +import cc.ryanc.halo.model.enums.PostStatus; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.repository.NoRepositoryBean; +import org.springframework.lang.NonNull; + +import java.util.Optional; + +/** + * Base post repository. + * + * @author johnniang + * @date 3/22/19 + */ +@NoRepositoryBean +public interface BasePostRepository extends BaseRepository { + + /** + * Finds posts by status and type. + * + * @param status status + * @param pageable pageable + * @return Page + */ + @NonNull + Page findAllByStatus(@NonNull PostStatus status, @NonNull Pageable pageable); + + /** + * Counts posts by status and type. + * + * @param status status + * @return posts count + */ + long countByStatus(@NonNull PostStatus status); + + /** + * Count by post url. + * + * @param url post url must not be blank + * @return the count + */ + long countByUrl(@NonNull String url); + + /** + * Count by not url and post id not in. + * + * @param id post id must not be null + * @param url post url must not be null + * @return the count + */ + long countByIdNotAndUrl(@NonNull Integer id, @NonNull String url); + + /** + * Get post by url + * + * @param url post url + * @return Optional + */ + Optional getByUrl(@NonNull String url); + +}