Skip to content

Commit

Permalink
πŸ”— :: (#626) code, file νŒ¨ν‚€μ§€ λ¦¬νŽ™ν† λ§
Browse files Browse the repository at this point in the history
  • Loading branch information
tedsoftj1123 authored Apr 16, 2024
2 parents 3bc4641 + e47926a commit 52a1a46
Show file tree
Hide file tree
Showing 10 changed files with 30 additions and 102 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@

public interface CommandCodePort {

Code saveCode(Code code);
Code save(Code code);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@

public interface QueryCodePort {

List<Code> queryCodesByKeywordAndType(String keyword, CodeType codeType, Long parentCode);
List<Code> getAllByKeywordAndType(String keyword, CodeType codeType, Long parentCode);

Optional<Code> queryCodeById(Long codeId);
Code getByIdOrThrow(Long codeId);

List<Code> queryCodesByIdIn(List<Long> codes);
List<Code> getAllByIdInOrThrow(List<Long> codes);

Optional<Code> queryCodeByKeywordAndType(String keyword, CodeType type);
Optional<Code> getByKeywordAndType(String keyword, CodeType type);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class QueryCodesUseCase {
private final QueryCodePort queryCodePort;

public CodesResponse execute(String keyword, CodeType codeType, Long parentCode) {
List<CodeResponse> codes = queryCodePort.queryCodesByKeywordAndType(
List<CodeResponse> codes = queryCodePort.getAllByKeywordAndType(
keyword, codeType, parentCode
).stream()
.map(CodesResponse::of)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -24,7 +25,7 @@ public class CodePersistenceAdapter implements CodePort {
private final JPAQueryFactory jpaQueryFactory;

@Override
public List<Code> queryCodesByKeywordAndType(String keyword, CodeType codeType, Long parentCode) {
public List<Code> getAllByKeywordAndType(String keyword, CodeType codeType, Long parentCode) {
return jpaQueryFactory
.selectFrom(codeEntity)
.where(
Expand All @@ -38,26 +39,33 @@ public List<Code> queryCodesByKeywordAndType(String keyword, CodeType codeType,
}

@Override
public Optional<Code> 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<Code> queryCodesByIdIn(List<Long> codes) {
return codeJpaRepository.findCodesByCodeIn(codes).stream()
public List<Code> getAllByIdInOrThrow(List<Long> codes) {
List<Code> result = codeJpaRepository.findCodesByCodeIn(codes).stream()
.map(codeMapper::toDomain)
.toList();
if (result.size() != codes.size()) {
throw CodeNotFoundException.EXCEPTION;
}

return result;
}

@Override
public Optional<Code> queryCodeByKeywordAndType(String keyword, CodeType type) {
public Optional<Code> 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))
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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(
Expand Down

0 comments on commit 52a1a46

Please sign in to comment.