From 6b497bfd413b37a489a2ba3ef35cc3b846f61b5b Mon Sep 17 00:00:00 2001 From: gi1tee Date: Tue, 2 Jul 2024 09:23:48 +0800 Subject: [PATCH] /eulerver --- .../adapter/query/OEPackageQueryAdapter.java | 14 ++++++++++ .../oepackage/OEPackageService.java | 8 ++++++ .../oepackage/OEPackageServiceImpl.java | 13 +++++++++ .../dto/OepkgNameSearchCondition.java | 22 +++++++++++++++ .../oepackage/vo/OepkgEulerVersionVo.java | 27 +++++++++++++++++++ .../oepackage/gateway/OEPackageGateway.java | 17 +++++++++--- .../gatewalmpl/OEPackageGatewayImpl.java | 27 +++++++++++++++++++ .../coverter/OEPackageConverter.java | 22 +++++++++++++++ 8 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/easysoftware/application/oepackage/dto/OepkgNameSearchCondition.java create mode 100644 src/main/java/com/easysoftware/application/oepackage/vo/OepkgEulerVersionVo.java diff --git a/src/main/java/com/easysoftware/adapter/query/OEPackageQueryAdapter.java b/src/main/java/com/easysoftware/adapter/query/OEPackageQueryAdapter.java index efb4e53..7538a0d 100644 --- a/src/main/java/com/easysoftware/adapter/query/OEPackageQueryAdapter.java +++ b/src/main/java/com/easysoftware/adapter/query/OEPackageQueryAdapter.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; +import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.OEPackageService; import com.easysoftware.common.aop.RequestLimitRedis; @@ -42,4 +43,17 @@ public class OEPackageQueryAdapter { public ResponseEntity searchOEpkg(@Valid final OEPackageSearchCondition condition) { return oEPackageService.searchOEPkg(condition); } + + /** + * Endpoint to query for all avalaible openEuler version of epkg packages based + * on the provided search condition. + * + * @param condition The search condition for querying epkg packages. + * @return ResponseEntity. + */ + @GetMapping("/eulerver") + @RequestLimitRedis() + public ResponseEntity queryEulerVersionsByName(@Valid final OepkgNameSearchCondition condition) { + return oEPackageService.queryEulerVersionsByName(condition); + } } diff --git a/src/main/java/com/easysoftware/application/oepackage/OEPackageService.java b/src/main/java/com/easysoftware/application/oepackage/OEPackageService.java index 2261310..63f92fd 100644 --- a/src/main/java/com/easysoftware/application/oepackage/OEPackageService.java +++ b/src/main/java/com/easysoftware/application/oepackage/OEPackageService.java @@ -15,6 +15,7 @@ import java.util.Map; import org.springframework.http.ResponseEntity; import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; +import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; public interface OEPackageService { /** @@ -33,4 +34,11 @@ public interface OEPackageService { */ Map queryAllOEPkgMenu(OEPackageSearchCondition condition); + /** + * Queries available openEuler version of oepkg package. + * + * @param condition The search condition. + * @return Map containing the openEuler versions. + */ + ResponseEntity queryEulerVersionsByName(OepkgNameSearchCondition condition); } diff --git a/src/main/java/com/easysoftware/application/oepackage/OEPackageServiceImpl.java b/src/main/java/com/easysoftware/application/oepackage/OEPackageServiceImpl.java index 48ebb1e..d186b3c 100644 --- a/src/main/java/com/easysoftware/application/oepackage/OEPackageServiceImpl.java +++ b/src/main/java/com/easysoftware/application/oepackage/OEPackageServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; +import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; import com.easysoftware.common.exception.NoneResException; import com.easysoftware.common.exception.ParamErrorException; @@ -68,4 +69,16 @@ public class OEPackageServiceImpl implements OEPackageService { public Map queryAllOEPkgMenu(final OEPackageSearchCondition condition) { return oEPkgGateway.queryMenuByName(condition); } + + /** + * Queries all available openEuler version of oepkg package. + * + * @param condition The search condition. + * @return Map containing the epkg package menu. + */ + @Override + public ResponseEntity queryEulerVersionsByName(OepkgNameSearchCondition condition) { + Map res = oEPkgGateway.queryEulerVersionByName(condition); + return ResultUtil.success(HttpStatus.OK, res); + } } diff --git a/src/main/java/com/easysoftware/application/oepackage/dto/OepkgNameSearchCondition.java b/src/main/java/com/easysoftware/application/oepackage/dto/OepkgNameSearchCondition.java new file mode 100644 index 0000000..0fbe27f --- /dev/null +++ b/src/main/java/com/easysoftware/application/oepackage/dto/OepkgNameSearchCondition.java @@ -0,0 +1,22 @@ +package com.easysoftware.application.oepackage.dto; + +import com.easysoftware.common.constant.PackageConstant; + +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OepkgNameSearchCondition { + /** + * Name field with a maximum length defined by PackageConstant.MAX_FIELD_LENGTH. + */ + @Size(max = PackageConstant.MAX_FIELD_LENGTH) + @Pattern(regexp = PackageConstant.VALID_STR_REG, message = PackageConstant.VALID_MESSAGE) + private String name; + +} diff --git a/src/main/java/com/easysoftware/application/oepackage/vo/OepkgEulerVersionVo.java b/src/main/java/com/easysoftware/application/oepackage/vo/OepkgEulerVersionVo.java new file mode 100644 index 0000000..df5f098 --- /dev/null +++ b/src/main/java/com/easysoftware/application/oepackage/vo/OepkgEulerVersionVo.java @@ -0,0 +1,27 @@ +package com.easysoftware.application.oepackage.vo; + +import com.easysoftware.application.applicationpackage.vo.EulerVer; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OepkgEulerVersionVo implements EulerVer { + /** + * OpenEuler versions of the package. + */ + private String os; + + /** + * OpenEuler arch of the package. + */ + private String arch; + + /** + * pkgId of the package. + */ + private String pkgId; +} diff --git a/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java b/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java index 407033b..52c61db 100644 --- a/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; +import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; public interface OEPackageGateway { @@ -59,9 +60,17 @@ public interface OEPackageGateway { long queryTableLength(); /** - * query pkg num of arch by os. - * @param os os. - * @return pkg nums of arch. + * Query Euler Version based on the provided search condition. + * + * @param condition The search condition for querying EulerVersion + * @return A map containing tags information */ - Map queryArchNum(String os); + Map queryEulerVersionByName(OepkgNameSearchCondition condition); + + /** + * query pkg num of arch by os. + * @param os os. + * @return pkg nums of arch. + */ + Map queryArchNum(String os); } diff --git a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java index 86fbe26..61e0a38 100644 --- a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java @@ -16,8 +16,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; +import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; import com.easysoftware.application.oepackage.vo.OEPackageMenuVo; +import com.easysoftware.application.oepackage.vo.OepkgEulerVersionVo; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; @@ -189,6 +191,31 @@ public class OEPackageGatewayImpl implements OEPackageGateway { return OEPackageConverter.toDetail(rpmList); } + /** + * Query the Euler Version based on the provided search condition. + * + * @param condition The search condition for querying a part of the RPM Euler Version + * @return A map containing relevant information + */ + @Override + public Map queryEulerVersionByName(OepkgNameSearchCondition condition) { + QueryWrapper wrapper = QueryWrapperUtil.createQueryWrapper(new OepkgDO(), + condition, ""); + OepkgEulerVersionVo pkgVo = new OepkgEulerVersionVo(); + List columns = ClassField.getFieldNames(pkgVo); + if (condition.getName() != null) { + wrapper.eq("name", condition.getName()); + } + wrapper.select(columns); + wrapper.groupBy("os", "arch"); + List rpmList = oEPkgMapper.selectList(wrapper); + List versions = OEPackageConverter.toVersion(rpmList); + Map res = Map.ofEntries( + Map.entry("total", versions.size()), + Map.entry("list", versions)); + return res; + } + /** * query pkg num of arch by os. * @param os os. diff --git a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/coverter/OEPackageConverter.java b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/coverter/OEPackageConverter.java index 788735c..7ac1611 100644 --- a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/coverter/OEPackageConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/coverter/OEPackageConverter.java @@ -20,7 +20,9 @@ import org.springframework.beans.BeanUtils; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; import com.easysoftware.application.oepackage.vo.OEPackageMenuVo; +import com.easysoftware.application.oepackage.vo.OepkgEulerVersionVo; import com.easysoftware.common.entity.MessageCode; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.infrastructure.oepkg.gatewalmpl.dataobject.OepkgDO; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.converter.RPMPackageConverter; @@ -106,4 +108,24 @@ public final class OEPackageConverter { } return res; } + + /** + * Converts a list of RPMPackageDO objects to a list of OepkgEulerVersionVo + * view + * objects. + * + * @param rpmPkgDOs The list of OepkgDO objects to convert. + * @return A list of OepkgEulerVersionVo view objects. + */ + public static List toVersion(final List rpmPkgDOs) { + List res = new ArrayList<>(); + for (OepkgDO rpm : rpmPkgDOs) { + OepkgEulerVersionVo version = new OepkgEulerVersionVo(); + version.setOs(rpm.getOs()); + version.setArch(rpm.getArch()); + version.setPkgId(rpm.getPkgId()); + res.add(version); + } + return SortUtil.sortEulerVer(res); + } } -- Gitee