From 1840a5969adcc9cf6fe06a9ce88b571cd50aeacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=ED=95=98=EC=84=B1?= Date: Thu, 11 Apr 2024 11:29:47 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9A=92=EF=B8=8F=20::=20(#626)=20port=20?= =?UTF-8?q?=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/service/GetKeywordsService.java | 38 ------------------- .../domain/code/spi/CommandCodePort.java | 2 +- .../jobis/domain/code/spi/QueryCodePort.java | 8 ++-- .../code/usecase/CreateCodeUseCase.java | 12 +++--- .../code/usecase/QueryCodesUseCase.java | 2 +- .../usecase/RegisterCompanyUseCase.java | 4 +- .../usecase/TeacherQueryCompaniesUseCase.java | 7 +--- .../retum/jobis/domain/file/spi/FilePort.java | 4 -- .../persistence/CodePersistenceAdapter.java | 24 ++++++++---- 9 files changed, 30 insertions(+), 71 deletions(-) delete mode 100644 jobis-application/src/main/java/team/retum/jobis/domain/code/service/GetKeywordsService.java diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/code/service/GetKeywordsService.java b/jobis-application/src/main/java/team/retum/jobis/domain/code/service/GetKeywordsService.java deleted file mode 100644 index 7f17c15fd..000000000 --- a/jobis-application/src/main/java/team/retum/jobis/domain/code/service/GetKeywordsService.java +++ /dev/null @@ -1,38 +0,0 @@ -package team.retum.jobis.domain.code.service; - -import lombok.RequiredArgsConstructor; -import team.retum.jobis.common.annotation.Service; -import team.retum.jobis.common.util.StringUtil; -import team.retum.jobis.domain.code.exception.CodeNotFoundException; -import team.retum.jobis.domain.code.model.Code; -import team.retum.jobis.domain.code.spi.QueryCodePort; - -import java.util.List; - -@RequiredArgsConstructor -@Service -public class GetKeywordsService { - - private final QueryCodePort queryCodePort; - - public String getKeywordsAsJoinedString(String jobCodes) { - return StringUtil.joinStringList( - queryCodePort.queryCodesByIdIn( - StringUtil.divideString(jobCodes, ",").stream().map(Long::parseLong).toList() - ).stream().map(Code::getKeyword).toList(), - "/" - ); - } - - public List getKeywordsAsList(List jobCodes) { - return queryCodePort.queryCodesByIdIn( - jobCodes.stream().map(Long::parseLong).toList() - ).stream().map(Code::getKeyword).toList(); - } - - public String getCodeKeyword(Long code) { - return queryCodePort.queryCodeById(code) - .orElseThrow(() -> CodeNotFoundException.EXCEPTION) - .getKeyword(); - } -} diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/CommandCodePort.java b/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/CommandCodePort.java index a76b79f6e..c41af75d8 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/CommandCodePort.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/CommandCodePort.java @@ -4,5 +4,5 @@ public interface CommandCodePort { - Code saveCode(Code code); + Code save(Code code); } diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/QueryCodePort.java b/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/QueryCodePort.java index 08449ef8d..edbfa485f 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/QueryCodePort.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/code/spi/QueryCodePort.java @@ -8,11 +8,11 @@ public interface QueryCodePort { - List queryCodesByKeywordAndType(String keyword, CodeType codeType, Long parentCode); + List getAllByKeywordAndType(String keyword, CodeType codeType, Long parentCode); - Optional queryCodeById(Long codeId); + Code getByIdOrThrow(Long codeId); - List queryCodesByIdIn(List codes); + List getAllByIdInOrThrow(List codes); - Optional queryCodeByKeywordAndType(String keyword, CodeType type); + Optional getByKeywordAndType(String keyword, CodeType type); } diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/CreateCodeUseCase.java b/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/CreateCodeUseCase.java index 0d272fdb2..205334fa2 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/CreateCodeUseCase.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/CreateCodeUseCase.java @@ -5,24 +5,22 @@ import team.retum.jobis.domain.code.dto.request.CreateCodeRequest; import team.retum.jobis.domain.code.dto.response.CreateCodeResponse; import team.retum.jobis.domain.code.model.Code; -import team.retum.jobis.domain.code.spi.CommandCodePort; -import team.retum.jobis.domain.code.spi.QueryCodePort; +import team.retum.jobis.domain.code.spi.CodePort; @RequiredArgsConstructor @UseCase public class CreateCodeUseCase { - private final CommandCodePort commandCodePort; - private final QueryCodePort queryCodePort; + private final CodePort codePort; public CreateCodeResponse execute(CreateCodeRequest request) { - return queryCodePort.queryCodeByKeywordAndType(request.keyword(), request.codeType()) - .map(code -> new CreateCodeResponse(commandCodePort.saveCode(code.changeAccessible(true)).getId())) + return codePort.getByKeywordAndType(request.keyword(), request.codeType()) + .map(code -> new CreateCodeResponse(codePort.save(code.changeAccessible(true)).getId())) .orElseGet(() -> new CreateCodeResponse(createCode(request).getId())); } private Code createCode(CreateCodeRequest request) { - return commandCodePort.saveCode( + return codePort.save( Code.builder() .codeType(request.codeType()) .jobType(request.jobType()) diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/QueryCodesUseCase.java b/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/QueryCodesUseCase.java index 62539e3f5..33681172e 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/QueryCodesUseCase.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/code/usecase/QueryCodesUseCase.java @@ -16,7 +16,7 @@ public class QueryCodesUseCase { private final QueryCodePort queryCodePort; public CodesResponse execute(String keyword, CodeType codeType, Long parentCode) { - List codes = queryCodePort.queryCodesByKeywordAndType( + List codes = queryCodePort.getAllByKeywordAndType( keyword, codeType, parentCode ).stream() .map(CodesResponse::of) diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/RegisterCompanyUseCase.java b/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/RegisterCompanyUseCase.java index 0a1f22e1c..c28a08d51 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/RegisterCompanyUseCase.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/RegisterCompanyUseCase.java @@ -7,7 +7,6 @@ import team.retum.jobis.domain.auth.model.Authority; import team.retum.jobis.domain.auth.model.PlatformType; import team.retum.jobis.domain.auth.spi.JwtPort; -import team.retum.jobis.domain.code.exception.CodeNotFoundException; import team.retum.jobis.domain.code.model.Code; import team.retum.jobis.domain.code.spi.QueryCodePort; import team.retum.jobis.domain.company.dto.request.RegisterCompanyRequest; @@ -31,8 +30,7 @@ public TokenResponse execute(RegisterCompanyRequest request) { checkCompanyExists(request.businessNumber()); checkCompanyRegistered(request.businessNumber()); - Code code = queryCodePort.queryCodeById(request.businessAreaCode()) - .orElseThrow(() -> CodeNotFoundException.EXCEPTION); + Code code = queryCodePort.getByIdOrThrow(request.businessAreaCode()); Company savedCompany = commandCompanyPort.saveCompany( Company.of(request, code.getKeyword()) diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/TeacherQueryCompaniesUseCase.java b/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/TeacherQueryCompaniesUseCase.java index b9aaf4481..bbeb8aa24 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/TeacherQueryCompaniesUseCase.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/company/usecase/TeacherQueryCompaniesUseCase.java @@ -4,7 +4,6 @@ import team.retum.jobis.common.annotation.ReadOnlyUseCase; import team.retum.jobis.common.dto.response.TotalPageCountResponse; import team.retum.jobis.common.util.NumberUtil; -import team.retum.jobis.domain.code.exception.CodeNotFoundException; import team.retum.jobis.domain.code.spi.QueryCodePort; import team.retum.jobis.domain.company.dto.CompanyFilter; import team.retum.jobis.domain.company.dto.response.TeacherQueryCompaniesResponse; @@ -32,8 +31,7 @@ public TeacherQueryCompaniesResponse execute( .region(region) .businessArea( businessArea == null ? null : - queryCodePort.queryCodeById(businessArea) - .orElseThrow(() -> CodeNotFoundException.EXCEPTION) + queryCodePort.getByIdOrThrow(businessArea) .getKeyword() ) .page(page) @@ -66,8 +64,7 @@ public TotalPageCountResponse getTotalPageCount(CompanyType type, String company .region(region) .businessArea( businessArea == null ? null : - queryCodePort.queryCodeById(businessArea) - .orElseThrow(() -> CodeNotFoundException.EXCEPTION) + queryCodePort.getByIdOrThrow(businessArea) .getKeyword() ) .build(); diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/file/spi/FilePort.java b/jobis-application/src/main/java/team/retum/jobis/domain/file/spi/FilePort.java index 4168260fb..a2e765e61 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/file/spi/FilePort.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/file/spi/FilePort.java @@ -1,10 +1,6 @@ package team.retum.jobis.domain.file.spi; -import java.io.File; - public interface FilePort { - void uploadFile(File file, String fileName); - String generateFileUploadUrl(String fullFileName); } diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/code/persistence/CodePersistenceAdapter.java b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/code/persistence/CodePersistenceAdapter.java index cd5148805..ea20ff20d 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/code/persistence/CodePersistenceAdapter.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/code/persistence/CodePersistenceAdapter.java @@ -4,6 +4,7 @@ import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import team.retum.jobis.domain.code.exception.CodeNotFoundException; import team.retum.jobis.domain.code.model.Code; import team.retum.jobis.domain.code.model.CodeType; import team.retum.jobis.domain.code.persistence.mapper.CodeMapper; @@ -24,7 +25,7 @@ public class CodePersistenceAdapter implements CodePort { private final JPAQueryFactory jpaQueryFactory; @Override - public List queryCodesByKeywordAndType(String keyword, CodeType codeType, Long parentCode) { + public List getAllByKeywordAndType(String keyword, CodeType codeType, Long parentCode) { return jpaQueryFactory .selectFrom(codeEntity) .where( @@ -38,26 +39,33 @@ public List queryCodesByKeywordAndType(String keyword, CodeType codeType, } @Override - public Optional queryCodeById(Long codeId) { - return codeJpaRepository.findById(codeId) - .map(codeMapper::toDomain); + public Code getByIdOrThrow(Long codeId) { + return codeMapper.toDomain( + codeJpaRepository.findById(codeId) + .orElseThrow(() -> CodeNotFoundException.EXCEPTION) + ); } @Override - public List queryCodesByIdIn(List codes) { - return codeJpaRepository.findCodesByCodeIn(codes).stream() + public List getAllByIdInOrThrow(List codes) { + List result = codeJpaRepository.findCodesByCodeIn(codes).stream() .map(codeMapper::toDomain) .toList(); + if (result.size() != codes.size()) { + throw CodeNotFoundException.EXCEPTION; + } + + return result; } @Override - public Optional queryCodeByKeywordAndType(String keyword, CodeType type) { + public Optional getByKeywordAndType(String keyword, CodeType type) { return codeJpaRepository.findByKeywordAndType(keyword, type) .map(codeMapper::toDomain); } @Override - public Code saveCode(Code code) { + public Code save(Code code) { return codeMapper.toDomain( codeJpaRepository.save(codeMapper.toEntity(code)) ); From e47926a202abaa8b73847f0f812382a2cd7fc20b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=ED=95=98=EC=84=B1?= Date: Thu, 11 Apr 2024 12:20:39 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20::=20(#636)=20remove?= =?UTF-8?q?=20implementation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retum/jobis/thirdparty/s3/S3Adapter.java | 31 ------------------- 1 file changed, 31 deletions(-) diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/thirdparty/s3/S3Adapter.java b/jobis-infrastructure/src/main/java/team/retum/jobis/thirdparty/s3/S3Adapter.java index 160ac8912..c20a0e622 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/thirdparty/s3/S3Adapter.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/thirdparty/s3/S3Adapter.java @@ -3,20 +3,12 @@ import com.amazonaws.HttpMethod; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.Headers; -import com.amazonaws.services.s3.internal.Mimetypes; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; -import com.amazonaws.services.s3.model.ObjectMetadata; -import com.amazonaws.services.s3.model.PutObjectRequest; import lombok.RequiredArgsConstructor; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import team.retum.jobis.domain.file.exception.FileUploadFailedException; import team.retum.jobis.domain.file.spi.FilePort; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.util.Date; @@ -28,29 +20,6 @@ public class S3Adapter implements FilePort { private final AmazonS3 amazonS3; private final S3Properties s3Properties; - @Override - @Async("asyncTaskExecutor") - public void uploadFile(File file, String fileName) { - try { - InputStream inputStream = new FileInputStream(file); - ObjectMetadata objectMetadata = new ObjectMetadata(); - objectMetadata.setContentType(Mimetypes.getInstance().getMimetype(fileName)); - objectMetadata.setContentLength(file.length()); - - amazonS3.putObject( - new PutObjectRequest( - s3Properties.getBucket(), - fileName, - inputStream, - objectMetadata - ).withCannedAcl(CannedAccessControlList.PublicRead) - ); - } catch (Exception e) { - e.printStackTrace(); - throw FileUploadFailedException.EXCEPTION; - } - } - @Override public String generateFileUploadUrl(String fullFileName) { return URLDecoder.decode(