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

feat: 시외버스 API 구현 #317

Merged
merged 129 commits into from
Apr 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
2caa829
feat: API 골격 작성
songsunkook Feb 14, 2024
26c1012
feat: mongoDB 의존성 추가
songsunkook Feb 15, 2024
f9140d0
feat: 응답 객체 작성
songsunkook Feb 15, 2024
ab0fa00
feat: 예외 추가
songsunkook Feb 15, 2024
fc27b05
feat: 엔티티 작성
songsunkook Feb 15, 2024
6d2326d
feat: 미운행인 버스 필터링
songsunkook Feb 16, 2024
2c553cb
feat: enum 추가
songsunkook Feb 19, 2024
1933b33
feat: 남은 시간 계산 로직 작성
songsunkook Feb 19, 2024
023840c
feat: 가장 최근 버스까지 남은 시간 응답 구현
songsunkook Feb 20, 2024
0545361
feat: 미운행 요일 제외 로직 추가
songsunkook Feb 20, 2024
9f00613
feat: 버스 정거장 검증로직 적용 및 중복되는 시간 제외
songsunkook Feb 21, 2024
b724963
refactor: enum 객체를 사용하도록 수정
songsunkook Feb 21, 2024
a18ccf5
refactor: 등하교 방향 기준 탐색에서 정류장 탐색으로 로직 변경
songsunkook Feb 21, 2024
239ba06
remove: 미사용 코드 제거
songsunkook Feb 21, 2024
b30244b
refactor: 테스트 mocking 위해 Clock 사용하도록 수정
songsunkook Feb 21, 2024
b8788b4
test: 테스트컨테이너 mongoDB 추가
songsunkook Feb 23, 2024
f356d51
test: 셔틀 버스 조회 테스트 추가
songsunkook Feb 23, 2024
09ca173
feat: 시내버스 Open API 호출 로직 작성
songsunkook Feb 26, 2024
d821c64
feat: 방향 판단 로직 추가
songsunkook Feb 26, 2024
a4ad5b5
fix: 호출 예외 수정
songsunkook Feb 26, 2024
cff7afb
feat: json 파싱 로직 작성
songsunkook Feb 28, 2024
390de3e
feat: API 골격 작성
songsunkook Feb 14, 2024
f642284
feat: mongoDB 의존성 추가
songsunkook Feb 15, 2024
9300bab
feat: 응답 객체 작성
songsunkook Feb 15, 2024
b36daea
feat: 예외 추가
songsunkook Feb 15, 2024
2676ff4
feat: 엔티티 작성
songsunkook Feb 15, 2024
28b5028
feat: 미운행인 버스 필터링
songsunkook Feb 16, 2024
3fbedcc
feat: enum 추가
songsunkook Feb 19, 2024
00911ee
feat: 남은 시간 계산 로직 작성
songsunkook Feb 19, 2024
b87f0fa
feat: 가장 최근 버스까지 남은 시간 응답 구현
songsunkook Feb 20, 2024
84b9162
feat: 미운행 요일 제외 로직 추가
songsunkook Feb 20, 2024
8be80d4
feat: 버스 정거장 검증로직 적용 및 중복되는 시간 제외
songsunkook Feb 21, 2024
fcc7fbf
refactor: enum 객체를 사용하도록 수정
songsunkook Feb 21, 2024
9a16518
refactor: 등하교 방향 기준 탐색에서 정류장 탐색으로 로직 변경
songsunkook Feb 21, 2024
b76afe5
remove: 미사용 코드 제거
songsunkook Feb 21, 2024
d5f3daa
refactor: 테스트 mocking 위해 Clock 사용하도록 수정
songsunkook Feb 21, 2024
5f6bb59
test: 테스트컨테이너 mongoDB 추가
songsunkook Feb 23, 2024
b8bb74f
test: 셔틀 버스 조회 테스트 추가
songsunkook Feb 23, 2024
ea771da
docs: API 문서에 파라미터 정보 명시
songsunkook Feb 28, 2024
a524721
remove: 불필요 주석 제거
songsunkook Feb 28, 2024
1ce6343
refactor: 누락된 Transactional 추가
songsunkook Feb 28, 2024
42aac24
fix: mocking 변수 선언부 이동
songsunkook Feb 28, 2024
295fa27
remove: 불필요 주석 제거
songsunkook Feb 28, 2024
9b8c3f4
refactor: 도착 시각 패턴 불일치 시 예외처리
songsunkook Mar 6, 2024
b54cff9
refactor: 반복문을 stream으로 변환
songsunkook Mar 6, 2024
40f2d81
refactor: 엔티티 필드로 List 사용 시 미리 초기화
songsunkook Mar 6, 2024
0a23875
refactor: String 비교 시 NPE 예방
songsunkook Mar 6, 2024
cab5593
refactor: 불필요한 매핑 메서드 제거
songsunkook Mar 6, 2024
3bf468e
refactor: 변수 분리
songsunkook Mar 6, 2024
56d985c
rename: 변수명 수정
songsunkook Mar 6, 2024
33bc808
Merge branch 'feature/99-get-bus-shuttle-and-commuting' into feature/…
songsunkook Mar 6, 2024
52b773d
fix: 충돌 해결
songsunkook Mar 7, 2024
75cf95e
refactor: Builder 생성자 접근제어자 수정
songsunkook Mar 7, 2024
41791b1
refactor: enum 필드 간소화
songsunkook Mar 7, 2024
18b781a
Merge branch 'feature/99-get-bus-shuttle-and-commuting' into feature/…
songsunkook Mar 8, 2024
54e2d7c
fix: 충돌 해결
songsunkook Mar 8, 2024
2cc4198
feat: 버스번호 필터링
songsunkook Mar 10, 2024
f222aa7
feat: 시내버스 조회 정보를 레디스 캐시로 저장
songsunkook Mar 11, 2024
16d184e
feat: 버전 최신화 메서드 작성
songsunkook Mar 11, 2024
a8aa7d5
refactor: Pair를 사용하지 않도록 수정
songsunkook Mar 16, 2024
e38f974
merge: 충돌 해결
songsunkook Mar 16, 2024
edacb5e
feat: ApiType 추가
ImTotem Mar 22, 2024
f8a64bc
refactor: 주석 추가
ImTotem Mar 22, 2024
0c16d2d
refactor: record로 수정
ImTotem Mar 22, 2024
3d7f2c1
refactor: 시내버스 캐시 저장 정보 변경
ImTotem Mar 22, 2024
5edcb71
feat: 시내버스 버스 번호 반환 추가
ImTotem Mar 22, 2024
36a61a6
feat: 버스 타입별 로직 분기 추가
ImTotem Mar 22, 2024
c9a5023
refactor: 캐싱 정보 추가
ImTotem Mar 22, 2024
637ad94
refactor: 시내버스 남은 시간 계산 로직 추가
ImTotem Mar 22, 2024
268d91d
refactor: 응답 객체 수정
ImTotem Mar 22, 2024
d181251
refactor: 주석 추가
ImTotem Mar 22, 2024
56a8157
refactor: 응답 객체 null 체크 추가
ImTotem Mar 24, 2024
912edec
feat: test 작성
ImTotem Mar 24, 2024
358d8bf
refactor: 빈 배열 반환하도록 수정
ImTotem Mar 24, 2024
15b6f69
refactor: 도착시간순 정렬 추가
ImTotem Mar 24, 2024
fa21a8a
refactor: 시간 차 수정
ImTotem Mar 25, 2024
eec796d
refactor: null 필터링 수정
ImTotem Mar 25, 2024
5c205a7
refactor: updated_at 변경 로직 수정
ImTotem Mar 25, 2024
da80793
refactor: .log().all() 삭제
ImTotem Mar 27, 2024
a6d2db6
refactor: switch문 if문으로 변경
ImTotem Mar 27, 2024
9c0df9a
refactor: 복붙 문제 수정
ImTotem Mar 27, 2024
06fae29
style: 컨벤션 적용
ImTotem Mar 27, 2024
51fb0c7
rename: BusInfoCache -> BusCache 이름 변경
ImTotem Mar 27, 2024
bd22274
refactor: 주석 수정
ImTotem Mar 27, 2024
bace7e6
style: 컨벤션 적용
ImTotem Mar 28, 2024
902ad53
refactor: .log().all() 삭제
ImTotem Mar 28, 2024
937284e
refactor: 패키지 분리
ImTotem Mar 28, 2024
bdd7c01
refactor: 상수, 검증 로직 분리
ImTotem Mar 28, 2024
7d47fe4
refactor: 파일 이름 수정
ImTotem Mar 28, 2024
e34a799
refactor: Bus.java 삭제와 구조 변경
ImTotem Mar 28, 2024
f62ab37
refactor: 시내버스 남은 시간 - Redis 테스트 수정
ImTotem Mar 28, 2024
c47ff9d
refactor: 시내버스 남은 시간 - OpenApi 테스트 중간 작성
ImTotem Mar 29, 2024
627d3b0
refactor: 변수명 변경
ImTotem Mar 29, 2024
b8d4c9a
feat: 시내버스 남은 시간 - OpenApi 테스트 추
ImTotem Mar 29, 2024
4c1305e
refactor: 시내버스 테스트 수정
ImTotem Mar 30, 2024
6f04ed0
refactor: Constant 클래스 enum으로 변경
dradnats1012 Mar 31, 2024
38c03cb
refactor: 캐시 만료 시간 분리
dradnats1012 Mar 31, 2024
e510c6e
Revert "refactor: Constant 클래스 enum으로 변"
dradnats1012 Mar 31, 2024
523b435
Revert "Revert "refactor: Constant 클래스 enum으로 변""
dradnats1012 Mar 31, 2024
5b6a4c5
refactor: Constant 클래스 네이밍 변경
dradnats1012 Mar 31, 2024
5de1d70
feat: 버스 번호 필터링 추가
ImTotem Mar 31, 2024
607b739
Merge branch 'develop' into feature/99-get-bus-city
ImTotem Mar 31, 2024
0dd5e0d
chore: 충돌 해결
ImTotem Mar 31, 2024
10ff45f
style: 줄바꿈
ImTotem Mar 31, 2024
18ed4e2
refactor: 중괄호 제거
ImTotem Mar 31, 2024
4ebf08d
test: OPEN_API_KEY 추가
ImTotem Apr 1, 2024
25c228a
chore: 충돌 해결
ImTotem Apr 1, 2024
1a839ca
refactor: 리뷰 반영
ImTotem Apr 1, 2024
4fad023
feat : 인수인계용 커밋
dradnats1012 Apr 4, 2024
3e4949a
feat: 시외버스기능구현
Choi-JJunho Apr 4, 2024
bbfcb23
feat: 시외버스 리팩터링
Choi-JJunho Apr 4, 2024
d741ea7
chore: merge conflict
Choi-JJunho Apr 4, 2024
39db36d
test: 테스트 수정
Choi-JJunho Apr 4, 2024
80bb4a9
test: 테스트 수정
Choi-JJunho Apr 4, 2024
e5eaa51
test: 테스트 수정
Choi-JJunho Apr 4, 2024
27b27fa
test: 테스트 제거
Choi-JJunho Apr 5, 2024
e9bce64
refactor: 미사용 메소드 제거
Choi-JJunho Apr 5, 2024
d848476
refactor: 네이밍 수정
Choi-JJunho Apr 5, 2024
a9f64d9
refactor: 네이밍 수정
Choi-JJunho Apr 5, 2024
f5c3cfe
refactor: 네이밍 수정
Choi-JJunho Apr 5, 2024
ea596e4
refactor: ttl 선언방식 수정
Choi-JJunho Apr 5, 2024
69786cc
refactor: 불필요한 추상화 제거
Choi-JJunho Apr 5, 2024
41009aa
refactor: 네이밍 수정
Choi-JJunho Apr 5, 2024
0480178
style: 공백제거
Choi-JJunho Apr 5, 2024
b91f7bd
style: 코드 포맷팅
Choi-JJunho Apr 5, 2024
dd188a0
style: 미사용 메소드 제거
Choi-JJunho Apr 5, 2024
ed0a336
style: 미사용 클래스 제거
Choi-JJunho Apr 5, 2024
5d39461
refactor: API 사용 수정
Choi-JJunho Apr 5, 2024
62db49d
refactor: 클래스명 수정
Choi-JJunho Apr 5, 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 @@ -5,6 +5,8 @@
import org.springframework.web.bind.annotation.RequestParam;

