From bccc31f229d3c4487c5fb5a7ce47719cd6ca837b Mon Sep 17 00:00:00 2001 From: cheolwon1994 Date: Thu, 16 Nov 2023 17:31:17 +0900 Subject: [PATCH] =?UTF-8?q?TMDB=EB=A5=BC=20=ED=86=B5=ED=95=B4=20=EC=98=81?= =?UTF-8?q?=ED=99=94=EC=A0=95=EB=B3=B4=EB=A5=BC=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/core/dto/MovieApiResponse.java | 66 +++++++++++------- .../batch/core/service/MovieService.java | 67 +++++++++++++++++++ .../batch/infrastructure/MovieApiAdapter.java | 25 ++++++- .../properties/MovieProperties.java | 43 ++++++------ .../batch/infrastructure/utils/KmsUtils.java | 3 - .../batch/resource/MovieController.java | 27 +------- src/main/resources/application-dev.properties | 24 +++++-- .../resources/application-local.properties | 24 +++++-- src/main/resources/application.properties | 55 --------------- 9 files changed, 197 insertions(+), 137 deletions(-) create mode 100644 src/main/java/com/catcher/batch/core/service/MovieService.java diff --git a/src/main/java/com/catcher/batch/core/dto/MovieApiResponse.java b/src/main/java/com/catcher/batch/core/dto/MovieApiResponse.java index fc87968..46650e9 100644 --- a/src/main/java/com/catcher/batch/core/dto/MovieApiResponse.java +++ b/src/main/java/com/catcher/batch/core/dto/MovieApiResponse.java @@ -4,39 +4,55 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Getter; -import lombok.Setter; import java.util.List; -@Setter @Getter - -@CatcherJson(path = "boxOfficeResult") @JsonIgnoreProperties(ignoreUnknown = true) +@CatcherJson(path = "") public class MovieApiResponse { - @JsonProperty("dailyBoxOfficeList") - private List response; + @JsonProperty("dates") + private MovieNowPlayingDate movieNowPlayingDate; + + @Getter + private static class MovieNowPlayingDate { + @JsonProperty("maximum") + private String maximumDate; + + @JsonProperty("minimum") + private String minimumDate; + } + + @JsonProperty("results") + private List items; + @JsonIgnoreProperties(ignoreUnknown = true) @Getter - public static class MovieItemDTO { - private String rnum; - private String rank; - private String rankInten; - private String rankOldAndNew; - private String movieCd; - private String movieNm; - private String openDt; - private String salesAmt; - private String salesShare; - private String salesInten; - private String salesChange; - private String salesAcc; - private String audiCnt; - private String audiInten; - private String audiChange; - private String audiAcc; - private String scrnCnt; - private String showCnt; + public static class MovieItem { + @JsonProperty("id") + private int id; + @JsonProperty("original_title") + private String originalTitle; + @JsonProperty("poster_path") + private String posterPath; + @JsonProperty("release_date") + private String releaseDate; + @JsonProperty("title") + private String title; + @JsonProperty("overview") + private String overview; + @JsonProperty("poster_path") + public void setPosterPath(String posterPath) { + this.posterPath = "https://image.tmdb.org/t/p/w300" + posterPath; + } } + + @JsonProperty("total_pages") + @Getter + private int totalPages; + + @JsonProperty("total_results") + @Getter + private int totalResults; } diff --git a/src/main/java/com/catcher/batch/core/service/MovieService.java b/src/main/java/com/catcher/batch/core/service/MovieService.java new file mode 100644 index 0000000..fed2053 --- /dev/null +++ b/src/main/java/com/catcher/batch/core/service/MovieService.java @@ -0,0 +1,67 @@ +package com.catcher.batch.core.service; + +import com.catcher.batch.core.database.CatcherItemRepository; +import com.catcher.batch.core.database.CategoryRepository; +import com.catcher.batch.core.domain.entity.CatcherItem; +import com.catcher.batch.core.domain.entity.Category; +import com.catcher.batch.core.dto.MovieApiResponse; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.catcher.batch.common.utils.HashCodeGenerator.hashString; + +@Service +@RequiredArgsConstructor +public class MovieService { + private final CatcherItemRepository catcherItemRepository; + private final CategoryRepository categoryRepository; + public static final String CATEGORY_NAME = "movie"; + + @Transactional + public void batch(List movies){ + + Category category = categoryRepository.findByName(CATEGORY_NAME) + .orElseGet(()->categoryRepository.save(Category.create(CATEGORY_NAME))); + + Map itemHashKeyToDBItem = catcherItemRepository.findByCategory(category).stream() + .collect(Collectors.toMap(CatcherItem::getItemHashValue, Function.identity())); + + + //TODO: 썸네일URL, 개봉일 변경 여부 확인 로직 필요 + +// Map itemHashKeyToApiItem = movies.stream() +// .collect(Collectors.toMap( +// movieItem -> hashString(CATEGORY_NAME, String.valueOf(movieItem.getId())), +// movieItem -> movieItem +// )); + +// List catcherItems = itemHashKeyToApiItem.entrySet().stream() +// .map(entry -> { +// DateTimeFormatter dateFormatter = DateTimeFormatter.ISO_LOCAL_DATE; +// LocalDate localDate = LocalDate.parse(entry.getValue().getReleaseDate(), dateFormatter); +// +// ZonedDateTime releaseDate = localDate.atStartOfDay(ZoneId.systemDefault()); +// +// return CatcherItem.builder() +// .category(category) +// .title(entry.getValue().getTitle()) +// .itemHashValue(entry.getKey()) +// .thumbnailUrl(entry.getValue().getPosterPath()) +// .startAt(releaseDate) +// .build(); +// }) +// .collect(Collectors.toList()); +//DB에 추가 +// catcherItemRepository.saveAll(catcherItems); + } +} diff --git a/src/main/java/com/catcher/batch/infrastructure/MovieApiAdapter.java b/src/main/java/com/catcher/batch/infrastructure/MovieApiAdapter.java index 61d2cac..1c7cba3 100644 --- a/src/main/java/com/catcher/batch/infrastructure/MovieApiAdapter.java +++ b/src/main/java/com/catcher/batch/infrastructure/MovieApiAdapter.java @@ -3,19 +3,42 @@ import com.catcher.batch.common.service.CatcherFeignService; import com.catcher.batch.core.dto.MovieApiResponse; import com.catcher.batch.core.service.ApiService; +import com.catcher.batch.core.service.MovieService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; + +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.stream.IntStream; @Component @RequiredArgsConstructor public class MovieApiAdapter implements ApiService { private final CatcherFeignService catcherFeignService; + private final MovieService movieService; @Override public MovieApiResponse getData() { HashMap params = new HashMap<>(); - return catcherFeignService.parseService(params, MovieApiResponse.class); + MovieApiResponse response = catcherFeignService.parseService(params, MovieApiResponse.class); + + List movieList = response.getItems(); + int totalPages = response.getTotalPages(); + + IntStream.rangeClosed(2, totalPages) + .parallel() + .forEach(page -> { + params.put("page", page); + MovieApiResponse extraResponse = catcherFeignService.parseService(params, MovieApiResponse.class); + movieList.addAll(extraResponse.getItems()); + }); + + movieService.batch(movieList); + + return response; } + } diff --git a/src/main/java/com/catcher/batch/infrastructure/properties/MovieProperties.java b/src/main/java/com/catcher/batch/infrastructure/properties/MovieProperties.java index f5dc69b..11e6a36 100644 --- a/src/main/java/com/catcher/batch/infrastructure/properties/MovieProperties.java +++ b/src/main/java/com/catcher/batch/infrastructure/properties/MovieProperties.java @@ -1,52 +1,57 @@ package com.catcher.batch.infrastructure.properties; import com.catcher.batch.core.dto.MovieApiResponse; +import com.catcher.batch.core.properties.HeaderSupport; import com.catcher.batch.core.properties.PropertyBase; import com.catcher.batch.infrastructure.utils.KmsUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; +import java.util.Map; @Component -public class MovieProperties extends PropertyBase { +public class MovieProperties extends PropertyBase implements HeaderSupport { @Value("${movie.key}") private String serviceKey; - private String targetDate; - public MovieProperties(@Value("${movie.baseUrl}") String endPoint) { super(endPoint); } @Override public boolean support(Class clazz) { - if (clazz.isAssignableFrom(MovieApiResponse.class)) { - initCurrentDate(); - return true; - } - return false; + return clazz.isAssignableFrom(MovieApiResponse.class); } @Override public URI getURI() { - return UriComponentsBuilder + UriComponentsBuilder uriBuilder = UriComponentsBuilder .fromUriString(this.getEndPoint()) - .queryParam("key", KmsUtils.decrypt(serviceKey)) - .queryParam("targetDt", targetDate) + .queryParam("language", "ko-KR"); + + return this.addParams(uriBuilder) .build().toUri(); } - private void initCurrentDate() { - ZonedDateTime currentDateTime = ZonedDateTime.now(); - ZonedDateTime previousDate = currentDateTime.minus(1, ChronoUnit.DAYS); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + private UriComponentsBuilder addParams(UriComponentsBuilder uriComponentsBuilder ) { + Map params = getParams(); + for (String key : params.keySet()) { + uriComponentsBuilder + .queryParam(key, params.get(key)); + } + return uriComponentsBuilder; + } - targetDate = previousDate.format(formatter); + @Override + public HttpHeaders addHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", "Bearer " + KmsUtils.decrypt(serviceKey)); + headers.setContentType(MediaType.APPLICATION_JSON); + return headers; } } diff --git a/src/main/java/com/catcher/batch/infrastructure/utils/KmsUtils.java b/src/main/java/com/catcher/batch/infrastructure/utils/KmsUtils.java index cc00443..a517209 100644 --- a/src/main/java/com/catcher/batch/infrastructure/utils/KmsUtils.java +++ b/src/main/java/com/catcher/batch/infrastructure/utils/KmsUtils.java @@ -26,9 +26,6 @@ public class KmsUtils { @Value("${aws.kms.keyId}") private static String KEY_ID; -// @Value("${spring.profiles.active}") -// private static String PROFILE; - public static String encrypt(String text) { try { AWSKMS kmsClient = AWSKMSClientBuilder.standard() diff --git a/src/main/java/com/catcher/batch/resource/MovieController.java b/src/main/java/com/catcher/batch/resource/MovieController.java index d1ef848..c507ddc 100644 --- a/src/main/java/com/catcher/batch/resource/MovieController.java +++ b/src/main/java/com/catcher/batch/resource/MovieController.java @@ -2,47 +2,22 @@ import com.catcher.batch.common.response.CommonResponse; import com.catcher.batch.core.dto.MovieApiResponse; -import com.catcher.batch.common.service.CatcherFeignService; -import com.catcher.batch.common.service.CatcherJsonService; import com.catcher.batch.core.service.ApiService; import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; - -import java.util.HashMap; @RequiredArgsConstructor @RestController @RequestMapping("/movie") public class MovieController { - private final CatcherJsonService catcherJsonService; - private final CatcherFeignService catcherFeignService; private final ApiService apiService; - @GetMapping("/webclient-batch") - public Mono> getMovieDataByWebClient() { - HashMap params = new HashMap<>(); - Mono stringMono = catcherJsonService.parseService(params, MovieApiResponse.class); - - return stringMono - .map(ResponseEntity::ok) - .defaultIfEmpty(ResponseEntity.notFound().build()); - } - - @GetMapping("/feign-batch") - public CommonResponse getMovieDataByFeign() { - HashMap params = new HashMap<>(); - MovieApiResponse movieResponse = catcherFeignService.parseService(params, MovieApiResponse.class); - - return CommonResponse.success(200, movieResponse); - } - @GetMapping("/batch") public CommonResponse movieData() { MovieApiResponse response = (MovieApiResponse) apiService.getData(); + return CommonResponse.success(200, response); } } \ No newline at end of file diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 568f206..2979e1f 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -17,9 +17,21 @@ ssh.local-port=3306 aws.kms.keyId=5d1c783d-6c8e-4661-a8ed-a12654aac8c3 aws.kms.encryptionAlgorithm=SYMMETRIC_DEFAULT -## movie api -movie.baseUrl=http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json -movie.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AEdAQDVPqdOhpfNbxFhaX/rAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMnYW/M8ND+IPKIhQ8AgEQgDv37SLjLvGtPBohoi8i1Z+SFBaopteVK3e+36yH3RB44h/Ik0ZyxE69hlJ0T8SHnTLWzLKsk5TKP0uwFA== +## festival api +festival.baseUrl=http://api.data.go.kr/openapi/tn_pubr_public_cltur_fstvl_api +festival.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AGEXII6Ufa8dIEGD6MQNyM9AAAAujCBtwYJKoZIhvcNAQcGoIGpMIGmAgEAMIGgBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEphbmyNQTiCTHtF/gIBEIBz8Fj7Ij/xk+O5hXWQfMOsIfc6uAYrvF2Xew+p0qLkX3DO0Plzjt4EMzaUP504RIMr7s+Yhx2y2Lq5SZ9I/cZ4swMYIOwj8FXDLeFy/k3dfwFdnBRh1kmvIDiMSg5kj4kgk05nzHyJ5KloYXXngp/ZQzsdpA== + +## camping api +camping.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AF5N6HoIJmz3ef5mw7h81sOAAAAujCBtwYJKoZIhvcNAQcGoIGpMIGmAgEAMIGgBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDDvX80CMep9JqAHwVgIBEIBzD41zp/0NHhhvJ4nFvikmteZp501dy09Q/RjJ631ggAcTPaskdGKn6+qwvQVLw3vWesWOSycm3NiMeatVHUwSBZ4AKFGxfhHIsinf1Hyl2RdKjbbeYLYTtTiJY8jh4kZrXUPn6zQ4/vVr75WcIi9eny6lhw== +camping.baseUrl=http://apis.data.go.kr/B551011/GoCamping/basedList + +## movie tmdb api +movie.baseUrl=https://api.themoviedb.org/3/movie/now_playing +movie.key=AQICAHgxTvGwZVD/2MLMvR9/01Wy8IeL4nGHGGgc5XMYIhkQ2gHcHnoKktvPjhKq4S/u+OZcAAABOjCCATYGCSqGSIb3DQEHBqCCAScwggEjAgEAMIIBHAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAwBkI+xMEv8XYOM0pUCARCAge6UDyvSeG2ksvB7Yk7bdfxbcPp2PyCCy5L7XhQ43Wj9adChP8Gm4pzfLjwvj/akTcsN/7GYGsCZdl8VPKHbsv1AsS2rKVmydwpwye/yr693mjVUKU8WznLVnMqTrNxP3UgSsrqFyJ335hc5t+DBH7IQDnMMhy37e6l/D5o33NArwxDkzJF/rhLUdvIgoQ15ruZ1NFBXxgh32OP2lRdZA61E48qLj/CvNcqxBDgwr4jpyy2p0vSZ/mVaRsOUxawoTx2bUeJt6G5Df93MFKeSZ4ytzf4NNdOwA4sgif5YMUnC2bui6V7cANH0WMpfbH4k + +## restaurant api +restaurant.key=AQICAHgxTvGwZVD/2MLMvR9/01Wy8IeL4nGHGGgc5XMYIhkQ2gFwIra357LjWgWTfXdGHOTMAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM0t0Y5XX4gbI1BsAnAgEQgDtbOGiG1iS5qgxCIfnvMf/pEad1kQAOJrPoc39lLxiTk/Vw+bw/DqE/Sdmj/ibi3fakUgdXhdK111insQ== +restaurant.baseUrl=https://dapi.kakao.com/v2/local/search/category #update the schema with the given values. spring.jpa.hibernate.ddl-auto=update @@ -31,4 +43,8 @@ spring.jpa.properties.hibernate.show-sql=true logging.level.org.hibernate.type.descriptor.sql=DEBUG logging.level.org.hibernate.SQL=DEBUG -spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MariaDBDialect \ No newline at end of file +spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MariaDBDialect + +## swagger - openAPI +springdoc.packagesToScan=com.catcher.batch.resource +springdoc.pathsToMatch=/** diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties index 568f206..2979e1f 100644 --- a/src/main/resources/application-local.properties +++ b/src/main/resources/application-local.properties @@ -17,9 +17,21 @@ ssh.local-port=3306 aws.kms.keyId=5d1c783d-6c8e-4661-a8ed-a12654aac8c3 aws.kms.encryptionAlgorithm=SYMMETRIC_DEFAULT -## movie api -movie.baseUrl=http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json -movie.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AEdAQDVPqdOhpfNbxFhaX/rAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMnYW/M8ND+IPKIhQ8AgEQgDv37SLjLvGtPBohoi8i1Z+SFBaopteVK3e+36yH3RB44h/Ik0ZyxE69hlJ0T8SHnTLWzLKsk5TKP0uwFA== +## festival api +festival.baseUrl=http://api.data.go.kr/openapi/tn_pubr_public_cltur_fstvl_api +festival.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AGEXII6Ufa8dIEGD6MQNyM9AAAAujCBtwYJKoZIhvcNAQcGoIGpMIGmAgEAMIGgBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEphbmyNQTiCTHtF/gIBEIBz8Fj7Ij/xk+O5hXWQfMOsIfc6uAYrvF2Xew+p0qLkX3DO0Plzjt4EMzaUP504RIMr7s+Yhx2y2Lq5SZ9I/cZ4swMYIOwj8FXDLeFy/k3dfwFdnBRh1kmvIDiMSg5kj4kgk05nzHyJ5KloYXXngp/ZQzsdpA== + +## camping api +camping.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AF5N6HoIJmz3ef5mw7h81sOAAAAujCBtwYJKoZIhvcNAQcGoIGpMIGmAgEAMIGgBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDDvX80CMep9JqAHwVgIBEIBzD41zp/0NHhhvJ4nFvikmteZp501dy09Q/RjJ631ggAcTPaskdGKn6+qwvQVLw3vWesWOSycm3NiMeatVHUwSBZ4AKFGxfhHIsinf1Hyl2RdKjbbeYLYTtTiJY8jh4kZrXUPn6zQ4/vVr75WcIi9eny6lhw== +camping.baseUrl=http://apis.data.go.kr/B551011/GoCamping/basedList + +## movie tmdb api +movie.baseUrl=https://api.themoviedb.org/3/movie/now_playing +movie.key=AQICAHgxTvGwZVD/2MLMvR9/01Wy8IeL4nGHGGgc5XMYIhkQ2gHcHnoKktvPjhKq4S/u+OZcAAABOjCCATYGCSqGSIb3DQEHBqCCAScwggEjAgEAMIIBHAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAwBkI+xMEv8XYOM0pUCARCAge6UDyvSeG2ksvB7Yk7bdfxbcPp2PyCCy5L7XhQ43Wj9adChP8Gm4pzfLjwvj/akTcsN/7GYGsCZdl8VPKHbsv1AsS2rKVmydwpwye/yr693mjVUKU8WznLVnMqTrNxP3UgSsrqFyJ335hc5t+DBH7IQDnMMhy37e6l/D5o33NArwxDkzJF/rhLUdvIgoQ15ruZ1NFBXxgh32OP2lRdZA61E48qLj/CvNcqxBDgwr4jpyy2p0vSZ/mVaRsOUxawoTx2bUeJt6G5Df93MFKeSZ4ytzf4NNdOwA4sgif5YMUnC2bui6V7cANH0WMpfbH4k + +## restaurant api +restaurant.key=AQICAHgxTvGwZVD/2MLMvR9/01Wy8IeL4nGHGGgc5XMYIhkQ2gFwIra357LjWgWTfXdGHOTMAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM0t0Y5XX4gbI1BsAnAgEQgDtbOGiG1iS5qgxCIfnvMf/pEad1kQAOJrPoc39lLxiTk/Vw+bw/DqE/Sdmj/ibi3fakUgdXhdK111insQ== +restaurant.baseUrl=https://dapi.kakao.com/v2/local/search/category #update the schema with the given values. spring.jpa.hibernate.ddl-auto=update @@ -31,4 +43,8 @@ spring.jpa.properties.hibernate.show-sql=true logging.level.org.hibernate.type.descriptor.sql=DEBUG logging.level.org.hibernate.SQL=DEBUG -spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MariaDBDialect \ No newline at end of file +spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MariaDBDialect + +## swagger - openAPI +springdoc.packagesToScan=com.catcher.batch.resource +springdoc.pathsToMatch=/** diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 81344c2..f88e6a1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,56 +1 @@ -spring.profiles.active=default - spring.datasource.driver-class-name=org.mariadb.jdbc.Driver - -## spring datasource -spring.datasource.url=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AEZqo9kRIKYisZIm0Z0xpuOAAAAiDCBhQYJKoZIhvcNAQcGoHgwdgIBADBxBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDMoZI5smgDwlG+0kBgIBEIBE1VE7k3neYIx1Pkx6YqUrTf7LEBAxddoUbZVTZxC7HQJpNJKNlwMoaXXyHdPTkBW15dJiCw5jUzuY9CRV7o/vpogIg9Q= -spring.datasource.username=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AFDjW/RUZSn5wxJhd1XeZOgAAAAYzBhBgkqhkiG9w0BBwagVDBSAgEAME0GCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM0eyz4OI2Vkkc/uTUAgEQgCAXcQUOKDsI26jXFzQfba7Cv2EHO51213zwOT0hzc0SnQ== -spring.datasource.password=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AGiM8q8PoYW89muC9gXzZ5GAAAAaTBnBgkqhkiG9w0BBwagWjBYAgEAMFMGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMxGIq7N/hB2XW5NODAgEQgCZeBBgSs9LrXXuCsMAHE53Rsg1WGKfDzjMaAoFRDjEKoGTT9uFThQ== - -## ssh -ssh.host=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AGc1mlusKIbT/FmW65+2rl4AAAAbDBqBgkqhkiG9w0BBwagXTBbAgEAMFYGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMvijHTTZUUuGjjF4jAgEQgCmKq00a3J3yAUkdljTk342nBjYaeLr5BQeJ2kIISM3P/WPMXKQB/0WzlQ== -ssh.username=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AE26DRJsDEHLdAnA5QIkHfYAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMd4p4zWU1dg+tbLAKAgEQgCNWOoyj2Ual/lQaCe7yz2JkY6TXbUR25FO6SkPkYaAncbgkcA== -ssh.password=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AFNH5Ud+NVY/FVqOa99UOeMAAAAaTBnBgkqhkiG9w0BBwagWjBYAgEAMFMGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsRopSwW2oDrqOTNrAgEQgCacSRENpF2QbZBfiyN/mlQlY21Qd6PSHef54Rg29FfM5rhWlEuFfg== -ssh.datasource.origin=AQICAHgxTvGwZVD/2MLMvR9/01Wy8IeL4nGHGGgc5XMYIhkQ2gFoX7QJe7YHVfT6QKf90FzWAAAAojCBnwYJKoZIhvcNAQcGoIGRMIGOAgEAMIGIBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDHCkPDcljb9kXkBq9AIBEIBbyA8xiSyWUYw6KV4WGF4BrlT/LcAt4JrHB/C038I5EveqJ82NhmKU4HnNSDWMTWZP/g8Es1wd2jcGFihOYWbJ664V78jCoJ7X1sVh6F+FrBo7xx6jByc6sVHFlg== -ssh.port=22 -ssh.local-port=3306 - -## kms -aws.kms.keyId=5d1c783d-6c8e-4661-a8ed-a12654aac8c3 -aws.kms.encryptionAlgorithm=SYMMETRIC_DEFAULT - -## movie api -movie.baseUrl=http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json -movie.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AEdAQDVPqdOhpfNbxFhaX/rAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMnYW/M8ND+IPKIhQ8AgEQgDv37SLjLvGtPBohoi8i1Z+SFBaopteVK3e+36yH3RB44h/Ik0ZyxE69hlJ0T8SHnTLWzLKsk5TKP0uwFA== - -## festival api -festival.baseUrl=http://api.data.go.kr/openapi/tn_pubr_public_cltur_fstvl_api -festival.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AGEXII6Ufa8dIEGD6MQNyM9AAAAujCBtwYJKoZIhvcNAQcGoIGpMIGmAgEAMIGgBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEphbmyNQTiCTHtF/gIBEIBz8Fj7Ij/xk+O5hXWQfMOsIfc6uAYrvF2Xew+p0qLkX3DO0Plzjt4EMzaUP504RIMr7s+Yhx2y2Lq5SZ9I/cZ4swMYIOwj8FXDLeFy/k3dfwFdnBRh1kmvIDiMSg5kj4kgk05nzHyJ5KloYXXngp/ZQzsdpA== - -## camping api -camping.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AF5N6HoIJmz3ef5mw7h81sOAAAAujCBtwYJKoZIhvcNAQcGoIGpMIGmAgEAMIGgBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDDvX80CMep9JqAHwVgIBEIBzD41zp/0NHhhvJ4nFvikmteZp501dy09Q/RjJ631ggAcTPaskdGKn6+qwvQVLw3vWesWOSycm3NiMeatVHUwSBZ4AKFGxfhHIsinf1Hyl2RdKjbbeYLYTtTiJY8jh4kZrXUPn6zQ4/vVr75WcIi9eny6lhw== -camping.baseUrl=http://apis.data.go.kr/B551011/GoCamping/basedList - -## movie api tmdb -movie.tmdb.baseUrl=https://api.themoviedb.org/3/discover/movie -movie.tmdb.key=AQICAHg2j0pl3GguoQNkjcreuBPYJqI3OPeLEOelKIkMSzn01AELxjw41yAPSTnmp5zrZNWQAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMHCIOEwhqioIojbKiAgEQgDsmsdMzlgQamoyDnGglRz5A2BNtMvn/4BIVT75wmxUz82NvOoh+Tno236+8lcoAoYdWzfgFVk7cAMNZdw== - -## restaurant api -restaurant.key=AQICAHgxTvGwZVD/2MLMvR9/01Wy8IeL4nGHGGgc5XMYIhkQ2gFwIra357LjWgWTfXdGHOTMAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM0t0Y5XX4gbI1BsAnAgEQgDtbOGiG1iS5qgxCIfnvMf/pEad1kQAOJrPoc39lLxiTk/Vw+bw/DqE/Sdmj/ibi3fakUgdXhdK111insQ== -restaurant.baseUrl=https://dapi.kakao.com/v2/local/search/category - -#update the schema with the given values. -spring.jpa.hibernate.ddl-auto=update -#To beautify or pretty print the SQL -spring.jpa.properties.hibernate.format_sql=true -#show sql -spring.jpa.properties.hibernate.show-sql=true -#show parameter binding -logging.level.org.hibernate.type.descriptor.sql=DEBUG - -logging.level.org.hibernate.SQL=DEBUG -spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MariaDBDialect - -## swagger - openAPI -springdoc.packagesToScan=com.catcher.batch.resource -springdoc.pathsToMatch=/**