Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE-REFACTOR] 포켓몬 정보 MongoDB 리팩토링 #336

Merged
merged 79 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from 77 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
24ced30
refactor: Pokemon 도메인 및 embeded 클래스 기본 생성자 및 @Field 어노테이션 추가
dwax1324 Sep 25, 2024
cfc299c
refactor: EvolutionRepository.java 삭제
dwax1324 Sep 25, 2024
a67fd60
refactor: db 이니셜라이저 테스트 삭제
dwax1324 Sep 25, 2024
1394aaa
refactor: db 이니셜라이저 주석 처리
dwax1324 Sep 25, 2024
b165f54
refactor: 서비스 메서드 리펙터링
dwax1324 Sep 25, 2024
35c2f8d
refactor: dto 정적 메서드 삭제
dwax1324 Sep 25, 2024
57b026b
refactor: 몽고디비 설정 및 컨버터 추가
dwax1324 Sep 25, 2024
26485f3
refactor: evolution의 레벨을 String에서 Integer로 변경
dwax1324 Sep 25, 2024
a38e1a6
refactor: 폼변환 아이템 및 업데이트된 진화 아이템 추가
dwax1324 Sep 25, 2024
b0359fb
refactor: 예외 처리 명시
dwax1324 Sep 25, 2024
f7ce0f6
refactor: evolutionChain 클래스 삭제
dwax1324 Sep 25, 2024
a6e1579
refactor: 주석 삭제
dwax1324 Sep 25, 2024
2171756
refactor: 실패하는 테스트 주석 처리
dwax1324 Sep 25, 2024
8255b7c
refactor: Allargscontsructor 삭제
dwax1324 Sep 26, 2024
a581c40
refactor: 필요없는 파일 삭제
dwax1324 Sep 26, 2024
a9108af
refactor: 디비 이니셜라이저 삭제
dwax1324 Sep 26, 2024
155a9ec
refactor: 개행 추가
dwax1324 Sep 26, 2024
cd956ea
refactor: 개행 삭제
dwax1324 Sep 26, 2024
1c87739
refactor: 개행
dwax1324 Sep 26, 2024
0272412
refactor: EggMoveResponse 추가
dwax1324 Sep 26, 2024
7fa1c9c
refactor: ability dto에서 생성
dwax1324 Sep 26, 2024
be87392
refactor: biomeDto 빈값일시 Empty반환
dwax1324 Sep 26, 2024
acec3a9
refactor: 포켓몬 dto 정적 팩토리 메서드 추가
dwax1324 Sep 26, 2024
843d150
refactor: 포켓몬 서비스 리펙터링
dwax1324 Sep 26, 2024
3cdfeca
refactor: 컨트롤러 메서드명 변경
dwax1324 Sep 26, 2024
0133f13
test: 포켓몬의 개수를 확인한다.
dwax1324 Oct 5, 2024
ffda0cc
test: 포켓몬의 개수를 확인한다.
dwax1324 Oct 5, 2024
edfa1c7
test: 포켓몬 데이터의 아이디 형식을 확인한다.
dwax1324 Oct 5, 2024
6c23a89
test: 포켓몬 데이터의 종족값은 기본 능력치의 합이다.
dwax1324 Oct 5, 2024
04a4412
test: 포켓몬 데이터의 세대가 유효한지 확인한다.
dwax1324 Oct 5, 2024
3da2764
test: legendary, subLegendary, mythical 셋 중 하나가 true거나 모두 false여야한다.
dwax1324 Oct 5, 2024
e1133e2
test: normal ability는 항상 1개 또는 2개이다.
dwax1324 Oct 5, 2024
361d4a9
test: abilitiy id는 서로 중복될 수 없다.
dwax1324 Oct 5, 2024
03a7f9f
test: 정해진 범위의 수인지 확인한다.
dwax1324 Oct 5, 2024
b7c30f6
test: 히든 특성은 존재할 수도 안할 수도 있다.
dwax1324 Oct 5, 2024
207bfc1
test: 특성의 총 개수는 2개에서 4개 사이다.
dwax1324 Oct 5, 2024
9304660
test: 타입의 개수는 1개 혹은 2개다.
dwax1324 Oct 5, 2024
389c10a
test: 중복된 타입은 존재하지 않는다.
dwax1324 Oct 5, 2024
91710e9
test: 중복된 타입은 존재하지 않는다.
dwax1324 Oct 5, 2024
ed2d830
test: 기술 레벨의 범위를 확인한다.
dwax1324 Oct 5, 2024
192a06b
refactor: 포켓몬 수 검증 커스텀 예외 추가
dwax1324 Oct 5, 2024
7afa95f
refactor: 추가 메시지 넣을 수 있도록 생성자 추가
dwax1324 Oct 5, 2024
05fce9c
refactor: 아이디에 잘못된 문자가 들어갈 시에 대한 예외 추가
dwax1324 Oct 5, 2024
4e3f41d
refactor: 포켓몬 세대 에러 메시지 추가
dwax1324 Oct 5, 2024
8de3e89
refactor: 포켓몬 종족값 에러 추가, 중복되는 코드 제거
dwax1324 Oct 5, 2024
7f64da5
refactor: rarity 검증 메서드 리펙터링
dwax1324 Oct 5, 2024
3a4f12f
refactor: 폼변환 예외 메시지 추가
dwax1324 Oct 5, 2024
aa6a95f
refactor: 디테일 메시지 삭제
dwax1324 Oct 5, 2024
abc1383
refactor: 포켓몬에 디버깅용 toString 어노테이션 추가
dwax1324 Oct 5, 2024
9bdf5df
refactor: 테스트에 있는 코드 모두 포켓몬 발리데이터로 이동
dwax1324 Oct 5, 2024
ceda589
test: 예상하는 포켓몬 개수와 일치하지 않으면 예외가 발생한다
dwax1324 Oct 5, 2024
40f996c
test: 타입의 개수가 1개 혹은 2개가 아니라면 예외가 발생한다
dwax1324 Oct 5, 2024
001dbff
refactor: 진화 서비스 뎁스 기반으로 재구현
dwax1324 Oct 6, 2024
5a4bea8
refactor: 포켓몬 서비스 중복 코드 정리 및 리펙터링
dwax1324 Oct 6, 2024
9eb1bd5
refactor: 포켓몬 진화 클래스 분리 및 로직 변경
dwax1324 Oct 6, 2024
9868ef9
refactor: 불필요한 파일 삭제
dwax1324 Oct 6, 2024
b5f7d19
refactor: 에러 메시지 및 테스트 유틸 추가
dwax1324 Oct 6, 2024
def2b7c
refactor: 불필요한 파일 삭제 및 변수명 변경
dwax1324 Oct 6, 2024
895a082
refactor: indegree 생성을 context에서 calculator로 이동
dwax1324 Oct 6, 2024
09b5801
test: 진화 아이디는 모두 포켓몬 아이디에 포함된다.
dwax1324 Oct 6, 2024
7ab1d85
refactor: BufferedQueue 클래스 추가 및 진화관련 코드 가독성 개선
dwax1324 Oct 7, 2024
77f4ba3
fix: 진화체인이 없는 경우 nullpointexception 발생, default depth를 -1을 반환하도록 변경
dwax1324 Oct 7, 2024
be483e0
test: 버퍼 호출 전에 저장된 값만 꺼낼 수 있다.
dwax1324 Oct 7, 2024
adfadf7
test: 간선 정보가 주어졌을 때 각 노드의 깊이를 구할 수 있다
dwax1324 Oct 7, 2024
59f4b68
test: 각 노드의 깊이 정보를 가져올 수 있다.
dwax1324 Oct 7, 2024
5e04bfb
test: 포켓몬 진화 정보를 가져올 수 있다.
dwax1324 Oct 7, 2024
b8ba076
test: 잘못된 포켓몬 아이디라면 예외가 발생한다.
dwax1324 Oct 7, 2024
ffb7b55
refactor: 변수명 및 개행 수정
dwax1324 Oct 7, 2024
f4ed49f
refactor: 간단한 이미지 상수 클래스 추가
dwax1324 Oct 7, 2024
ff8a716
refactor: 개행 및 임포트문 수정
dwax1324 Oct 7, 2024
8adeb1b
commit message for merge
dwax1324 Oct 7, 2024
a1ce2f8
fix: conflict 해결
dwax1324 Oct 7, 2024
ac5caf5
fix: 통과하지 않는 테스트 수정
dwax1324 Oct 7, 2024
7d0cb24
chore: 서브모듈 커밋 시점 변경
dwax1324 Oct 7, 2024
449d36c
refactor: 에러 상태코드 500으로 변경
dwax1324 Oct 7, 2024
09ef193
refactor: 머지된 파일 정리
dwax1324 Oct 7, 2024
4e5e594
refactor: 예외 상세 추가 및 검증 관련 코드 개선
dwax1324 Oct 7, 2024
bc97e61
refactor: 개행 수정
dwax1324 Oct 10, 2024
0d01b15
refactor: 피드백 적용
dwax1324 Oct 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@ private double getTotalMultiplier(
List<Type> types = new ArrayList<>();
if (!rivalInMemoryPokemon.firstType().isEmpty()) {
types.add(Type.findByEngName(rivalInMemoryPokemon.firstType())
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.POKEMON_TYPE_NOT_FOUND)));
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.TYPE_NOT_FOUND)));
}
if (!rivalInMemoryPokemon.secondType().isEmpty()) {
types.add(Type.findByEngName(rivalInMemoryPokemon.secondType())
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.POKEMON_TYPE_NOT_FOUND)));
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.TYPE_NOT_FOUND)));
}
double typeMatchingMultiplier = getTypeMatchingMultiplier(moveType, types);
double sameTypeBonusMultiplier = getSameTypeAttackBonusMultiplier(moveType, myInMemoryPokemon);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ private String regularizeEmptyField(String field) {

private BattleMove createMove(List<String> fields) {
Type moveType = Type.findByName(fields.get(4))
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.POKEMON_TYPE_NOT_FOUND));
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.TYPE_NOT_FOUND));
MoveCategory moveCategory = MoveCategory.findByEngName(fields.get(6))
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.MOVE_CATEGORY_NOT_FOUND));

