diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysFileDao.java b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysFileDao.java index cc12096..f90a98f 100644 --- a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysFileDao.java +++ b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysFileDao.java @@ -1,6 +1,7 @@ package cn.novalon.manage.sys.infrastructure.db.dao; import cn.novalon.manage.sys.infrastructure.db.entity.SysFileEntity; +import org.springframework.data.domain.Sort; import org.springframework.data.r2dbc.repository.R2dbcRepository; import org.springframework.stereotype.Repository; import reactor.core.publisher.Flux; @@ -9,9 +10,19 @@ import reactor.core.publisher.Mono; @Repository public interface SysFileDao extends R2dbcRepository { + Flux findByCreateBy(String createBy); + + Flux findByCreateBy(String createBy, Sort sort); + Flux findByCreateByOrderByCreatedAtDesc(String createBy); + Flux findByDeletedAtIsNull(); + + Flux findByDeletedAtIsNull(Sort sort); + Flux findByDeletedAtIsNullOrderByCreatedAtDesc(); + Mono countByDeletedAtIsNull(); + Mono deleteByIdAndDeletedAtIsNull(Long id); } diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysFileRepository.java b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysFileRepository.java new file mode 100644 index 0000000..df2b5c3 --- /dev/null +++ b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysFileRepository.java @@ -0,0 +1,96 @@ +package cn.novalon.manage.sys.infrastructure.db.repository; + +import cn.novalon.manage.sys.core.domain.SysFile; +import cn.novalon.manage.sys.infrastructure.db.converter.SysFileConverter; +import cn.novalon.manage.sys.infrastructure.db.dao.SysFileDao; +import cn.novalon.manage.sys.infrastructure.db.entity.SysFileEntity; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Repository; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.time.LocalDateTime; + +@Repository +public class SysFileRepository { + + private final SysFileDao dao; + private final SysFileConverter converter; + + public SysFileRepository(SysFileDao dao, SysFileConverter converter) { + this.dao = dao; + this.converter = converter; + } + + public Mono findById(Long id) { + return dao.findById(id) + .filter(entity -> entity.getDeletedAt() == null) + .map(converter::toDomain); + } + + public Mono save(SysFile sysFile) { + return dao.save(converter.toEntity(sysFile)) + .map(converter::toDomain); + } + + public Mono deleteById(Long id) { + return dao.findById(id) + .flatMap(entity -> { + entity.setDeletedAt(LocalDateTime.now()); + return dao.save(entity); + }) + .then(); + } + + public Flux findByCreateBy(String createBy) { + return dao.findByCreateBy(createBy) + .map(converter::toDomain); + } + + public Flux findByCreateBy(String createBy, Sort sort) { + return dao.findByCreateBy(createBy, sort) + .map(converter::toDomain); + } + + public Flux findByCreateByOrderByCreatedAtDesc(String createBy) { + return dao.findByCreateByOrderByCreatedAtDesc(createBy) + .map(converter::toDomain); + } + + public Flux findAll() { + return dao.findByDeletedAtIsNull() + .map(converter::toDomain); + } + + public Flux findAll(Sort sort) { + return dao.findByDeletedAtIsNull(sort) + .map(converter::toDomain); + } + + public Flux findAllByOrderByCreatedAtDesc() { + return dao.findByDeletedAtIsNullOrderByCreatedAtDesc() + .map(converter::toDomain); + } + + public Mono count() { + return dao.countByDeletedAtIsNull(); + } + + public Mono logicalDeleteById(Long id) { + return dao.findById(id) + .flatMap(entity -> { + entity.setDeletedAt(LocalDateTime.now()); + return dao.save(entity); + }) + .then(); + } + + public Mono restoreById(Long id) { + return dao.findById(id) + .flatMap(entity -> { + entity.setDeletedAt(null); + return dao.save(entity); + }) + .then(); + } +}