From d17c625572c755473bba4060e287a626ee6c1c26 Mon Sep 17 00:00:00 2001 From: Dwisgolmog Date: Sat, 15 Feb 2025 00:33:33 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=EA=B8=B0=EB=B3=B8=20=EC=85=8B?= =?UTF-8?q?=ED=8C=85=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .gradle/8.12.1/checksums/checksums.lock | Bin 0 -> 17 bytes .gradle/8.12.1/checksums/md5-checksums.bin | Bin 0 -> 18747 bytes .gradle/8.12.1/checksums/sha1-checksums.bin | Bin 0 -> 18983 bytes .../executionHistory/executionHistory.bin | Bin 0 -> 75538 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/8.12.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.12.1/fileHashes/fileHashes.bin | Bin 0 -> 19497 bytes .gradle/8.12.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../8.12.1/fileHashes/resourceHashesCache.bin | Bin 0 -> 19211 bytes .gradle/8.12.1/gc.properties | 0 .gradle/8.2/checksums/checksums.lock | Bin 0 -> 17 bytes .gradle/8.2/checksums/md5-checksums.bin | Bin 0 -> 20297 bytes .gradle/8.2/checksums/sha1-checksums.bin | Bin 0 -> 23897 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../8.2/dependencies-accessors/gc.properties | 0 .gradle/8.2/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.2/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .gradle/8.2/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 18911 bytes .gradle/file-system.probe | Bin 0 -> 8 bytes .gradle/vcs-1/gc.properties | 0 .idea/.gitignore | 8 + .idea/.name | 1 + .idea/compiler.xml | 15 + .idea/gradle.xml | 15 + .idea/jarRepositories.xml | 20 + .idea/misc.xml | 10 + .idea/modules.xml | 8 + .idea/modules/assignment.main.iml | 8 + .idea/vcs.xml | 6 + HELP.md | 26 + build.gradle | 41 ++ .../assignment/AssignmentApplication.class | Bin 0 -> 757 bytes .../controller/HelloController.class | Bin 0 -> 625 bytes build/reports/problems/problems-report.html | 663 ++++++++++++++++++ build/resources/main/application.properties | 2 + .../stash-dir/HelloController.class.uniqueId0 | Bin 0 -> 1086 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 27173 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 252 +++++++ gradlew.bat | 94 +++ settings.gradle | 1 + .../assignment/AssignmentApplication.java | 13 + .../controller/HelloController.java | 14 + src/main/resources/application.properties | 2 + .../AssignmentApplicationTests.java | 13 + 50 files changed, 1222 insertions(+) create mode 100644 .gitignore create mode 100644 .gradle/8.12.1/checksums/checksums.lock create mode 100644 .gradle/8.12.1/checksums/md5-checksums.bin create mode 100644 .gradle/8.12.1/checksums/sha1-checksums.bin create mode 100644 .gradle/8.12.1/executionHistory/executionHistory.bin create mode 100644 .gradle/8.12.1/executionHistory/executionHistory.lock create mode 100644 .gradle/8.12.1/fileChanges/last-build.bin create mode 100644 .gradle/8.12.1/fileHashes/fileHashes.bin create mode 100644 .gradle/8.12.1/fileHashes/fileHashes.lock create mode 100644 .gradle/8.12.1/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/8.12.1/gc.properties create mode 100644 .gradle/8.2/checksums/checksums.lock create mode 100644 .gradle/8.2/checksums/md5-checksums.bin create mode 100644 .gradle/8.2/checksums/sha1-checksums.bin create mode 100644 .gradle/8.2/dependencies-accessors/dependencies-accessors.lock create mode 100644 .gradle/8.2/dependencies-accessors/gc.properties create mode 100644 .gradle/8.2/fileChanges/last-build.bin create mode 100644 .gradle/8.2/fileHashes/fileHashes.lock create mode 100644 .gradle/8.2/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/file-system.probe create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/modules/assignment.main.iml create mode 100644 .idea/vcs.xml create mode 100644 HELP.md create mode 100644 build.gradle create mode 100644 build/classes/java/main/ktb/back/assignment/AssignmentApplication.class create mode 100644 build/classes/java/main/ktb/back/assignment/controller/HelloController.class create mode 100644 build/reports/problems/problems-report.html create mode 100644 build/resources/main/application.properties create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/HelloController.class.uniqueId0 create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/ktb/back/assignment/AssignmentApplication.java create mode 100644 src/main/java/ktb/back/assignment/controller/HelloController.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/ktb/back/assignment/AssignmentApplicationTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53e3609 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +application-db.properties \ No newline at end of file diff --git a/.gradle/8.12.1/checksums/checksums.lock b/.gradle/8.12.1/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..94788bd9dc6109930b9cc29dfd6d9765238897c0 GIT binary patch literal 17 UcmZSnP;G@KlLj;gs=%j?GDS+7H;IW^zb@~O{(3tQ`cg_?J0 zx%QO#l5)n100IagfB*srAbA``N8x5+#Xh? zY4-eid1(vRnuR4R1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|OECPFsK~{)i>>JIQ z#Y(@XmF5|X<-^Uk@cWao9P!%gP~Q(GB5RW)59eGmpHX?bJ>Jt)m+qB$tIB78nhK*W z`UR0!kE=X4=gswrmJ*BH-=lJuJ+gW1US)^e?^n6|=rhxggZgE;zeeSr;quo0>a4&lp7~l7eNZV|$3)9w%We%WE3gG>%TJVsr)Rd>&U!v|Tzkr44itE+%5FAx&81}PifCCw|Eu+HC)AES8d>EII@^7TyVls)Xfkxi vDNguA{9nQy9?d>s{RVsSd9&l%RN+);erU(rbAfGFMXNjTXD;XGb(z+0yd?(0 literal 0 HcmV?d00001 diff --git a/.gradle/8.12.1/executionHistory/executionHistory.bin b/.gradle/8.12.1/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..8f5b1fe00c44b409e915a928942ab51b9b9f8d11 GIT binary patch literal 75538 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.12.1/executionHistory/executionHistory.lock b/.gradle/8.12.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..6d37edb1203fd86d49043f25ffe2d0ed0aa1c8b8 GIT binary patch literal 17 UcmZQRtY&w*eOJr_1_)3C05(wsnE(I) literal 0 HcmV?d00001 diff --git a/.gradle/8.12.1/fileChanges/last-build.bin b/.gradle/8.12.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/8.12.1/fileHashes/fileHashes.bin b/.gradle/8.12.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..a11d48d6ca9f084cba4de0b6d0cabffb0993e5d8 GIT binary patch literal 19497 zcmeI(drVVT00!{W+A?uPFswi#L8r6xQ7YOBW1UDDW|a+m#p>8*<^zE)Ea9P51YD+0 zj0*t_s3R#;e1HlX#Sme`Ak*kD7~G;FmEa;P5FkJ)4+Fyk_nz5$x5R%n-%W1s&3F5q zbI&jLzxIX`;^Q&KZ{)=$e{qU42tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00iC? zfpv5tQ@F+WD8=I^?j}M4Wc1{nqb;$z?Rt4UcX@>?`~9Fm<#werdd(&-k66O;Vwc{F z%cOS{d_IZgWg$ZqwVBadx%|@`EUz28oL(OJG>;!&%kq0M{TtS|nr?Bq{uImar{*8` z8c9mw$Jxa4uC9~{>2157A18t3Hs#+Hrl6s z*L=FZsM*k{F^Q9wSB^KN9%0kDIgE3J4R>-Q`jVFXR`EnK-FViM-Y#u;4J307vh-CO zL*f75XwzN2nf8ax+DA4Trd>{7Nar}1edNi^iH5IeF+IMt@{zCa{$p;-i~KdUN3$k% z>JrC>r0QI~up!R34{K`7BYQ4Xs=s*rkiIYAFb8RUENrM&E5-BkJolBX*xGB{T$SL| zsHp!;*yy}C`lsc>wNIkdx58)S3^q76q<71!gpHct&y3C=OsI)3Kjghmp>=g^5NXJO zu(4dGv$w`=`72PX^zFH3l{+u^A#6xu{j;*zYzk@YE<0RlDy05|moCjbBd literal 0 HcmV?d00001 diff --git a/.gradle/8.12.1/fileHashes/resourceHashesCache.bin b/.gradle/8.12.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..d79658a2237d9d9d9249347227c8d4121e9934ab GIT binary patch literal 19211 zcmeI(`Ad^=0LSqy$?{59TC?*93$r;VEVP+nhfcR5uSz0Q=UkdXmX$8;BC`uE)U-TS zYAg-Y=rFM~k4%{>U1e#RrHzP)4vYpWT9Z9rqQ3nD#b>bX;k^&fv%T1FW4% zWBs~0{5r%D1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00RGuz((T-u{3=cuIr?U z1KSi9%iY>|;EAl|z|;fEN!J8kcWKMtBVf)WApO~=!@cqE3%ShxBkBFwm-p>I zUbKzr8qz-pW@mN1uFhckD$-d;18v1$r9Py)@wfRcjT=m3_HxqQLz>DJx@$emb$65Q zB^*zZIPD5$`U}!m`*2h%1I~>yJ&*LD?MtF<4LOCTE|rlUZXbKvOxQNg^mNiw=R`&% zO|3u6^m(L{XBKOch3PdsLI45~fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izzz`r6OG`>+s<`9ApGcxK}N4S#$KD^^;l3e;D3b@!O*KP8H_=TurLmntmtB-tq)C#ZH5?IQ zQPiAlW!JjpQVwOcHmZ>{xfDWM_I-PvhqLqgZ~xo#d(N46-t(R3^FGh>ndiLo$Gksh ziZasuh#U2}8GJs4GcW)KzyKHk17H9QfB`T72EYIq00UqE41fVJ00zJS7ytuc;QwM^ z3B8a(Xfa0C>deXDwG?H;r%y(0a`DMJIX4=8N{L61{}0k~*5)NfH8rCT+`c9GcI#gQ zX1955MY*V*?@?_!8EtuNq$x4 zZa(_>=}45jhLOBl@Z4&KxpWH3#lXSFLt2ZWfsZbdfnu99R7F==LID1cE1#x z|BcoLl)L7VTrI$Nuy01>3X}_@KjpQxyubE7GQ-!YC%MM#{NSYK+1F7n-bixp{w~*` zl4LQ;-MUGxo3g7*((5imxv-Yx0uw6Qjz6pp8k}>y7d|CZ|y@oKEt&7ZNS^UoL!z`@bUj{DC*huX7`Q z!u=1BT$J*dm(bRD4dt#HBoC3!GYtN2P9w@i<|L1J-gD4bw|5-MU1CWdwQjXyy@m|$ z2e&|yuU6kic;I%Q8F7pF|J-ncN+h1A}{3oyWQc^eVQvwn>&m< zH4rg3h3-i=^)vKAh1jN6UL8}Qb8JG)VXa3;KdeH82tOsyV)iJ}Hp&u-+CLB!G#{Q#vio=sFFc2$il(HJhZTbZ0L*Q5(Bm|1z@r_;5n*u# zoS#^5(nfsLw5r8+!*MN$u?L&jxUfyho1EY7?_=?UokLv<8Y2i-FE|yj3F-3WaKyWUrp3h}Hw(X6~DvWZ;HTpzc=GHORrHL8zeq#33N?au&)M67k?Njt~DzXaB za&Fw$nbc5E6FXNu^-n^x`jTDe$rZk>jz%$0b~Im=b!Qw!V}$o0!k96j@|_3loLbOw z$?TVqo3jFXGDGRz!OSX%-YrbCVM>iuh|~G!rVVJj_Vbw7oS}}bva5I<^gGk|3i_Zz zv^eFjQMB*XkzEPdv8}4c9ua}cet=r^flXY#u#&GlM2VBM{|wn)Ca*z6@Ki+TZf6tr zNyY{Vsck{FlDxS3?#1bdh^R#bKaWi;e>kXbUmHK7q15S-TI9t_OuWMcQ)Q#F4zJGm zIK|jkHltiZ>slfzs}K>%+^6Wqv7-+vgsoLgd;RXg(S8wbV&0ZA86sBEcL=6&mG9f%UDC&uk`74t)`0{;IsL7!$Vr0A=xo zoml%ZWI&zT`pt3ruQ!y2-9LwjXbvK{jqEW@4L2q%?a)PGoCHkJ-#ya?Gj(U<{{ddDncn~a literal 0 HcmV?d00001 diff --git a/.gradle/8.2/checksums/sha1-checksums.bin b/.gradle/8.2/checksums/sha1-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..50afcaa6da9b6de814a693f594e05d0e66885923 GIT binary patch literal 23897 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 IcHgJ|3wH001uu1Nr~} literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..db13d32 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Feb 14 23:42:52 KST 2025 +gradle.version=8.12.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..b86c01b0ee3fda9578debd53912202f8d98c8bd8 GIT binary patch literal 18911 zcmeI%O-K}B7{Kv2A@d6hvDAYE9t>((lMWSOAnV6&TS|U|21Zy=m)u465VR-L)W9MV z70rv}5+3wWf>2q&1VqbQz>-U3qroHR_Jzvo7o^kEdXHTwm4m^u)X$?3Q1Y*S|PRB15mGmuk;;ITuE|bNcP>eyIJ#R6@p^yZ%Ax`P!Y{*hq~l zQB3!_ia!NBXe#ymJrQgLB6Uq`%c(Xj%&cwMm_J_jGA5x^n!YDX;h}>l?He zPsBELe9w%?`s>=S7JFa*D19|4eMWoLNXMO$Thn3LXI6Xlh3v91M_ik%&(PlZZG3iY zr9V;DFKhRQK0K+PAABUeT)X}n6La3a#u)(w5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0V6OzuSbrRE9S7tv$=gaa@9$zg;4VGk KzwNxEcl`yiyFT9l literal 0 HcmV?d00001 diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe new file mode 100644 index 0000000000000000000000000000000000000000..251abd489f054ec6f4b09212cdcbf9c6d493bee1 GIT binary patch literal 8 PcmZQzV4TYGilrC;20#J) literal 0 HcmV?d00001 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..0079477 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +assignment \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..e2afcc0 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..f9163b4 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..fe0b0da --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c3c6eb3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/assignment.main.iml b/.idea/modules/assignment.main.iml new file mode 100644 index 0000000..afc1871 --- /dev/null +++ b/.idea/modules/assignment.main.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/HELP.md b/HELP.md new file mode 100644 index 0000000..18ca313 --- /dev/null +++ b/HELP.md @@ -0,0 +1,26 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Gradle documentation](https://docs.gradle.org) +* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/3.4.2/gradle-plugin) +* [Create an OCI image](https://docs.spring.io/spring-boot/3.4.2/gradle-plugin/packaging-oci-image.html) +* [Spring Web](https://docs.spring.io/spring-boot/3.4.2/reference/web/servlet.html) +* [JDBC API](https://docs.spring.io/spring-boot/3.4.2/reference/data/sql.html) +* [Spring Boot DevTools](https://docs.spring.io/spring-boot/3.4.2/reference/using/devtools.html) + +### Guides +The following guides illustrate how to use some features concretely: + +* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) +* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) +* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/) +* [Accessing Relational Data using JDBC with Spring](https://spring.io/guides/gs/relational-data-access/) +* [Managing Transactions](https://spring.io/guides/gs/managing-transactions/) + +### Additional Links +These additional references should also help you: + +* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle) + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..642a117 --- /dev/null +++ b/build.gradle @@ -0,0 +1,41 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.4.2' + id 'io.spring.dependency-management' version '1.1.7' +} + +group = 'ktb.back' +version = '0.0.1-SNAPSHOT' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-jdbc' + implementation 'org.springframework.boot:spring-boot-starter-web' + + implementation 'mysql:mysql-connector-java:8.0.33' + + compileOnly 'org.projectlombok:lombok' + developmentOnly 'org.springframework.boot:spring-boot-devtools' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/build/classes/java/main/ktb/back/assignment/AssignmentApplication.class b/build/classes/java/main/ktb/back/assignment/AssignmentApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..7ee0a01b061975b9528a7efca4cd7773c4b7f5d3 GIT binary patch literal 757 zcma)4O>fgc5Ph2_b(#cP(o&iN2X0A_*c+FWN+D8DE}#a51E;mSb+@s1qxHJwZ*eN( zzz^U@q0YKd>w^zi@{H%}&G^my{rCG1fDd@xK?55Bnmx3z$*^-Jt_4qpPWb2OO2&?1 z^GIpsju|$FqeXx=!)WOu9*KC#MV_lfXHq*pefXTNR;h}GQ$}~tK{r6JhbMT-Fg7;f z`N}GtTv(CG8)KI|GRE8w;zJ6mXmXc#_@G)t-BmJC(_W z%9STTYvao05Xx~aZ{@0z5?z5Z)(R9 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/ktb/back/assignment/controller/HelloController.class b/build/classes/java/main/ktb/back/assignment/controller/HelloController.class new file mode 100644 index 0000000000000000000000000000000000000000..c6a6d93962b1a0eecdd827fd8ba20fc7c83f0b5e GIT binary patch literal 625 zcmb7B%T7Wu5IyBBA}Zp8r8_avx^Q8Fnivvwan(c(8&|!T3YAMsdW-y)u1s9`0e+Nm z3Mj^vHt9@e=A53M_Wk4a4ZsmEELxkIIuJ7!34 z)msG=sMD2kY&P>KGVJzT$U_nJxJVM!(S4~MkBoNK#Idye+(Vn+HAALp+LB>0P+DFN z`=PYAB8;h12}~s7maxj#(`LqXRl=|r{7sY2kJb8yIk4snbPn1#w{i2qBP}5Utg{Ea9tkACBfhAZa&f1u{ K4nOs>8^9;3T9`-x literal 0 HcmV?d00001 diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html new file mode 100644 index 0000000..cc88db1 --- /dev/null +++ b/build/reports/problems/problems-report.html @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/build/resources/main/application.properties b/build/resources/main/application.properties new file mode 100644 index 0000000..528844f --- /dev/null +++ b/build/resources/main/application.properties @@ -0,0 +1,2 @@ +spring.application.name=assignment +spring.profiles.include=db \ No newline at end of file diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/HelloController.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/HelloController.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..8bfd7a05cb155269b8c83261ce472c85062b0a7d GIT binary patch literal 1086 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 WJ1?JEkk2gAb%%>YJ^h6ez`p=wv2z&! literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e18bc25 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..f5feea6 --- /dev/null +++ b/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9b42019 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..306ff4d --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'assignment' diff --git a/src/main/java/ktb/back/assignment/AssignmentApplication.java b/src/main/java/ktb/back/assignment/AssignmentApplication.java new file mode 100644 index 0000000..a0f19af --- /dev/null +++ b/src/main/java/ktb/back/assignment/AssignmentApplication.java @@ -0,0 +1,13 @@ +package ktb.back.assignment; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AssignmentApplication { + + public static void main(String[] args) { + SpringApplication.run(AssignmentApplication.class, args); + } + +} diff --git a/src/main/java/ktb/back/assignment/controller/HelloController.java b/src/main/java/ktb/back/assignment/controller/HelloController.java new file mode 100644 index 0000000..3bdc4a9 --- /dev/null +++ b/src/main/java/ktb/back/assignment/controller/HelloController.java @@ -0,0 +1,14 @@ +package ktb.back.assignment.controller; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloController { + + @GetMapping("/hello") + public String hello(){ + return "hello!"; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..528844f --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.application.name=assignment +spring.profiles.include=db \ No newline at end of file diff --git a/src/test/java/ktb/back/assignment/AssignmentApplicationTests.java b/src/test/java/ktb/back/assignment/AssignmentApplicationTests.java new file mode 100644 index 0000000..5a81f19 --- /dev/null +++ b/src/test/java/ktb/back/assignment/AssignmentApplicationTests.java @@ -0,0 +1,13 @@ +package ktb.back.assignment; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class AssignmentApplicationTests { + + @Test + void contextLoads() { + } + +} From b7eb609a5c42e1ea5fc1f9a12f15606f8084abf5 Mon Sep 17 00:00:00 2001 From: Dwisgolmog Date: Sat, 15 Feb 2025 03:17:30 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20api=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 요구사항에 만족하는 가장 기본적인 api 응답을 생성하였음 --- .../executionHistory/executionHistory.bin | Bin 75538 -> 133203 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.12.1/fileHashes/fileHashes.bin | Bin 19497 -> 20297 bytes .gradle/8.12.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.12.1/fileHashes/resourceHashesCache.bin | Bin 19211 -> 21285 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .idea/uiDesigner.xml | 124 ++++++++++++++++++ build.gradle | 2 +- .../controller/CompanyController.class | Bin 0 -> 1447 bytes .../controller/HelloController.class | Bin 625 -> 625 bytes .../dao/StockHistoryRepository.class | Bin 0 -> 2613 bytes .../assignment/model/RequestCompanyDto.class | Bin 0 -> 829 bytes .../assignment/model/ResponseCompanyDto.class | Bin 0 -> 938 bytes .../assignment/service/CompanyService.class | Bin 0 -> 1536 bytes build/reports/problems/problems-report.html | 2 +- .../CompanyController.class.uniqueId0 | Bin 0 -> 1447 bytes .../stash-dir/CompanyService.class.uniqueId1 | Bin 0 -> 1536 bytes .../stash-dir/HelloController.class.uniqueId0 | Bin 1086 -> 0 bytes .../StockHistoryRepository.class.uniqueId2 | Bin 0 -> 2612 bytes .../compileJava/previous-compilation-data.bin | Bin 27173 -> 28991 bytes .../controller/CompanyController.java | 27 ++++ .../controller/HelloController.java | 2 +- .../dao/StockHistoryRepository.java | 33 +++++ .../assignment/model/RequestCompanyDto.java | 12 ++ .../assignment/model/ResponseCompanyDto.java | 12 ++ .../assignment/service/CompanyService.java | 26 ++++ 27 files changed, 237 insertions(+), 3 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 build/classes/java/main/ktb/back/assignment/controller/CompanyController.class create mode 100644 build/classes/java/main/ktb/back/assignment/dao/StockHistoryRepository.class create mode 100644 build/classes/java/main/ktb/back/assignment/model/RequestCompanyDto.class create mode 100644 build/classes/java/main/ktb/back/assignment/model/ResponseCompanyDto.class create mode 100644 build/classes/java/main/ktb/back/assignment/service/CompanyService.class create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/CompanyController.class.uniqueId0 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/CompanyService.class.uniqueId1 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/HelloController.class.uniqueId0 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/StockHistoryRepository.class.uniqueId2 create mode 100644 src/main/java/ktb/back/assignment/controller/CompanyController.java create mode 100644 src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java create mode 100644 src/main/java/ktb/back/assignment/model/RequestCompanyDto.java create mode 100644 src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java create mode 100644 src/main/java/ktb/back/assignment/service/CompanyService.java diff --git a/.gradle/8.12.1/executionHistory/executionHistory.bin b/.gradle/8.12.1/executionHistory/executionHistory.bin index 8f5b1fe00c44b409e915a928942ab51b9b9f8d11..d3a288554a67ad400e7caea6d94b79f856dfb307 100644 GIT binary patch delta 2620 zcmb_dYfuws6x}5VYOux!uZk$(gNi&%K&mK$ih~bC0TC^+Zo(20Hf)j&B%otjQM5=f zf)YWZpkShasG!7(Xnjz$VnY>C6nsF(QWXrPf{4;hSfUmO+fIMnnJ;I)d-i_!oO_dY z!}z9bsBA1~vdetxWB>pfRRG}6!4CicP8|&Zi&yuZd29e!qQmJYeASle)>ghG@cWx3 zbgMO$-V6p4WAk8Mlm~=}5k>?fiiQX|u`CFtaFxZd#8bV>KCu@yAF;7BnKS@O=PM?Z zoRingFKe~~XM>}gSC-B&25dSX9KEzove+peES2-^!Ljl;_TU6L(*aycnd4jmd6N^> zFWViDRZq2N$txVdR*3*stn{f$)CA0;$*Rk9@3$ZBP-&=IV-i4dOAa_(h|NP=$Pdn5 zk%c$nP(jjD$3~AM0i?3~wGMZ3SK^SLv!j27-6Jzq`zkn_D^}sq1?9G4ACqG=ztLus zPKN)y8i$Oc!@~1T!+M9Ec`mk@TTo-HM0r9s8dDOIQUykb{E1MTg4SA(&igibaHob z^cU+Nx7YLRWj&+;kfCozq|S6Z*+Tg=d$42B?tyLn_pGOI(FhoEU4U|VP)xiF2a1D8 zl=E92RWVgUoA~Qvuopv~tOS+%&X4%uu6&&XxPn40s$G7r)(8Q5QX^YN&)@g2B>FgXO8;7dqzhPA?I?IPkr{&id z^DS|R7CFf^TWQg_Iqrq{E4p??$+8p;7){zy^Ic}m!&4L~H^gpKlXbQJ>ur7VEe^)z zTLR&+Mi=`yGZ7TyAfCK9NQAIy@mNAsG{>FFjN(%!s;_k2$ZuL}yJEuZ^W0tswb20R zoqWay`C`Gh28DEfCr=}~vjB||3Qz=r1%y;S%_(_vvc_likncU;s?6L1o;C~#+4AE_ zJs(ip4ek^}N!HW*)DOa79vXwe{c`m=CiNE=3lG|`;o=1w=F-*(}3e9G7KIEMR2nd~;i}cVNYY9m2+CHFTKWZ8(;be}(dcGOWJ(?hy?&)fmk1 zhY7_>I z-ccdq7U59wjjXPg*;7_;OUW3Qnvy8Sq2ET13#L9fvpLW1r)#XRx67*fyg2HaANk9= zt8VG9T+|zR^#@z@Pyex2ze<+qR!M*e4^$WXPO9kJVqKaYu@NPK0O4L8EP zFh3T?goG~_3Q>Z;G%uw)R2n632I^+2N-iXWC-ieSez2@=1Nn^pYuNj<^p3r1q1LG< z4NA1Lx_e8Qm-7%jsb{wxG_A`(?~1{KI5rdRU+ckrKZ(-6omfZFpf)+5J5eotJGI{6 zaXq=k$CLWTbqKJ~Z3pTh5f&BXoOC9;d}>^GVdmbgL9XP$b)oHbPg)k&o-QiVP?hBW zGOm+%^;$8{W+ZznE|-BZ@vDF>xQL)4SSb0Z{>03R+a98YBgF~fiEq5D(=FHD)K_q7 zEIwzq_(_37&vKIdmPR{mZTeNwKmU7!28d0Nby>VKb%Lv@F=mzqwv%ixF0(r<S>w#QGd$%u zbglS7t>{^9&Nf$#yuR^Kp?(8Run75Vlx39EYmQ06`NXf?{F?N=JpWj~fdV%E1$eeQ A%K!iX delta 332 zcmcaSfn(A+mI)$^%o9b`87(&^?hv0?pfXuf!jYNb-ipn!5|PL3GR+He%nGuyOVTnj zGg8tkG7C-f%Ca-e%nJn=XBK`k+?Y94(k|g;_zv$?3)nG)CKt|?-)^^?@uJiACyI<# zi~=hhIOon>x~A~T?YZ9`Uve>ozIec3ifZ-G6#8v=J~9h?->a&qF|;OM0dGo;)7mPl#Ff#~zx$|_9$nlSwCMvZCW=T7K z1BJ~0YrffEvO_L&$EUALBCcBig_75}FKuD5@=aYlEq~2{ZBu|k{cb_CPgSnD{N==g z%PZEk3j>ArP7jqn5mj!^sPpt*-n@mjEX(r?N;32FHiz__V3dC;*l=&zxyARwZkm)c V6}j%3-2!sN(kqNCj0_AOX#m>glWPC~ diff --git a/.gradle/8.12.1/executionHistory/executionHistory.lock b/.gradle/8.12.1/executionHistory/executionHistory.lock index 6d37edb1203fd86d49043f25ffe2d0ed0aa1c8b8..dd4412cdd5edaad50c03b159be6977accc722f01 100644 GIT binary patch literal 17 UcmZQRtY&w*eOJr_1_%fO05*LD#Q*>R literal 17 UcmZQRtY&w*eOJr_1_)3C05(wsnE(I) diff --git a/.gradle/8.12.1/fileHashes/fileHashes.bin b/.gradle/8.12.1/fileHashes/fileHashes.bin index a11d48d6ca9f084cba4de0b6d0cabffb0993e5d8..2966008a2b1d09a7a2a4ab84b54d491a042305d1 100644 GIT binary patch delta 1299 zcmZ2EgYo1%#tkMCo+^!(o~g*Z%`0I517GF;P%z=7!h?xVww!^8`$WUUXVmuBclbmv zfvRtZiBC3_Fc4U{xWKfPH$e{~>9=`utb~Hb+Bm0`x91rfKn0(|bgaEDcH`8FML(h9 zvXe_CG6dc5()zECof%|!?z(ABIwgQ`K^S7zz+fGO)UvU9Z;38 zC(BAIXfWKWWmu@YhZQQg6J{5aR^{&3yRU7Bi2M0ZHkGsxkZO2W*}5@!4n)vjd~&L! zf`Im`$808d%nm>VeLhaE1qxa(+2|VBo^l5&s5yBmP|!}pcoEnC-Re-m{gc-M1tabr z6_}}9y&NLw*Esp8WE2x~;YP(D;u{TCh)j0$C{hp$;S&_k=(VcjZ{W(nz&Mq4 zb#yXBPoe!}R!@!1zdcHry!ci{xEP#UC|s*KrB`}u>P)aoS?&iAm5kazTF)3rXacb! z2n!UY&JA=p(R{(z(s;tzJqv*@2AVA^Tr_#7cfsWE-hB0;N)O(@&iOP!LcCNjzu<%@ zSb>}%H2xW!FpZo$Pd{bJ%L(bW^Vs5*3!Rb7{e4{fXKC|CpS=01PHjdhh_nE)cL(0|_)|>Cd>(wX*b4 zz{Ke2WT)&2d%!x9a@oKd7#KjIhNeT>B;sk-)Sr{7tgRB5rVhbeDbQph>n|?$oEa9V5 z1ZRDdEHJABoi&qvB3J_h^D0aox3v!ooANBx;8@bTQbIJw(k8$M;#tkMCj3Se3B@8AXm5`XsE1594RZ?Q|R!M`&e}S~Cl)>a)DT&E@f%q*D z%Sua3_LUA|V*I#K@rU?E0}Zjsjvhq{F9jR!EjzdPUf4~Oa;75JT?`D2Q&|O^q#3{< zOLa1r9wkg(lcv4Xsaok9vnFHyos+y1>>w&FYal8aV}Z1uF_6#%Vnq-Zc=udJ adpGa7!q4;C)^a%2b3$}DKA*hPy8r+mojxc4 diff --git a/.gradle/8.12.1/fileHashes/fileHashes.lock b/.gradle/8.12.1/fileHashes/fileHashes.lock index ac26b4832633e61bf382eef39ead6863303f141e..f23035d70686dd9cf7a8d93ab2261740648a4909 100644 GIT binary patch literal 17 UcmZQh>*zYzk@YE<0SuUQ0XK65qW}N^ literal 17 UcmZQh>*zYzk@YE<0RlDy05|moCjbBd diff --git a/.gradle/8.12.1/fileHashes/resourceHashesCache.bin b/.gradle/8.12.1/fileHashes/resourceHashesCache.bin index d79658a2237d9d9d9249347227c8d4121e9934ab..8d1dd82eb8298269a0dbfe06d92e68e2c269bc3e 100644 GIT binary patch literal 21285 zcmeI3i91w#AHc^Ig@lx)XyK~MWNV5$B3uSztfQ1I36~<oc>^f23 zbdBFBudI0Z;R?cy4gr2W;DLtHj8qW9P4@zxa_g2`cVL(Y!u6W~PnEUbxS4xzGQ#z8 z*7%5(t-eyAG{Ox_08dj^)<4qJ_yL{IvBqr<=aVW50ufG;1^iZlnAgLG#WM&uxe55~ z=qJQx;X86D9|JtwGNtsHy2sDx{C@z?i#{8%zqI@m~u$&#Ab&wFbL z=ytaQ{#?YjVh_h#^nEuWu5s(SOi8MRKjNEqt?`c+U!Ivr5ka`#d%$0n#yMTiEW#t4 z(hK-NOt$~;ms5X5{T9Ig#!VJpi)FD-L&J{8tffe1DBU4w#rN2+c(Kdcai(t6pSDPcwv*`v5=0wNe(9Mxr2` zvJAMI^JHzT$~bx)8QB1?@rvErizvHU-(Pz8&CH z58{>OC_iw0aR=P2!@a;t=HwB?HxdQhdW%yOJE0NnsUNb&Pp>XqGLyAMe3J`+yQ^mR z7!?I6A)Mj~xR(}v<2X5w2c2IBxOdE^vR3Yn8H5|g0PYj$G1|8%!;8*|1N{7U+Y??J zs;(nkUmS4o6Ng)0i~J6LhXr5(SO6A)1z-VK02Y7+U;$VF7Jvm{0aySQfCXRySO6A) z1z-VK02Y7+U;$VF7Jvm{0aySQfCXRySO6A)1z>^y=K_qy*P`FQ7>kt!_$%D4hg^E& z^KWl{Ugl0Db$^FD{@WNka;SCFIgecXdS9NeLuxm$Mw3q=Tce4-u0vwS-3;k5N30PV zU^d>e+{4yB#=)L8?I?>iKDYi@>!%V?rR>F<<$f%Q6KhDS5Qd8evi6>gn2`08bXV zbh(_dhFuN4M#+Aa=gDmUu`^PM zMxWCHs!yb?&KI=kv?*W>9UW?y{9PZVDQQ2k#~Vvpu*SgCW9fnUZF96^+70tH(Tw%E zOvQ3FxM;~)1)e?qw1u%}+Kd&sOa|BF{MDpnf~$eakh%3gxnfx3jcKXkI-J{dK)nOpA8t)x42>=-oU zx7>j>yrUIQU3d_&KQeJ_iC=V&G}ds*3K=*l6JfSM$O!jvmUP1!*YmGEieFK6e?nCm z5xOix#~K=MA~ID|#8bZT^nVP?NoL&3!qoKnq>;_JP|ua^<CW0JM?D{vA>T%0#wvfN*YPNmxDb~Sc0BMXenfm=fE{auU3*?^tLFO0;fuoGX1jyq zutsZ7nq|i@{aI7v=JXulLoAM{Mhl7KrnQ?_tu}=pr@V;l$Id99drfru+Mg0N)AF@( zSS}T7q>4)Xa&Mh|ZfU^)f69w!#vKJr`@%i{BF|@rUKtc~XSnn%Uoh67S12ZSv~_=8 zA|+gXRn^UgHHhs;yg3YVT{l-d4WCH8JyMes%9&$$0~ciE|loht!H8EQd{yKwh;`X^;R#wJ+_23 zELYv8xjERIZdY3e=G1)~z#2BRxPGDPgYtU{&ZIdf&N1$^VcM5+e)c~c4r~>pYc%V; zJb#MCRo&>8am8EWyYZDT1lK;jym;&kyXLHFCv^kfV^zbx=d16rxK?VMrnCi2J#KMS z)sGC=5#o!TQJNX?**wxY@eQt5DYu0FC)Q}zp2dHOwF}uT(%0jinLdm)2CnMLPEWcK z-+P!nh}J>fI5}tAXHT7H-e3*;KckM6 zSZc@&7T#}YZBJxzz1=7xJkUt#;6Gk^Wa5e4k|cIUb`wpkN&N1oluV(&x0iP??hIji zUxM%b6(_ExCFPvmaZ=`j2a9V|MJKtdKg6IA?=5{m=yf0Ct`?>lBrAzc6q1|v2dUx$ zPT#j9Sfi{{Exqqjf%}l&dv?C{2`sMa{&qi>SRm=$7?A7ZWUqfULZDw{@pobHu3rA9?qccN@cV@|7iSM+XYgohT>4cp SIW2c~001uu1Nr~} diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 251abd489f054ec6f4b09212cdcbf9c6d493bee1..9e90c5fec0855d65356f504e8327e2dbd790b382 100644 GIT binary patch literal 8 PcmZQzV4TW2v%nVs1_J@| literal 8 PcmZQzV4TYGilrC;20#J) diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 642a117..726de35 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ dependencies { implementation 'mysql:mysql-connector-java:8.0.33' compileOnly 'org.projectlombok:lombok' - developmentOnly 'org.springframework.boot:spring-boot-devtools' +// developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/build/classes/java/main/ktb/back/assignment/controller/CompanyController.class b/build/classes/java/main/ktb/back/assignment/controller/CompanyController.class new file mode 100644 index 0000000000000000000000000000000000000000..2e097e5ee39c3cb15a204a5f528e4143ba538288 GIT binary patch literal 1447 zcmb_c*=`dt6g|$;kfjSL4J~`imZZxdgb-3nCDc;-kV4gMYXb3Nsh-9qq*KV`kVQ`5QQI`EhP2z336)3cn85C4Ap55Nk zf${uffvsY7bnKe(wcDzk$5QGC^^A6`D#0oOR`DXIDb)oM>t2&AOjfn4UiUf;<-e5; zhn9TRv!zp)z7F+)F=6&}An^FiEdL^&wM}g+v*$H;q%S+lD4#f!BT9Ds=r*#0>*-gO z|CFkV=*Wd+@^7v6__ z9eRG-I#ld-?KUkrjI~}Vvn{*buxA7oPD2i!9q5uE@ delta 13 Ucmey!@{wi3Pew+L$-fxO0V>@EqW}N^ diff --git a/build/classes/java/main/ktb/back/assignment/dao/StockHistoryRepository.class b/build/classes/java/main/ktb/back/assignment/dao/StockHistoryRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..923109a6ca0c04b567b85580cd2b0b112b124a2c GIT binary patch literal 2613 zcmb_e`&S!96#ga&BrIu*=}V-Kwa`ieWvkX#Lmxa60RyxNQn4zXY^HRZ&2G9oDe_Nal54^WE>>*}wjN`6qyzc&H(PWE!a~1~AAl@`OL* zhRvNFW4-=Fn37>|)^aR)iy=9g-yA{)LuqJP3?s`h)0B0i&dsL5ec#$~TEdY=gS$pe zx@L39@}=wTRYlwNEj44vK55j=4bf`bTndKiitFtde%rI0okt#TiCx!g8cN16T~8P* zG3jCk#~EJLN|n;WhHlQ7ZmZ3my={lo^l9Cnksfb|?FJcEE7Nv;u}zjup_Qxat9m4_ zo7&3y@|sSenN5HDaTufS>+5SVqo&&s`b}jf@}f4h`%9&2>7dkYeQs^BCjfoEv~j;w zTGPX$+uC|{u~gOPw|bx|AY@fV1hyG5+{Qz48t+%D8G|g!wMzt0mpEnVmV^1)2a(^gV$}^$yHpF+ne08)H>QsNg_GJwMxGf z9A2zN>ISPqK6V>-xhhR5JhF23k>xa^OvQ_wVe!x#2UJ+3x-7=15v&hzMWG+kAiQGk zAZC0~F%FO){i~(+Cff#1Im%QD@?^94L)%Q zcoWwcN>OAzq%JP!|C=+0gv!#X5S3nA)MGq%m-xcKmWlSIA5GDg7L{HaUlOPHYpQmy zvVTT$HMirLqHHOGjm2}`ZR|5jmtnNpairA}o0e}8|K=RWl|1l3ZLKfKePWexbh8pEY-+p?TzZc`YQ0A#SMx*E`IdG(B+$T<2@^~yufX{W>GPX z;A@8bVYKOj6ZK_6@V-XR_cvMG#+?z|p%%OBIKo@7>G2jsg6|kEch!0>(hE--KQLT) zvna7G#F9F8hCVU?YESB`fo4gX4`7CN4O*3HROedZIap!pSEPTYRRY)O|2WC2{}fJO z2qXBAR%b$Ke1wl_MS6i%hU+vRpawz%!zcKZRF(NXq{$gDo;!9URrm$z(bP+_hQU9O z*h)^-wo=ozt%0kx-*ECL5)1vR&m!O?`5g;rXp-$FfgG1j?t|`ZtMllCs4?ZN8{xe_#lDj znCgaiCJ1MYZg!5Ya-Lp)dLE-tLwIz|VV-OQIu@`OEgbl87njn(%x4z bR_K?d`6^vu1Dn{wx3r_t&I5dpZH)c{-9+L5 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/ktb/back/assignment/model/RequestCompanyDto.class b/build/classes/java/main/ktb/back/assignment/model/RequestCompanyDto.class new file mode 100644 index 0000000000000000000000000000000000000000..9305e6624a0e09b6db79eb6676c011bca597a000 GIT binary patch literal 829 zcmb7?(P|Sx6o&sv(yrNVn;M(88rvGL5=G|$qJp$qgr!0vxh=DsAx^V9)9y|RzLkO? zc;N&1P~w?QLueWZy*X#k%zwVK|JnWf@An@7Z}Hqm31ttJ0Bcxh*uD_gf+s?c_~+cJ1Nfq>!V*hV}O@tBJ|S0kNDZFy>jGT}XWHIcbJHtD6% z-%hMy2;ymR9+QHh9?pmLZKm|7>+o9vYS?C|=2m3(L|BqGrc$d?$wL#1#2pvvdVohx z?MXeHYAeSDy%s7h&n9Ukvo9h_ig~VcATs6Zo5PCzs&a-`;XRym8EPXrvv%WVr`@^h zhoRY2`AOd6RnKb2Z$h7KGzjnJui}qWh4_~H8ACR6(ZrMeqHBzpCxj%v84pp2oqrCRw7ub(N z)}ZLFL8x7d!Bl`f>{G??7*7a#yZI-)?{rzhyt%rhxk(y_ep-MIaJU4txd`%Cf{vDg P9xj45R)U@t9$Nna+C8GA literal 0 HcmV?d00001 diff --git a/build/classes/java/main/ktb/back/assignment/model/ResponseCompanyDto.class b/build/classes/java/main/ktb/back/assignment/model/ResponseCompanyDto.class new file mode 100644 index 0000000000000000000000000000000000000000..784a3007b03491769cdeb5fc0e4006d7678378d2 GIT binary patch literal 938 zcmb7CU2oGc6g_UThNjt?mBN7W&5*hw(DPLs6b-feks5~jOR1!J&ERx5 zPZ(B)!pulbd33s)i%b~YUDCnO>Psc|$9W=(W1eIcZ=Le&gcs80v!ZKGWy!GJ{~t$o z7}gKR%E(;2Qx~$7g!e`%ZMc!-owX>_d7?-0TcJcjRt)G$Kmv~cdP4-Qo_|asojrzb zcTv@1rDrV(-wSi92M4^M!5C4{%l?rb7pdq;t9Wg3nA_H8JfX?7=w~<-=|j-2W`|cr z8W%+u3?1B}`fbW$${59^=o{FVs%?$ddR1)T4()?!1McD;W$Uxk`xF@-TnXgO1Nqki zJ;b9c82O*+l^QM?HLnF~<1vZ1(mv8nmtrUSj+N-e1T5N`z>A(w;D4RN^(x$G+CNiD jH!BORJ)O$LTD7w_I%G7k>`+5UM&G@c(Ec zkZ9r$@JAVE?+P?}ejxFZyPchznP=vio&EXi+YbOQP)Z_#sDW4taU>W<_W2<TcSo+q2OC2VDS!abCAVXiw? zo7=~gU`s%a3t)zsAbMz8C5w4-=ioKEhUEKxvO%KuQJ5eod!`bT$Z+Y-LY!IeaCAp(xl5yowusom3rS*#?+ql z7#2d2!dp(6jcg0G=QQ4Oms>&!mm*}ELWPpC^-nVV6W%?8LG`_w5JCp(!PyHcO#kh} z(C;bkD&1cOL)eW#iu+p1yN6`|4A4N45gp=JM|IIw(y=`Qj~J#dr;Cd8#KmtysL(`k z)o}^o=s(rA8cM%Kjcl1a!fR7nqD$_Ea!PB|f@H<%xOK59b!*4YnGc3?QD@JP-Ram$ zTB0gFNgaP_+m7OXjSO>T$8DNkTVDXXx{Dtj_rUb1m%>rUZDDrjyM!D~ZG`Tr2;B`d zx+JCbE#Yfu;&7Y(+@alj#C*HS!WmfMJB$zM{xb}mV5l&Eg7GiD!>sQfqwgr057So% z9m8GHWCC~G!+qL;pfnt%N^+bI7%dEW6v$EIeWEo%Yp(DWLkp*vT8U|?sHHeb^FJO`uX4sry!0FUX7;0e7?ed!sV)0!aj72r35M43bY literal 0 HcmV?d00001 diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html index cc88db1..bc5012a 100644 --- a/build/reports/problems/problems-report.html +++ b/build/reports/problems/problems-report.html @@ -650,7 +650,7 @@ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CompanyController.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/CompanyController.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..2e097e5ee39c3cb15a204a5f528e4143ba538288 GIT binary patch literal 1447 zcmb_c*=`dt6g|$;kfjSL4J~`imZZxdgb-3nCDc;-kV4gMYXb3Nsh-9qq*KV`kVQ`5QQI`EhP2z336)3cn85C4Ap55Nk zf${uffvsY7bnKe(wcDzk$5QGC^^A6`D#0oOR`DXIDb)oM>t2&AOjfn4UiUf;<-e5; zhn9TRv!zp)z7F+)F=6&}An^FiEdL^&wM}g+v*$H;q%S+lD4#f!BT9Ds=r*#0>*-gO z|CFkV=*Wd+@^7v6__ z9eRG-I#ld-?KUkrjI~}Vvn{*buxA7oPD2iG@c(Ec zkZ9r$@JAVE?+P?}ejxFZyPchznP=vio&EXi+YbOQP)Z_#sDW4taU>W<_W2<TcSo+q2OC2VDS!abCAVXiw? zo7=~gU`s%a3t)zsAbMz8C5w4-=ioKEhUEKxvO%KuQJ5eod!`bT$Z+Y-LY!IeaCAp(xl5yowusom3rS*#?+ql z7#2d2!dp(6jcg0G=QQ4Oms>&!mm*}ELWPpC^-nVV6W%?8LG`_w5JCp(!PyHcO#kh} z(C;bkD&1cOL)eW#iu+p1yN6`|4A4N45gp=JM|IIw(y=`Qj~J#dr;Cd8#KmtysL(`k z)o}^o=s(rA8cM%Kjcl1a!fR7nqD$_Ea!PB|f@H<%xOK59b!*4YnGc3?QD@JP-Ram$ zTB0gFNgaP_+m7OXjSO>T$8DNkTVDXXx{Dtj_rUb1m%>rUZDDrjyM!D~ZG`Tr2;B`d zx+JCbE#Yfu;&7Y(+@alj#C*HS!WmfMJB$zM{xb}mV5l&Eg7GiD!>sQfqwgr057So% z9m8GHWCC~G!+qL;pfnt%N^+bI7%dEW6v$EIeWEo%Yp(DWLkp*vT8U|?sHHeb^FJO`uX4sry!0FUX7;0e7?ed!sV)0!aj72r35M43bY literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/HelloController.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/HelloController.class.uniqueId0 deleted file mode 100644 index 8bfd7a05cb155269b8c83261ce472c85062b0a7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 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

Q9Dm_%YMMP9wlJ(@EXLs++Sdw~D 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 WJ1?JEkk2gAb%%>YJ^h6ez`p=wv2z&! diff --git a/src/main/java/ktb/back/assignment/controller/CompanyController.java b/src/main/java/ktb/back/assignment/controller/CompanyController.java new file mode 100644 index 0000000..15dba45 --- /dev/null +++ b/src/main/java/ktb/back/assignment/controller/CompanyController.java @@ -0,0 +1,27 @@ +package ktb.back.assignment.controller; + +import ktb.back.assignment.model.ResponseCompanyDto; +import ktb.back.assignment.service.CompanyService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; +import java.util.List; + +@RestController +@RequestMapping("/api/company") +public class CompanyController { + + private final CompanyService companyService; + + public CompanyController(CompanyService companyService){ + this.companyService = companyService; + } + + @GetMapping + public List getCompanyPrice(@RequestParam String companyCode, @RequestParam String startDate, @RequestParam String endDate) throws ParseException { + return companyService.getCompanyStockHistory(companyCode, startDate, endDate); + } +} diff --git a/src/main/java/ktb/back/assignment/controller/HelloController.java b/src/main/java/ktb/back/assignment/controller/HelloController.java index 3bdc4a9..38ac397 100644 --- a/src/main/java/ktb/back/assignment/controller/HelloController.java +++ b/src/main/java/ktb/back/assignment/controller/HelloController.java @@ -1,12 +1,12 @@ package ktb.back.assignment.controller; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { + @GetMapping("/hello") public String hello(){ return "hello!"; diff --git a/src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java b/src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java new file mode 100644 index 0000000..e7fa94b --- /dev/null +++ b/src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java @@ -0,0 +1,33 @@ +package ktb.back.assignment.dao; + +import ktb.back.assignment.model.ResponseCompanyDto; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +@Repository +public class StockHistoryRepository { + private final JdbcTemplate jdbcTemplate; + + public StockHistoryRepository(JdbcTemplate jdbcTemplate){ + this.jdbcTemplate = jdbcTemplate; + } + + public List findCompanyStockHistory(String companyCode, Date startDate, Date endDate){ + String sql = """ + SELECT c.company_name , s.trade_date, s.close_price + FROM company c + JOIN stocks_history s ON c.company_code = s.company_code + WHERE c.company_code = ? AND s.trade_date BETWEEN ? AND ? + ORDER BY s.trade_date + """; + + return jdbcTemplate.query(sql,(rs, rowNum) -> new ResponseCompanyDto( + rs.getString("company_name"), + rs.getString("trade_date"), + rs.getFloat("close_price") + ), companyCode,startDate,endDate); + } +} diff --git a/src/main/java/ktb/back/assignment/model/RequestCompanyDto.java b/src/main/java/ktb/back/assignment/model/RequestCompanyDto.java new file mode 100644 index 0000000..0461539 --- /dev/null +++ b/src/main/java/ktb/back/assignment/model/RequestCompanyDto.java @@ -0,0 +1,12 @@ +package ktb.back.assignment.model; + +import lombok.Getter; + +import java.time.LocalDate; + +@Getter +public class RequestCompanyDto { + private String company_code; + private LocalDate startDate; + private LocalDate endDate; +} diff --git a/src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java b/src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java new file mode 100644 index 0000000..ef00f23 --- /dev/null +++ b/src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java @@ -0,0 +1,12 @@ +package ktb.back.assignment.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class ResponseCompanyDto { + private String companyName; + private String tradeDate; + private float closingPrice; +} diff --git a/src/main/java/ktb/back/assignment/service/CompanyService.java b/src/main/java/ktb/back/assignment/service/CompanyService.java new file mode 100644 index 0000000..5d691df --- /dev/null +++ b/src/main/java/ktb/back/assignment/service/CompanyService.java @@ -0,0 +1,26 @@ +package ktb.back.assignment.service; + +import ktb.back.assignment.dao.StockHistoryRepository; +import ktb.back.assignment.model.ResponseCompanyDto; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +@Service +public class CompanyService { + private final StockHistoryRepository stockHistoryRepository; + private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + public CompanyService(StockHistoryRepository stockHistoryRepository){ + this.stockHistoryRepository = stockHistoryRepository; + } + + public List getCompanyStockHistory(String companyCode, String startDate, String endDate) throws ParseException { + Date start = dateFormat.parse(startDate); + Date end = dateFormat.parse(endDate); + return stockHistoryRepository.findCompanyStockHistory(companyCode,start,end); + } +} From 6dcab0ed9c45d6bd9050589a1f520201e0949ea3 Mon Sep 17 00:00:00 2001 From: Dwisgolmog Date: Mon, 17 Feb 2025 02:58:04 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20Api=20key=20&=20=EC=9C=A0=ED=9A=A8?= =?UTF-8?q?=EC=84=B1=20=EA=B2=80=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gradle/8.12.1/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.12.1/checksums/md5-checksums.bin | Bin 18747 -> 19397 bytes .gradle/8.12.1/checksums/sha1-checksums.bin | Bin 18983 -> 20603 bytes .../executionHistory/executionHistory.bin | Bin 133203 -> 223086 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.12.1/fileHashes/fileHashes.bin | Bin 20297 -> 21297 bytes .gradle/8.12.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.12.1/fileHashes/resourceHashesCache.bin | Bin 21285 -> 22917 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .idea/gradle.xml | 1 + .idea/inspectionProfiles/Project_Default.xml | 12 ++++++ build.gradle | 3 +- .../controller/CompanyController.class | Bin 1447 -> 2066 bytes .../dao/StockHistoryRepository.class | Bin 2613 -> 0 bytes .../dto/RequestCompanyStockHistory.class | Bin 0 -> 1311 bytes .../dto/ResponseCompanyStockHistory.class | Bin 0 -> 1014 bytes .../global/exception/ApiException.class | Bin 0 -> 768 bytes .../global/exception/ErrorResponse.class | Bin 0 -> 770 bytes .../exception/GlobalExceptionHandler.class | Bin 0 -> 1881 bytes .../global/validator/RequestValidator.class | Bin 0 -> 1666 bytes .../assignment/model/RequestCompanyDto.class | Bin 829 -> 0 bytes .../assignment/model/ResponseCompanyDto.class | Bin 938 -> 0 bytes .../repository/StockHistoryRepository.class | Bin 0 -> 501 bytes .../StockHistoryRepositoryImpl.class | Bin 0 -> 3081 bytes .../assignment/service/CompanyService.class | Bin 1536 -> 1405 bytes build/reports/problems/problems-report.html | 2 +- .../CompanyController.class.uniqueId0 | Bin 1447 -> 2066 bytes .../stash-dir/CompanyService.class.uniqueId1 | Bin 1536 -> 0 bytes .../StockHistoryRepository.class.uniqueId2 | Bin 2612 -> 0 bytes .../compileJava/previous-compilation-data.bin | Bin 28991 -> 32491 bytes .../controller/CompanyController.java | 28 ++++++++----- .../dao/StockHistoryRepository.java | 33 --------------- .../dto/RequestCompanyStockHistory.java | 18 ++++++++ .../ResponseCompanyStockHistory.java} | 8 ++-- .../global/exception/ApiException.java | 14 +++++++ .../global/exception/ErrorResponse.java | 11 +++++ .../exception/GlobalExceptionHandler.java | 17 ++++++++ .../global/validator/RequestValidator.java | 28 +++++++++++++ .../assignment/model/RequestCompanyDto.java | 12 ------ .../repository/StockHistoryRepository.java | 11 +++++ .../StockHistoryRepositoryImpl.java | 39 ++++++++++++++++++ .../assignment/service/CompanyService.java | 19 ++++----- 43 files changed, 184 insertions(+), 72 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 build/classes/java/main/ktb/back/assignment/dao/StockHistoryRepository.class create mode 100644 build/classes/java/main/ktb/back/assignment/dto/RequestCompanyStockHistory.class create mode 100644 build/classes/java/main/ktb/back/assignment/dto/ResponseCompanyStockHistory.class create mode 100644 build/classes/java/main/ktb/back/assignment/global/exception/ApiException.class create mode 100644 build/classes/java/main/ktb/back/assignment/global/exception/ErrorResponse.class create mode 100644 build/classes/java/main/ktb/back/assignment/global/exception/GlobalExceptionHandler.class create mode 100644 build/classes/java/main/ktb/back/assignment/global/validator/RequestValidator.class delete mode 100644 build/classes/java/main/ktb/back/assignment/model/RequestCompanyDto.class delete mode 100644 build/classes/java/main/ktb/back/assignment/model/ResponseCompanyDto.class create mode 100644 build/classes/java/main/ktb/back/assignment/repository/StockHistoryRepository.class create mode 100644 build/classes/java/main/ktb/back/assignment/repository/StockHistoryRepositoryImpl.class delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/CompanyService.class.uniqueId1 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/StockHistoryRepository.class.uniqueId2 delete mode 100644 src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java create mode 100644 src/main/java/ktb/back/assignment/dto/RequestCompanyStockHistory.java rename src/main/java/ktb/back/assignment/{model/ResponseCompanyDto.java => dto/ResponseCompanyStockHistory.java} (52%) create mode 100644 src/main/java/ktb/back/assignment/global/exception/ApiException.java create mode 100644 src/main/java/ktb/back/assignment/global/exception/ErrorResponse.java create mode 100644 src/main/java/ktb/back/assignment/global/exception/GlobalExceptionHandler.java create mode 100644 src/main/java/ktb/back/assignment/global/validator/RequestValidator.java delete mode 100644 src/main/java/ktb/back/assignment/model/RequestCompanyDto.java create mode 100644 src/main/java/ktb/back/assignment/repository/StockHistoryRepository.java create mode 100644 src/main/java/ktb/back/assignment/repository/StockHistoryRepositoryImpl.java diff --git a/.gradle/8.12.1/checksums/checksums.lock b/.gradle/8.12.1/checksums/checksums.lock index 94788bd9dc6109930b9cc29dfd6d9765238897c0..42eab84fe28f6f5f5bae816c00594d7eaaade9ae 100644 GIT binary patch literal 17 UcmZSnP;lyX&*peV%>xd9;42Tgh>j;ve+E z{eDdPeTX9nKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1pXC)4g8Imk(;rcKg@Vw zv6thV$MOe~#KO;3`N_Gn$lFRM_V&fEEovN?5$u4VSyO~`{!JDl;C3KHxyLfi#mhL^$ zXtK+7Y@ZvZH|gIjO`zvrV7s$}Z|!KUW(hri`L8`+rSCC)+)8%EH?}X`;Xi4DRon}D z{v)<~9H=;MeMekP&v#{epv&8HeZkLb=$^;+4Hk9XTMmgn(C?#R`=F{}?UhUmX7|@^WSVb#KPITStw% z{K`i$K#RbkfEybkEVKdnEr-l^R-Mo_D+6qwNNABn3iE7XAv>(O995n(s4h%&w9L^5 z(;}V}wrXK9;^e~cIS#S2Q`cysqbs!zwAew4k^D9PzK;NdO-^COz7Dt0l;_n|AxDgb zMRkoSDMri}7K7__F=cZ7`YG*Uo~{jBt!Xim6rx695mVl)45}`W+^<*0oOSmbq=kYM zk}_f8dTM&*C{z9ja((IwT3jWCMUJp2)g8IJ(QtINecaxZa|d;sXwgLqpB7>9 zP^7St<~C|CHhE^n+J7|A;wdRg4hReTG4Z~fD9CWED_!+2O}2;@4@jZ*6&9K87v5bA zZE6}AC|~{3DTDt6#gJ|lDW)rhMMQG@msM%DW;SMRUai)pB2v`OA;rWDS$}Ej0R*$b(+vJSpsogoSvN^hR)^W8;+5&ih=J)vzLSs4($bAS`@~??e{0q-rDf xCoC@4)ECohM38H^89!n2*YC&mMOii*W4|v5N;mZG=AP1@M=kwK%e-!5@e_$=%)opJXh#tkMCf~@l%&fRgue*PH-F!1D@yi~$s@>dCo$!8^%m>4=YD*h1PXfQ#1 IvZKc@04*LAHvj+t diff --git a/.gradle/8.12.1/checksums/sha1-checksums.bin b/.gradle/8.12.1/checksums/sha1-checksums.bin index 0842f928c6748c79bf550bbed49c8739304be767..71abd70d7e740e634974f2aa57a8a826cfebafbd 100644 GIT binary patch literal 20603 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 R`H0~+zhcGxNUgC({0~^~x8nc+ delta 755 zcmaENj`#8ejtL@+Y!gMj8Dlq2>=2*0z+keZgd;QKuFK7_65C@X7@HP3AGsVFfi zD^D^mO3cp7Dov?MOiId3ElE!;6$o0OBd3x6uF5X$UeET6lg^!B!VsEVI9GnV-EKx+ z7lCiC9`o+%-DG1va_gb-fd<{_AGa|6o*uV^DULZMF@JjEDkeDrZbyf*fb$b4bvB_W@->x^w0!!9ASP2$)rtQll6Oz*vYUHk zJ7ZpDC_@VGu)eJ#%nSlo3fufSc4xJ@dS`35 zK7Klvp)EH*B{hd}2BzNwaVDl0 z^}u>`83c?!%1u9_6qfMODT1@UNtSgYSko$YpbLtQvGV(`S+O&B>h*GgFp0U-=ddy< z*5B4XENsfNRD)wl?@G}alaJTHPHx}}_{N((|Pu+Wq&3TU5-dzY3NI0w2mtz)x0t#98&6&AQg-)%% nf3^J0!UgU67pC93_izo%^8A95%>2CV?WxQs7^jR diff --git a/.gradle/8.12.1/fileHashes/fileHashes.bin b/.gradle/8.12.1/fileHashes/fileHashes.bin index 2966008a2b1d09a7a2a4ab84b54d491a042305d1..9f39445b7a1e57fc4771252d9c2dfa042edd4e40 100644 GIT binary patch delta 1808 zcmX>(k8$HN#tkMCj24qkB`O3K%(OnM-K{?(JO zN(5+Z`z*dnE2>Hrs`5V!?3t3)qgmB+6Cxf^I$2gyLEv2M^2y(HidCQ{tetEsY2k1y zw>yC^;IuGQr6A0N`yMTVF>eI^L&O6w!^Gcs$1of#TKx&Ce);57$&LKpvDecdWY2&a z>^YfNDv&?!(QLu!3G5KDAoIzgQWhFg%NU;8MAW~63bMismHVC>QF!EXFH}5pa;ubu zfaL>zt7~;4?hwHM=gC{88Zs5+??zx9bl8!?^^W!Vb3L~ zVs4n?!kuE842F{;q2l>4aTv|Oz#6zw@rU?EgA+oN9X&$q_|INchA3wG3Z(UnfrKUy zD}u1VR=LiZZaEopcG0OnFYOfqN-$34e^HkPlmvph*OOU2H8%hD*u}&GG)HmrPVc&) z{??`oyQM4F^uFTU!f~~JFGvgDO~<7WEsUU`N3*1BtGCnFE{}$aPK&$#))J>7I^3b5 z$!s&Z)2A$mO?6jl)w_l4e!FJ6%=mab1mcoPXNa*ZpvXfr_QJ*QTXskv6}qwLMBE4K z;5ksYheLF52yG7ZzA%^41S&ib=F3Zav&Q^ zd@}s{lw_~PT(`XRagN}b?g?4X z0-}X=I;NH|qZ-MRYON|+UAoOX))!oZI%@+&2M;Hv4q<( z0uz+%ZQ8jSCNBmS{a_uSG71RTK_wlU9cnwKXx9YlGWg5&$8I?^siy#}<>I9junq=B iB}^^BQK{|HQpOVNl*CyX*6JLD=y(h*w3xqvbN~RBDhpQt delta 414 zcmdnEjPc|=#tkMCj4G2&B`PK#l`xphE9o)0RZ?Q|R!M`&x>74AzmxKq>?f^1d9Ad; zKu~BunblKc^KXw`Of0Oj!bOvJde;So zDm{4rI_J{_3Gq_B{DKprU@dZjB@itPPCy#XlDYHrQ?Pn&r%JJ UCA}*}V@y6mjS7P(Vgpfn06fKbvj6}9 diff --git a/.gradle/8.12.1/fileHashes/fileHashes.lock b/.gradle/8.12.1/fileHashes/fileHashes.lock index f23035d70686dd9cf7a8d93ab2261740648a4909..6ee57ebb188c305058cc9ec30b8be754f78a650a 100644 GIT binary patch literal 17 UcmZQh>*zYzk@YE<0SuU30XK~VyZ`_I literal 17 UcmZQh>*zYzk@YE<0SuUQ0XK65qW}N^ diff --git a/.gradle/8.12.1/fileHashes/resourceHashesCache.bin b/.gradle/8.12.1/fileHashes/resourceHashesCache.bin index 8d1dd82eb8298269a0dbfe06d92e68e2c269bc3e..e4c8adc0ca2e18a7781973953ad24a2775ce9333 100644 GIT binary patch delta 2716 zcmZwJ2~-nz9>8%xLRpS7sMv%f84xhqf`S|ose%v%6o@7v#PtBO&@@;?Eg}(3)BCcJ z7=l?ow#Ly-T&vl6j@7Q^>D7MDB zD$3}SoD=JPksi_yniq!XBm}SK$$z_zL}nI-b(-gl6%GXiq_di_PB=btxY|4ephMPz zCl=N#3{Fo|>|+O!#=eYMLtkCu^H%LGNDn;?lol}6NQ)y)T|Om72bf~mxJ;QpJ*ASM z*aQ$P*O?f`HTH0fYEdf%u9ghQtXe#wTjH@7g>m4RC5=j=DqJGMDtnN~evC~ets`$8 zq01-Ho(XC!X%O6I`0ml&*8(Imw}5_2F=W4GcpYOtMT|;qz_!|M5>ULy-(u(l3Twa_ zE10_G^_;PX-Pt50hBC23IX7)~yrN_;Lc0@au&RYNv~IF(T*hxjr!EJ($%W9?>$UvG z{=_^aa(O^Wh9QQ+apR`O&^<^Di3bD<4dV2rC<3}BhS10ct`wTr?&`Cdv6pBcqp=8E zKm>?C1^?i~A>#5sxC>3E^aiFq>?#80d}om*ZnrJTo$ z#wl4`@hnFM-!T>i2lTIBg(r;i1HAli?*{)m_%qAneTfh+uBiSK%Ac{gsk?2}1bb~Z z6E7@RZ1N@67@mx9`yqVlAEke>)KfrI)OCF*B2e#_2YyplzQ5v!Tx7k^z2SY;mOJbt zdSbh=8!t#B&PSrVqp3F8m&NCeoHOu3A+3=4Ipi^N|EcRP(U*+;L5R>F{(6e^?4i;N zN*9nWI56(i_y>ZD#0mc12B|XKK^SA>5cs1AFYFmpw~~XK@7ypf{3!l=-DbR43X?J} zBp%%mGVX6ezWi0RmX=8K{C=*N{lvrS@K&=?=Y++gp#`ET`bm$1W@A=_s8Ri0Hp7`iCXzdrsp*lW<)OCKs7E>HZSc zpcR!ch8JH!xL}T^IEh?ejm%H}t{jIFr950+5t3Rt}wFMC; zC3=F^&0`68@;CUtbX|N1!SdzjqRF&Ft-y505~p(^(n|gL@K;$cdrCX^tN%?kme1^b z9+bB`ziR72NowlYE+ZiEUm|+h>sf!Fv9#(_`oCXD4L-$xOK15Ody~6SD>rW!#SSFL zsh`Fgb4gvMC;F_*Y5#I7`TobNFV+9f8bU~Mx)^U?n41|bN#QgSmwpfn*9>x-H^?I) zC`eE`bo7SZ#Y_YBn}fy>$&6V(m$!D=mf}TH z%C6@FRmxz0=XO>>oYB*Ti%s(|MTaPn+g{w=)mEAQFyOXA{gl^O$Y@PDIcnRzRGXCz zJNM6zhu}p=Om;FidB)dQzbS3@UV{%_JR7*vF&yLTAhI3OIWAQ3qwvH@$m`u#qzpUr zorNN25!n_m;Ejb2D~@-bx>5#{d!;HSn@Sr@u9dEs ztSVD6`K*k@ +

Q9Dm_%YMMP9wlJ(@EXLs++Sdw~D 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 Bb2 getCompanyPrice(@RequestParam String companyCode, @RequestParam String startDate, @RequestParam String endDate) throws ParseException { - return companyService.getCompanyStockHistory(companyCode, startDate, endDate); + public List getCompanyPrice( + @RequestHeader(value = "x-api-key", required = false) String apiKeyHeader, + @RequestParam(required = false) String companyCode, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + requestValidator.validateApiKey(apiKeyHeader); + requestValidator.validateRequestParams(companyCode,startDate,endDate); + + return companyService.getCompanyStockHistory(companyCode, startDate, endDate); } } diff --git a/src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java b/src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java deleted file mode 100644 index e7fa94b..0000000 --- a/src/main/java/ktb/back/assignment/dao/StockHistoryRepository.java +++ /dev/null @@ -1,33 +0,0 @@ -package ktb.back.assignment.dao; - -import ktb.back.assignment.model.ResponseCompanyDto; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Repository; - -import java.util.Date; -import java.util.List; - -@Repository -public class StockHistoryRepository { - private final JdbcTemplate jdbcTemplate; - - public StockHistoryRepository(JdbcTemplate jdbcTemplate){ - this.jdbcTemplate = jdbcTemplate; - } - - public List findCompanyStockHistory(String companyCode, Date startDate, Date endDate){ - String sql = """ - SELECT c.company_name , s.trade_date, s.close_price - FROM company c - JOIN stocks_history s ON c.company_code = s.company_code - WHERE c.company_code = ? AND s.trade_date BETWEEN ? AND ? - ORDER BY s.trade_date - """; - - return jdbcTemplate.query(sql,(rs, rowNum) -> new ResponseCompanyDto( - rs.getString("company_name"), - rs.getString("trade_date"), - rs.getFloat("close_price") - ), companyCode,startDate,endDate); - } -} diff --git a/src/main/java/ktb/back/assignment/dto/RequestCompanyStockHistory.java b/src/main/java/ktb/back/assignment/dto/RequestCompanyStockHistory.java new file mode 100644 index 0000000..7138975 --- /dev/null +++ b/src/main/java/ktb/back/assignment/dto/RequestCompanyStockHistory.java @@ -0,0 +1,18 @@ +package ktb.back.assignment.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class RequestCompanyStockHistory { + @NotNull(message = "companyCode 파라미터가 필요합니다.") + private String companyCode; + + @NotNull(message = "startDate 파라미터가 필요합니다.") + private String startDate; + + @NotNull(message = "endDate 파라미터가 필요합니다.") + private String endDate; +} diff --git a/src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java b/src/main/java/ktb/back/assignment/dto/ResponseCompanyStockHistory.java similarity index 52% rename from src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java rename to src/main/java/ktb/back/assignment/dto/ResponseCompanyStockHistory.java index ef00f23..b3fbe92 100644 --- a/src/main/java/ktb/back/assignment/model/ResponseCompanyDto.java +++ b/src/main/java/ktb/back/assignment/dto/ResponseCompanyStockHistory.java @@ -1,12 +1,14 @@ -package ktb.back.assignment.model; +package ktb.back.assignment.dto; import lombok.AllArgsConstructor; import lombok.Getter; +import java.time.LocalDate; + @Getter @AllArgsConstructor -public class ResponseCompanyDto { +public class ResponseCompanyStockHistory { private String companyName; - private String tradeDate; + private LocalDate tradeDate; private float closingPrice; } diff --git a/src/main/java/ktb/back/assignment/global/exception/ApiException.java b/src/main/java/ktb/back/assignment/global/exception/ApiException.java new file mode 100644 index 0000000..d8a1a88 --- /dev/null +++ b/src/main/java/ktb/back/assignment/global/exception/ApiException.java @@ -0,0 +1,14 @@ +package ktb.back.assignment.global.exception; + +import lombok.Getter; +import org.springframework.http.HttpStatus; + +@Getter +public class ApiException extends RuntimeException{ + private final HttpStatus status; + + public ApiException(String message, HttpStatus status){ + super(message); + this.status = status; + } +} diff --git a/src/main/java/ktb/back/assignment/global/exception/ErrorResponse.java b/src/main/java/ktb/back/assignment/global/exception/ErrorResponse.java new file mode 100644 index 0000000..5155d3f --- /dev/null +++ b/src/main/java/ktb/back/assignment/global/exception/ErrorResponse.java @@ -0,0 +1,11 @@ +package ktb.back.assignment.global.exception; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class ErrorResponse { + private int status; + private String messgae; +} diff --git a/src/main/java/ktb/back/assignment/global/exception/GlobalExceptionHandler.java b/src/main/java/ktb/back/assignment/global/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..a6c457c --- /dev/null +++ b/src/main/java/ktb/back/assignment/global/exception/GlobalExceptionHandler.java @@ -0,0 +1,17 @@ +package ktb.back.assignment.global.exception; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +@RequestMapping(produces = "application/json") +public class GlobalExceptionHandler { + + @ExceptionHandler(ApiException.class) + public ResponseEntity handleApiException(ApiException ex) { + ErrorResponse errorResponse = new ErrorResponse(ex.getStatus().value(),ex.getMessage()); + return ResponseEntity.status(ex.getStatus()).body(errorResponse); + } +} diff --git a/src/main/java/ktb/back/assignment/global/validator/RequestValidator.java b/src/main/java/ktb/back/assignment/global/validator/RequestValidator.java new file mode 100644 index 0000000..65cbcbe --- /dev/null +++ b/src/main/java/ktb/back/assignment/global/validator/RequestValidator.java @@ -0,0 +1,28 @@ +package ktb.back.assignment.global.validator; + +import ktb.back.assignment.global.exception.ApiException; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; + +@Component +public class RequestValidator { + private static final String VALID_API_KEY = "c18aa07f-f005-4c2f-b6db-dff8294e6b5e"; + + public void validateApiKey(String apiKey){ + if(apiKey == null || apiKey.isBlank()){ + throw new ApiException("API Key가 없습니다.", HttpStatus.BAD_REQUEST); + }else if(!apiKey.equals(VALID_API_KEY)){ + throw new ApiException("잘못된 API Key입니다.",HttpStatus.FORBIDDEN); + } + } + + public void validateRequestParams(String companyCode,String startDate, String endDate){ + if(companyCode == null || companyCode.isBlank()){ + throw new ApiException("companyCode 파라미터가 필요합니다.", HttpStatus.BAD_REQUEST); + } else if (startDate == null || startDate.isBlank()) { + throw new ApiException("startDate 파라미터가 필요합니다.", HttpStatus.BAD_REQUEST); + } else if (endDate == null || endDate.isBlank()) { + throw new ApiException("endDate 파라미터가 필요합니다.", HttpStatus.BAD_REQUEST); + } + } +} diff --git a/src/main/java/ktb/back/assignment/model/RequestCompanyDto.java b/src/main/java/ktb/back/assignment/model/RequestCompanyDto.java deleted file mode 100644 index 0461539..0000000 --- a/src/main/java/ktb/back/assignment/model/RequestCompanyDto.java +++ /dev/null @@ -1,12 +0,0 @@ -package ktb.back.assignment.model; - -import lombok.Getter; - -import java.time.LocalDate; - -@Getter -public class RequestCompanyDto { - private String company_code; - private LocalDate startDate; - private LocalDate endDate; -} diff --git a/src/main/java/ktb/back/assignment/repository/StockHistoryRepository.java b/src/main/java/ktb/back/assignment/repository/StockHistoryRepository.java new file mode 100644 index 0000000..3823e6d --- /dev/null +++ b/src/main/java/ktb/back/assignment/repository/StockHistoryRepository.java @@ -0,0 +1,11 @@ +package ktb.back.assignment.repository; + +import ktb.back.assignment.dto.ResponseCompanyStockHistory; + +import java.time.LocalDate; +import java.util.List; + +public interface StockHistoryRepository { + + public List findCompanyStockHistory(String companyCode, LocalDate startDate, LocalDate endDate); +} diff --git a/src/main/java/ktb/back/assignment/repository/StockHistoryRepositoryImpl.java b/src/main/java/ktb/back/assignment/repository/StockHistoryRepositoryImpl.java new file mode 100644 index 0000000..261bdfd --- /dev/null +++ b/src/main/java/ktb/back/assignment/repository/StockHistoryRepositoryImpl.java @@ -0,0 +1,39 @@ +package ktb.back.assignment.repository; + +import ktb.back.assignment.dto.ResponseCompanyStockHistory; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.time.LocalDate; +import java.util.List; + +@Repository +public class StockHistoryRepositoryImpl implements StockHistoryRepository{ + private final JdbcTemplate jdbcTemplate; + + public StockHistoryRepositoryImpl(JdbcTemplate jdbcTemplate){ + this.jdbcTemplate = jdbcTemplate; + } + + @Override + public List findCompanyStockHistory(String companyCode, LocalDate startDate, LocalDate endDate){ + String sql = """ + SELECT c.company_name , s.trade_date, s.close_price + FROM company c + JOIN stocks_history s ON c.company_code = s.company_code + WHERE c.company_code = ? AND s.trade_date BETWEEN ? AND ? + ORDER BY s.trade_date + """; + + return jdbcTemplate.query(sql,companyStockRowMapper(), companyCode,startDate,endDate); + } + + private RowMapper companyStockRowMapper(){ + return (rs,rowNum) -> new ResponseCompanyStockHistory( + rs.getString("company_name"), + rs.getDate("trade_date").toLocalDate(), + rs.getFloat("close_price") + ); + } +} diff --git a/src/main/java/ktb/back/assignment/service/CompanyService.java b/src/main/java/ktb/back/assignment/service/CompanyService.java index 5d691df..b28bd12 100644 --- a/src/main/java/ktb/back/assignment/service/CompanyService.java +++ b/src/main/java/ktb/back/assignment/service/CompanyService.java @@ -1,26 +1,23 @@ package ktb.back.assignment.service; -import ktb.back.assignment.dao.StockHistoryRepository; -import ktb.back.assignment.model.ResponseCompanyDto; +import ktb.back.assignment.dto.ResponseCompanyStockHistory; +import ktb.back.assignment.repository.StockHistoryRepositoryImpl; import org.springframework.stereotype.Service; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.time.LocalDate; import java.util.List; @Service public class CompanyService { - private final StockHistoryRepository stockHistoryRepository; - private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private final StockHistoryRepositoryImpl stockHistoryRepository; - public CompanyService(StockHistoryRepository stockHistoryRepository){ + public CompanyService(StockHistoryRepositoryImpl stockHistoryRepository){ this.stockHistoryRepository = stockHistoryRepository; } - public List getCompanyStockHistory(String companyCode, String startDate, String endDate) throws ParseException { - Date start = dateFormat.parse(startDate); - Date end = dateFormat.parse(endDate); + public List getCompanyStockHistory(String companyCode, String startDate, String endDate) { + LocalDate start = LocalDate.parse(startDate); + LocalDate end = LocalDate.parse(endDate); return stockHistoryRepository.findCompanyStockHistory(companyCode,start,end); } }