Expand All @@ -100,9 +100,9 @@ private BattleMove createMove(List<String> fields) {

private TypeMatching createTypeMatching(List<String> fields) {
Type fromType = Type.findByEngName(fields.get(0))
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.POKEMON_TYPE_NOT_FOUND));
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.TYPE_NOT_FOUND));
Type toType = Type.findByEngName(fields.get(1))
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.POKEMON_TYPE_NOT_FOUND));
.orElseThrow(() -> new GlobalCustomException(ErrorMessage.TYPE_NOT_FOUND));
double result = convertToDouble(fields.get(2));

return new TypeMatching(fromType, toType, result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,41 @@
@RequiredArgsConstructor
public enum ErrorMessage {

POKEMON_NOT_FOUND(HttpStatus.NOT_FOUND, "해당하는 포켓몬을 찾지 못했습니다."),
POKEMON_ABILITY_NOT_FOUND(HttpStatus.NOT_FOUND, "해당하는 특성을 찾지 못했습니다."),
POKEMON_TYPE_NOT_FOUND(HttpStatus.NOT_FOUND, "해당하는 타입을 찾지 못했습니다."),
ARTICLE_NOT_FOUND(HttpStatus.NOT_FOUND, "해당하는 꿀팁을 찾지 못했습니다."),
MOVE_TARGET_NOT_FOUND(HttpStatus.NOT_FOUND, "기술 타켓을 찾지 못했습니다."),
MOVE_FLAG_NOT_FOUND(HttpStatus.NOT_FOUND, "기술 플래그를 찾지 못했습니다."),
WEATHER_NOT_FOUND(HttpStatus.NOT_FOUND, "id에 해당하는 날씨를 찾지 못했습니다."),
EVOLUTION_NOT_FOUND(HttpStatus.NOT_FOUND, "해당하는 진화 정보를 찾지 못했습니다."),
POKEMON_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 포켓몬을 찾지 못했습니다."),
POKEMON_ABILITY_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 특성을 찾지 못했습니다."),
TYPE_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 타입을 찾지 못했습니다."),
ARTICLE_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 꿀팁을 찾지 못했습니다."),
MOVE_TARGET_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "기술 타켓을 찾지 못했습니다."),
MOVE_FLAG_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "기술 플래그를 찾지 못했습니다."),
WEATHER_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "id에 해당하는 날씨를 찾지 못했습니다."),
EVOLUTION_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 진화 정보를 찾지 못했습니다."),
ITEM_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 아이템을 찾지 못했습니다."),