import in.koreatech.koin.domain.bus.dto.BusRemainTimeResponse;
import in.koreatech.koin.domain.bus.model.enums.BusStation;
import in.koreatech.koin.domain.bus.model.enums.BusType;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
Expand All @@ -25,8 +27,8 @@ public interface BusApi {
@Operation(summary = "이번 / 다음 버스 남은 시간 조회")
@GetMapping("/bus")
ResponseEntity<BusRemainTimeResponse> getBusRemainTime(
@Parameter(description = "버스 종류(city, express, shuttle, commuting)") @RequestParam(value = "bus_type") String busType,
@Parameter(description = "koreatech, station, terminal") @RequestParam String depart,
@Parameter(description = "koreatech, station, terminal") @RequestParam String arrival
@Parameter(description = "버스 종류(city, express, shuttle, commuting)") @RequestParam(value = "bus_type") BusType busType,
@Parameter(description = "koreatech, station, terminal") @RequestParam BusStation depart,
@Parameter(description = "koreatech, station, terminal") @RequestParam BusStation arrival
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import org.springframework.web.bind.annotation.RestController;

import in.koreatech.koin.domain.bus.dto.BusRemainTimeResponse;
import in.koreatech.koin.domain.bus.model.enums.BusStation;
import in.koreatech.koin.domain.bus.model.enums.BusType;
import in.koreatech.koin.domain.bus.service.BusService;
import lombok.RequiredArgsConstructor;

Expand All @@ -17,9 +19,9 @@ public class BusController implements BusApi {

@GetMapping("/bus")
public ResponseEntity<BusRemainTimeResponse> getBusRemainTime(
@RequestParam(value = "bus_type") String busType,
@RequestParam String depart,
@RequestParam String arrival
@RequestParam(value = "bus_type") BusType busType,
@RequestParam BusStation depart,
@RequestParam BusStation arrival
) {
BusRemainTimeResponse busRemainTime = busService.getBusRemainTime(busType, depart, arrival);
return ResponseEntity.ok().body(busRemainTime);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package in.koreatech.koin.domain.bus.controller;

import java.util.Arrays;

import org.springframework.core.convert.converter.Converter;

import in.koreatech.koin.domain.bus.model.enums.BusStation;
import in.koreatech.koin.global.domain.upload.exception.ImageUploadDomainNotFoundException;

public class BusStationEnumConverter implements Converter<String, BusStation> {

@Override
public BusStation convert(String source) {
return Arrays.stream(BusStation.values())
.filter(it -> it.name().equalsIgnoreCase(source))
.findAny()
.orElseThrow(() -> ImageUploadDomainNotFoundException.withDetail("source: " + source));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package in.koreatech.koin.domain.bus.controller;

import java.util.Arrays;

import org.springframework.core.convert.converter.Converter;

import in.koreatech.koin.domain.bus.model.enums.BusType;
import in.koreatech.koin.global.domain.upload.exception.ImageUploadDomainNotFoundException;

public class BusTypeEnumConverter implements Converter<String, BusType> {

@Override
public BusType convert(String source) {
return Arrays.stream(BusType.values())
.filter(it -> it.name().equalsIgnoreCase(source))
.findAny()
.orElseThrow(() -> ImageUploadDomainNotFoundException.withDetail("source: " + source));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import com.fasterxml.jackson.databind.annotation.JsonNaming;

import in.koreatech.koin.domain.bus.model.BusRemainTime;
import in.koreatech.koin.domain.bus.model.city.CityBusRemainTime;
import in.koreatech.koin.domain.bus.model.enums.BusType;
import in.koreatech.koin.domain.bus.model.CityBusRemainTime;

@JsonNaming(SnakeCaseStrategy.class)
public record BusRemainTimeResponse(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package in.koreatech.koin.domain.bus.dto;

import java.time.LocalTime;

import in.koreatech.koin.domain.bus.model.BusRemainTime;
import lombok.Getter;

@Getter
public class ExpressBusRemainTime extends BusRemainTime {

private final String busType;

public ExpressBusRemainTime(LocalTime busArrivalTime, String busType) {
super(busArrivalTime);
this.busType = busType;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package in.koreatech.koin.domain.bus.dto;

import static java.time.format.DateTimeFormatter.ofPattern;

import java.time.LocalTime;

import in.koreatech.koin.domain.bus.model.express.ExpressBusCacheInfo;
import in.koreatech.koin.domain.bus.model.express.OpenApiExpressBusArrival;

public record ExpressBusTimeTable(
LocalTime departure,
LocalTime arrival,
int charge
) {

public static ExpressBusTimeTable from(OpenApiExpressBusArrival openApiExpressBusArrival) {
LocalTime departure = LocalTime.parse(openApiExpressBusArrival.depPlandTime(), ofPattern("yyyyMMddHHmm"));
LocalTime arrival = LocalTime.parse(openApiExpressBusArrival.arrPlandTime(), ofPattern("yyyyMMddHHmm"));
int charge = openApiExpressBusArrival.charge();
return new ExpressBusTimeTable(departure, arrival, charge);
}

public static ExpressBusTimeTable from(ExpressBusCacheInfo expressBusCacheInfo) {
LocalTime departure = expressBusCacheInfo.departureTime();
LocalTime arrival = expressBusCacheInfo.arrivalTime();
int charge = expressBusCacheInfo.charge();
return new ExpressBusTimeTable(departure, arrival, charge);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ public Long getRemainSeconds(Clock clock) {
return null;
}

public static BusRemainTime from(String arrivalTime) {
public static BusRemainTime of(String arrivalTime) {
return builder()
.busArrivalTime(toLocalTime(arrivalTime))
.build();
}

public static BusRemainTime from(Long remainTime, LocalTime updatedAt) {
public static BusRemainTime of(Long remainTime, LocalTime updatedAt) {
return builder()
.busArrivalTime(updatedAt.plusSeconds(remainTime))
.build();
Expand All @@ -59,11 +59,13 @@ public int hashCode() {

@Override
public boolean equals(Object o) {
if (this == o)
if (this == o) {
return true;
if (o == null || getClass() != o.getClass())
}
if (o == null || getClass() != o.getClass()) {
return false;
BusRemainTime that = (BusRemainTime)o;
}
BusRemainTime that = (BusRemainTime) o;
return Objects.equals(busArrivalTime, that.busArrivalTime);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package in.koreatech.koin.domain.bus.model;
package in.koreatech.koin.domain.bus.model.city;

import lombok.Builder;

Expand All @@ -13,10 +13,5 @@ public record CityBusArrival(
String routetp, // 노선 유형, "일반 버스"
String vehicletp // 차량 유형 (저상버스), "일반차량"
) {
public static CityBusArrival getEmpty(String nodeid) {
return builder()
.nodeid(nodeid)
.arrtime(-1L)
.build();
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package in.koreatech.koin.domain.bus.model.redis;
package in.koreatech.koin.domain.bus.model.city;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -21,30 +21,26 @@ public class CityBusCache {
@Id
private String id;

private final List<BusCache> busInfos = new ArrayList<>();
private final List<CityBusCacheInfo> busInfos = new ArrayList<>();

@TimeToLive(unit = TimeUnit.MINUTES)
private final Long expiration;

@Builder
private CityBusCache(String id, List<BusCache> busInfos, Long expiration) {
private CityBusCache(String id, List<CityBusCacheInfo> busInfos, Long expiration) {
this.id = id;
this.busInfos.addAll(busInfos);
this.expiration = expiration;
}

public static CityBusCache create(String nodeId, List<BusCache> busInfos) {
public static CityBusCache of(String nodeId, List<CityBusCacheInfo> busInfos) {
return CityBusCache.builder()
.id(nodeId)
.busInfos(busInfos)
.expiration(CACHE_EXPIRE_MINUTE)
.build();
}

public static long getCacheExpireMinute() {
return CACHE_EXPIRE_MINUTE;
}

public static long getCacheExpireSeconds() {
return CACHE_EXPIRE_SECONDS;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package in.koreatech.koin.domain.bus.model.city;

import java.time.LocalDateTime;
import java.time.LocalTime;

import in.koreatech.koin.domain.bus.model.BusRemainTime;

public record CityBusCacheInfo(
Long busNumber,
LocalTime remainTime
) {

/**
* <pre>
* 남은 시간 = (캐시 저장 시각 + 저장된 남은시간) - 현재시각
* {@link BusRemainTime#getRemainSeconds}에서는 남은 시간을 (저장된 남은시간 - 현재시각)으로 계산중
* 학교 버스는 도착 시간을 저장하고, 시내버스는 남은 시간만을 저장하므로
* Redis에 저장할때 (캐시 저장 시각 + 남은시간)으로 저장하여 통일시켜줌</pre>
* */
public static CityBusCacheInfo of(CityBusArrival busArrivalInfo, LocalDateTime updatedAt) {
return new CityBusCacheInfo(
busArrivalInfo.routeno(),
updatedAt.plusSeconds(busArrivalInfo.arrtime()).toLocalTime()
);
}
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
package in.koreatech.koin.domain.bus.model;
package in.koreatech.koin.domain.bus.model.city;

import java.time.LocalTime;
import java.util.Objects;

import in.koreatech.koin.domain.bus.model.redis.BusCache;
import in.koreatech.koin.domain.bus.model.BusRemainTime;
import lombok.Getter;
import lombok.experimental.SuperBuilder;

@Getter
@SuperBuilder
public class CityBusRemainTime extends BusRemainTime {

private final Long busNumber;

public CityBusRemainTime(Long busNumber, LocalTime busArrivalTime) {
super(busArrivalTime);
this.busNumber = busNumber;
}

public static CityBusRemainTime from(BusCache busInfo) {
public static CityBusRemainTime from(CityBusCacheInfo busInfo) {
return builder()
.busNumber(busInfo.busNumber())
.busArrivalTime(busInfo.remainTime())
Expand All @@ -31,11 +32,13 @@ public int hashCode() {

@Override
public boolean equals(Object o) {
if (this == o)
if (this == o) {
return true;
if (o == null || getClass() != o.getClass())
}
if (o == null || getClass() != o.getClass()) {
return false;
CityBusRemainTime that = (CityBusRemainTime)o;
}
CityBusRemainTime that = (CityBusRemainTime) o;
return Objects.equals(getBusArrivalTime(), that.getBusArrivalTime())
&& Objects.equals(busNumber, that.busNumber);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,10 @@

@Getter
public enum BusApiType {
CITY("cityBusOpenApiClient"),
EXPRESS("intercityBusOpenApiClient"),
CITY,
EXPRESS,
;

private final String value;

BusApiType(String bean) {
this.value = bean;
}

public static BusApiType from(BusType value) {
return Arrays.stream(values())
.filter(busApiType -> busApiType.toString().equalsIgnoreCase(value.toString()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import java.util.Arrays;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonCreator;

import in.koreatech.koin.domain.bus.exception.BusStationNotFoundException;
import lombok.Getter;

Expand All @@ -21,6 +23,7 @@ public enum BusStation {
this.node = node;
}

@JsonCreator
public static BusStation from(String busStationName) {
return Arrays.stream(values())
.filter(busStation -> busStation.name().equalsIgnoreCase(busStationName))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import java.util.Arrays;

import com.fasterxml.jackson.annotation.JsonCreator;

import in.koreatech.koin.domain.bus.exception.BusTypeNotFoundException;
import lombok.Getter;

Expand All @@ -13,6 +15,7 @@ public enum BusType {
COMMUTING,
;

@JsonCreator
public static BusType from(String busTypeName) {
return Arrays.stream(values())
.filter(busType -> busType.name().equalsIgnoreCase(busTypeName))
Expand Down
Loading
Loading