TIER_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 티어를 찾지 못했습니다."),
BIOME_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "해당하는 바이옴을 찾지 못했습니다."),
MOVE_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "id에 해당하는 기술을 찾지 못했습니다."),
MOVE_CATEGORY_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "기술 카테고리를 찾지 못했습니다."),
PARSE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "파싱에 실패했습니다."),
TYPE_MATCHING_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "타입 상성 찾기에 실패했습니다."),
POKEMON_SIZE_MISMATCH(HttpStatus.INTERNAL_SERVER_ERROR, "예상 포켓몬 수와 실제 데이터가 일치하지 않습니다."),
POKEMON_BASE_TOTAL_MISMATCH(HttpStatus.INTERNAL_SERVER_ERROR, "종족값이 기본 능력치의 합과 다릅니다."),
POKEMON_ID_UNEXPECTED_LETTER(HttpStatus.INTERNAL_SERVER_ERROR, "아이디에 허용되지 않은 문자가 포함되어 있습니다."),
POKEMON_ID_DELIMITER_MISPLACED(HttpStatus.INTERNAL_SERVER_ERROR, "아이디에 구분자가 처음이나 끝에 올 수 없습니다."),
POKEMON_ID_DELIMITER_IS_SEQUENTIAL(HttpStatus.INTERNAL_SERVER_ERROR, "아이디에 구분자가 연속으로 배치되어 있습니다."),
POKEMON_GENERATION_MISMATCH(HttpStatus.INTERNAL_SERVER_ERROR,"적절하지 않은 포켓몬 세대입니다."),
POKEMON_FORM_CHANGE_MISMATCH(HttpStatus.INTERNAL_SERVER_ERROR,"폼변환이 가능하지만 변환 가능한 포켓몬이 없습니다."),
POKEMON_RARITY_COUNT_MISMATCH(HttpStatus.INTERNAL_SERVER_ERROR,"전설, 준전설, 미신은 셋 중 하나 이하만 선택될 수 있습니다."),
POKEMON_NORMAL_ABILITY_COUNT(HttpStatus.INTERNAL_SERVER_ERROR,"포켓몬 기본 특성 개수가 유효범위 내에 있지 않습니다."),
POKEMON_TOTAL_ABILITY_COUNT(HttpStatus.INTERNAL_SERVER_ERROR,"포켓몬 특성의 총 개수가 유효범위 내에 있지 않습니다."),
POKEMON_ABILITY_DUPLICATION(HttpStatus.INTERNAL_SERVER_ERROR,"중복되는 특성이 존재합니다."),
POKEMON_STAT_OUT_OF_RANGE(HttpStatus.INTERNAL_SERVER_ERROR, "포켓몬 능력 수치가 예상 범위 내에 있지 않습니다."),
POKEMON_PASSIVE_NOT_FOUND(HttpStatus.INTERNAL_SERVER_ERROR, "패시브 특성은 반드시 존재해야합니다."),
POKEMON_TYPE_COUNT_OUT_OF_RANGE(HttpStatus.INTERNAL_SERVER_ERROR,"포켓몬의 특성의 개수가 유효범위 내에 있지 않습니다."),
POKEMON_TYPE_DUPLICATION(HttpStatus.INTERNAL_SERVER_ERROR,"포켓몬의 타입은 중복될 수 없습니다."),
POKEMON_EVOLUTION_ID_MISMATCH(HttpStatus.INTERNAL_SERVER_ERROR, "포켓몬과 진화 포켓몬 아이디가 서로 일치하지 않습니다"),




FILE_ACCESS_FAILED(HttpStatus.BAD_REQUEST, "파일 정보 접근에 실패했습니다."),
FILE_EXTENSION_NOT_APPLY(HttpStatus.BAD_REQUEST, "지원하지 않는 파일 형식입니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,9 @@ public GlobalCustomException(ErrorMessage errorMessage) {
super(errorMessage.getMessage());
this.httpStatus = errorMessage.getHttpStatus();
}

public GlobalCustomException(ErrorMessage errorMessage, String message) {
super(errorMessage.getMessage() + message);
this.httpStatus = errorMessage.getHttpStatus();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.pokerogue.helper.pokemon.config;

public enum ImageUrl {
BASE_URL("https://dl70s9ccojnge.cloudfront.net/pokerogue-helper/pokerogue"),
jinchiim marked this conversation as resolved.
Show resolved Hide resolved
POKEMON_FRONT("/pokemon/front/"),
POKEMON_BACK("/pokemon/back/"),
TYPE("/type/"),
MOVE_CATEGORY("/move-category/"),
BIOME("/biome/"),
;

public static final String PNG = ".png";
private final String url;

ImageUrl(String url) {
this.url = url;
}

public static String getPokemonImage(String id) {
return BASE_URL.url + POKEMON_FRONT.url + id + PNG;
}

public static String getPokemonBackImage(String id) {
return BASE_URL.url + POKEMON_BACK.url + id + PNG;
}

public static String getBiomeImage(String id) {
return BASE_URL.url + BIOME.url + id + PNG;
}

}
Loading
Loading