From 33bd1122edb25f45c2160f0f3eba7d0b2dcc4c9a Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 04:41:07 +0900 Subject: [PATCH 01/29] feat: init-setting --- .gitattributes | 3 + .gitignore | 37 ++++ build.gradle | 51 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 252 +++++++++++++++++++++++ gradlew.bat | 94 +++++++++ settings.gradle | 1 + 8 files changed, 445 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 build.gradle 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 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..8af972cde --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c2065bc26 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..b219132a0 --- /dev/null +++ b/build.gradle @@ -0,0 +1,51 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.4.2' apply(false) + id 'io.spring.dependency-management' version '1.1.7' apply(false) +} + +allprojects { + group = 'hanghae' + version = '0.0.1-SNAPSHOT' + + jar { + enabled = true + } + + repositories { + mavenCentral() + } +} + +subprojects { + apply plugin: 'java' + apply plugin: 'org.springframework.boot' + apply plugin: 'io.spring.dependency-management' + + java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } + + configurations { + compileOnly { + extendsFrom annotationProcessor + } + } + + dependencies { + implementation 'org.springframework.boot:spring-boot-starter' + + compileOnly 'org.projectlombok:lombok' + + annotationProcessor 'org.projectlombok:lombok' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + } + + tasks.named('test') { + useJUnitPlatform() + } +} \ No newline at end of file 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 zcma&N1CXTcmMvW9vTb(Rwr$&4wr$(C?dmSu>@vG-+vuvg^_??!{yS%8zW-#zn-LkA z5&1^$^{lnmUON?}LBF8_K|(?T0Ra(xUH{($5eN!MR#ZihR#HxkUPe+_R8Cn`RRs(P z_^*#_XlXmGv7!4;*Y%p4nw?{bNp@UZHv1?Um8r6)Fei3p@ClJn0ECfg1hkeuUU@Or zDaPa;U3fE=3L}DooL;8f;P0ipPt0Z~9P0)lbStMS)ag54=uL9ia-Lm3nh|@(Y?B`; zx_#arJIpXH!U{fbCbI^17}6Ri*H<>OLR%c|^mh8+)*h~K8Z!9)DPf zR2h?lbDZQ`p9P;&DQ4F0sur@TMa!Y}S8irn(%d-gi0*WxxCSk*A?3lGh=gcYN?FGl z7D=Js!i~0=u3rox^eO3i@$0=n{K1lPNU zwmfjRVmLOCRfe=seV&P*1Iq=^i`502keY8Uy-WNPwVNNtJFx?IwAyRPZo2Wo1+S(xF37LJZ~%i)kpFQ3Fw=mXfd@>%+)RpYQLnr}B~~zoof(JVm^^&f zxKV^+3D3$A1G;qh4gPVjhrC8e(VYUHv#dy^)(RoUFM?o%W-EHxufuWf(l*@-l+7vt z=l`qmR56K~F|v<^Pd*p~1_y^P0P^aPC##d8+HqX4IR1gu+7w#~TBFphJxF)T$2WEa zxa?H&6=Qe7d(#tha?_1uQys2KtHQ{)Qco)qwGjrdNL7thd^G5i8Os)CHqc>iOidS} z%nFEDdm=GXBw=yXe1W-ShHHFb?Cc70+$W~z_+}nAoHFYI1MV1wZegw*0y^tC*s%3h zhD3tN8b=Gv&rj}!SUM6|ajSPp*58KR7MPpI{oAJCtY~JECm)*m_x>AZEu>DFgUcby z1Qaw8lU4jZpQ_$;*7RME+gq1KySGG#Wql>aL~k9tLrSO()LWn*q&YxHEuzmwd1?aAtI zBJ>P=&$=l1efe1CDU;`Fd+_;&wI07?V0aAIgc(!{a z0Jg6Y=inXc3^n!U0Atk`iCFIQooHqcWhO(qrieUOW8X(x?(RD}iYDLMjSwffH2~tB z)oDgNBLB^AJBM1M^c5HdRx6fBfka`(LD-qrlh5jqH~);#nw|iyp)()xVYak3;Ybik z0j`(+69aK*B>)e_p%=wu8XC&9e{AO4c~O1U`5X9}?0mrd*m$_EUek{R?DNSh(=br# z#Q61gBzEpmy`$pA*6!87 zSDD+=@fTY7<4A?GLqpA?Pb2z$pbCc4B4zL{BeZ?F-8`s$?>*lXXtn*NC61>|*w7J* z$?!iB{6R-0=KFmyp1nnEmLsA-H0a6l+1uaH^g%c(p{iT&YFrbQ$&PRb8Up#X3@Zsk zD^^&LK~111%cqlP%!_gFNa^dTYT?rhkGl}5=fL{a`UViaXWI$k-UcHJwmaH1s=S$4 z%4)PdWJX;hh5UoK?6aWoyLxX&NhNRqKam7tcOkLh{%j3K^4Mgx1@i|Pi&}<^5>hs5 zm8?uOS>%)NzT(%PjVPGa?X%`N2TQCKbeH2l;cTnHiHppPSJ<7y-yEIiC!P*ikl&!B z%+?>VttCOQM@ShFguHVjxX^?mHX^hSaO_;pnyh^v9EumqSZTi+#f&_Vaija0Q-e*| z7ulQj6Fs*bbmsWp{`auM04gGwsYYdNNZcg|ph0OgD>7O}Asn7^Z=eI>`$2*v78;sj-}oMoEj&@)9+ycEOo92xSyY344^ z11Hb8^kdOvbf^GNAK++bYioknrpdN>+u8R?JxG=!2Kd9r=YWCOJYXYuM0cOq^FhEd zBg2puKy__7VT3-r*dG4c62Wgxi52EMCQ`bKgf*#*ou(D4-ZN$+mg&7$u!! z-^+Z%;-3IDwqZ|K=ah85OLwkO zKxNBh+4QHh)u9D?MFtpbl)us}9+V!D%w9jfAMYEb>%$A;u)rrI zuBudh;5PN}_6J_}l55P3l_)&RMlH{m!)ai-i$g)&*M`eN$XQMw{v^r@-125^RRCF0 z^2>|DxhQw(mtNEI2Kj(;KblC7x=JlK$@78`O~>V!`|1Lm-^JR$-5pUANAnb(5}B}JGjBsliK4& zk6y(;$e&h)lh2)L=bvZKbvh@>vLlreBdH8No2>$#%_Wp1U0N7Ank!6$dFSi#xzh|( zRi{Uw%-4W!{IXZ)fWx@XX6;&(m_F%c6~X8hx=BN1&q}*( zoaNjWabE{oUPb!Bt$eyd#$5j9rItB-h*5JiNi(v^e|XKAj*8(k<5-2$&ZBR5fF|JA z9&m4fbzNQnAU}r8ab>fFV%J0z5awe#UZ|bz?Ur)U9bCIKWEzi2%A+5CLqh?}K4JHi z4vtM;+uPsVz{Lfr;78W78gC;z*yTch~4YkLr&m-7%-xc ztw6Mh2d>_iO*$Rd8(-Cr1_V8EO1f*^@wRoSozS) zy1UoC@pruAaC8Z_7~_w4Q6n*&B0AjOmMWa;sIav&gu z|J5&|{=a@vR!~k-OjKEgPFCzcJ>#A1uL&7xTDn;{XBdeM}V=l3B8fE1--DHjSaxoSjNKEM9|U9#m2<3>n{Iuo`r3UZp;>GkT2YBNAh|b z^jTq-hJp(ebZh#Lk8hVBP%qXwv-@vbvoREX$TqRGTgEi$%_F9tZES@z8Bx}$#5eeG zk^UsLBH{bc2VBW)*EdS({yw=?qmevwi?BL6*=12k9zM5gJv1>y#ML4!)iiPzVaH9% zgSImetD@dam~e>{LvVh!phhzpW+iFvWpGT#CVE5TQ40n%F|p(sP5mXxna+Ev7PDwA zamaV4m*^~*xV+&p;W749xhb_X=$|LD;FHuB&JL5?*Y2-oIT(wYY2;73<^#46S~Gx| z^cez%V7x$81}UWqS13Gz80379Rj;6~WdiXWOSsdmzY39L;Hg3MH43o*y8ibNBBH`(av4|u;YPq%{R;IuYow<+GEsf@R?=@tT@!}?#>zIIn0CoyV!hq3mw zHj>OOjfJM3F{RG#6ujzo?y32m^tgSXf@v=J$ELdJ+=5j|=F-~hP$G&}tDZsZE?5rX ztGj`!S>)CFmdkccxM9eGIcGnS2AfK#gXwj%esuIBNJQP1WV~b~+D7PJTmWGTSDrR` zEAu4B8l>NPuhsk5a`rReSya2nfV1EK01+G!x8aBdTs3Io$u5!6n6KX%uv@DxAp3F@{4UYg4SWJtQ-W~0MDb|j-$lwVn znAm*Pl!?Ps&3wO=R115RWKb*JKoexo*)uhhHBncEDMSVa_PyA>k{Zm2(wMQ(5NM3# z)jkza|GoWEQo4^s*wE(gHz?Xsg4`}HUAcs42cM1-qq_=+=!Gk^y710j=66(cSWqUe zklbm8+zB_syQv5A2rj!Vbw8;|$@C!vfNmNV!yJIWDQ>{+2x zKjuFX`~~HKG~^6h5FntRpnnHt=D&rq0>IJ9#F0eM)Y-)GpRjiN7gkA8wvnG#K=q{q z9dBn8_~wm4J<3J_vl|9H{7q6u2A!cW{bp#r*-f{gOV^e=8S{nc1DxMHFwuM$;aVI^ zz6A*}m8N-&x8;aunp1w7_vtB*pa+OYBw=TMc6QK=mbA-|Cf* zvyh8D4LRJImooUaSb7t*fVfih<97Gf@VE0|z>NcBwBQze);Rh!k3K_sfunToZY;f2 z^HmC4KjHRVg+eKYj;PRN^|E0>Gj_zagfRbrki68I^#~6-HaHg3BUW%+clM1xQEdPYt_g<2K+z!$>*$9nQ>; zf9Bei{?zY^-e{q_*|W#2rJG`2fy@{%6u0i_VEWTq$*(ZN37|8lFFFt)nCG({r!q#9 z5VK_kkSJ3?zOH)OezMT{!YkCuSSn!K#-Rhl$uUM(bq*jY? zi1xbMVthJ`E>d>(f3)~fozjg^@eheMF6<)I`oeJYx4*+M&%c9VArn(OM-wp%M<-`x z7sLP1&3^%Nld9Dhm@$3f2}87!quhI@nwd@3~fZl_3LYW-B?Ia>ui`ELg z&Qfe!7m6ze=mZ`Ia9$z|ARSw|IdMpooY4YiPN8K z4B(ts3p%2i(Td=tgEHX z0UQ_>URBtG+-?0E;E7Ld^dyZ;jjw0}XZ(}-QzC6+NN=40oDb2^v!L1g9xRvE#@IBR zO!b-2N7wVfLV;mhEaXQ9XAU+>=XVA6f&T4Z-@AX!leJ8obP^P^wP0aICND?~w&NykJ#54x3_@r7IDMdRNy4Hh;h*!u(Ol(#0bJdwEo$5437-UBjQ+j=Ic>Q2z` zJNDf0yO6@mr6y1#n3)s(W|$iE_i8r@Gd@!DWDqZ7J&~gAm1#~maIGJ1sls^gxL9LLG_NhU!pTGty!TbhzQnu)I*S^54U6Yu%ZeCg`R>Q zhBv$n5j0v%O_j{QYWG!R9W?5_b&67KB$t}&e2LdMvd(PxN6Ir!H4>PNlerpBL>Zvyy!yw z-SOo8caEpDt(}|gKPBd$qND5#a5nju^O>V&;f890?yEOfkSG^HQVmEbM3Ugzu+UtH zC(INPDdraBN?P%kE;*Ae%Wto&sgw(crfZ#Qy(<4nk;S|hD3j{IQRI6Yq|f^basLY; z-HB&Je%Gg}Jt@={_C{L$!RM;$$|iD6vu#3w?v?*;&()uB|I-XqEKqZPS!reW9JkLewLb!70T7n`i!gNtb1%vN- zySZj{8-1>6E%H&=V}LM#xmt`J3XQoaD|@XygXjdZ1+P77-=;=eYpoEQ01B@L*a(uW zrZeZz?HJsw_4g0vhUgkg@VF8<-X$B8pOqCuWAl28uB|@r`19DTUQQsb^pfqB6QtiT z*`_UZ`fT}vtUY#%sq2{rchyfu*pCg;uec2$-$N_xgjZcoumE5vSI{+s@iLWoz^Mf; zuI8kDP{!XY6OP~q5}%1&L}CtfH^N<3o4L@J@zg1-mt{9L`s^z$Vgb|mr{@WiwAqKg zp#t-lhrU>F8o0s1q_9y`gQNf~Vb!F%70f}$>i7o4ho$`uciNf=xgJ>&!gSt0g;M>*x4-`U)ysFW&Vs^Vk6m%?iuWU+o&m(2Jm26Y(3%TL; zA7T)BP{WS!&xmxNw%J=$MPfn(9*^*TV;$JwRy8Zl*yUZi8jWYF>==j~&S|Xinsb%c z2?B+kpet*muEW7@AzjBA^wAJBY8i|#C{WtO_or&Nj2{=6JTTX05}|H>N2B|Wf!*3_ z7hW*j6p3TvpghEc6-wufFiY!%-GvOx*bZrhZu+7?iSrZL5q9}igiF^*R3%DE4aCHZ zqu>xS8LkW+Auv%z-<1Xs92u23R$nk@Pk}MU5!gT|c7vGlEA%G^2th&Q*zfg%-D^=f z&J_}jskj|Q;73NP4<4k*Y%pXPU2Thoqr+5uH1yEYM|VtBPW6lXaetokD0u z9qVek6Q&wk)tFbQ8(^HGf3Wp16gKmr>G;#G(HRBx?F`9AIRboK+;OfHaLJ(P>IP0w zyTbTkx_THEOs%Q&aPrxbZrJlio+hCC_HK<4%f3ZoSAyG7Dn`=X=&h@m*|UYO-4Hq0 z-Bq&+Ie!S##4A6OGoC~>ZW`Y5J)*ouaFl_e9GA*VSL!O_@xGiBw!AF}1{tB)z(w%c zS1Hmrb9OC8>0a_$BzeiN?rkPLc9%&;1CZW*4}CDDNr2gcl_3z+WC15&H1Zc2{o~i) z)LLW=WQ{?ricmC`G1GfJ0Yp4Dy~Ba;j6ZV4r{8xRs`13{dD!xXmr^Aga|C=iSmor% z8hi|pTXH)5Yf&v~exp3o+sY4B^^b*eYkkCYl*T{*=-0HniSA_1F53eCb{x~1k3*`W zr~};p1A`k{1DV9=UPnLDgz{aJH=-LQo<5%+Em!DNN252xwIf*wF_zS^!(XSm(9eoj z=*dXG&n0>)_)N5oc6v!>-bd(2ragD8O=M|wGW z!xJQS<)u70m&6OmrF0WSsr@I%T*c#Qo#Ha4d3COcX+9}hM5!7JIGF>7<~C(Ear^Sn zm^ZFkV6~Ula6+8S?oOROOA6$C&q&dp`>oR-2Ym3(HT@O7Sd5c~+kjrmM)YmgPH*tL zX+znN>`tv;5eOfX?h{AuX^LK~V#gPCu=)Tigtq9&?7Xh$qN|%A$?V*v=&-2F$zTUv z`C#WyIrChS5|Kgm_GeudCFf;)!WH7FI60j^0o#65o6`w*S7R@)88n$1nrgU(oU0M9 zx+EuMkC>(4j1;m6NoGqEkpJYJ?vc|B zOlwT3t&UgL!pX_P*6g36`ZXQ; z9~Cv}ANFnJGp(;ZhS(@FT;3e)0)Kp;h^x;$*xZn*k0U6-&FwI=uOGaODdrsp-!K$Ac32^c{+FhI-HkYd5v=`PGsg%6I`4d9Jy)uW0y%) zm&j^9WBAp*P8#kGJUhB!L?a%h$hJgQrx!6KCB_TRo%9{t0J7KW8!o1B!NC)VGLM5! zpZy5Jc{`r{1e(jd%jsG7k%I+m#CGS*BPA65ZVW~fLYw0dA-H_}O zrkGFL&P1PG9p2(%QiEWm6x;U-U&I#;Em$nx-_I^wtgw3xUPVVu zqSuKnx&dIT-XT+T10p;yjo1Y)z(x1fb8Dzfn8e 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 000000000..e2847c820 --- /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.11.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 000000000..f5feea6d6 --- /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 000000000..9d21a2183 --- /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 000000000..ff40b7967 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'movie-app' From 5c06a85458cb53fb409a926da2bcba2bb90da084 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 04:55:34 +0900 Subject: [PATCH 02/29] feat: setup for multi-module --- api/.gitattributes | 3 + api/.gitignore | 37 +++ api/build.gradle | 4 + api/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes api/gradle/wrapper/gradle-wrapper.properties | 7 + api/gradlew | 252 ++++++++++++++++++ api/gradlew.bat | 94 +++++++ .../main/java/hanghae/api/ApiApplication.java | 20 ++ api/src/main/resources/application.yml | 3 + .../java/hanghae/api/ApiApplicationTests.java | 13 + application/.gitattributes | 3 + application/.gitignore | 37 +++ application/build.gradle | 3 + application/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + application/gradlew | 252 ++++++++++++++++++ application/gradlew.bat | 94 +++++++ .../java/hanghae/application/Application.java | 13 + .../src/main/resources/application.properties | 1 + .../hanghae/application/ApplicationTests.java | 13 + build.gradle | 1 + domain/.gitattributes | 3 + domain/.gitignore | 37 +++ domain/build.gradle | 3 + domain/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + domain/gradlew | 252 ++++++++++++++++++ domain/gradlew.bat | 94 +++++++ .../hanghae/domain/DomainApplication.java | 13 + .../src/main/resources/application.properties | 1 + .../domain/DomainApplicationTests.java | 13 + infrastructure/.gitattributes | 3 + infrastructure/.gitignore | 37 +++ infrastructure/build.gradle | 3 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + infrastructure/gradlew | 252 ++++++++++++++++++ infrastructure/gradlew.bat | 94 +++++++ .../InfrastructureApplication.java | 13 + .../src/main/resources/application.properties | 1 + .../InfrastructureApplicationTests.java | 13 + settings.gradle | 5 + 42 files changed, 1708 insertions(+) create mode 100644 api/.gitattributes create mode 100644 api/.gitignore create mode 100644 api/build.gradle create mode 100644 api/gradle/wrapper/gradle-wrapper.jar create mode 100644 api/gradle/wrapper/gradle-wrapper.properties create mode 100755 api/gradlew create mode 100644 api/gradlew.bat create mode 100644 api/src/main/java/hanghae/api/ApiApplication.java create mode 100644 api/src/main/resources/application.yml create mode 100644 api/src/test/java/hanghae/api/ApiApplicationTests.java create mode 100644 application/.gitattributes create mode 100644 application/.gitignore create mode 100644 application/build.gradle create mode 100644 application/gradle/wrapper/gradle-wrapper.jar create mode 100644 application/gradle/wrapper/gradle-wrapper.properties create mode 100755 application/gradlew create mode 100644 application/gradlew.bat create mode 100644 application/src/main/java/hanghae/application/Application.java create mode 100644 application/src/main/resources/application.properties create mode 100644 application/src/test/java/hanghae/application/ApplicationTests.java create mode 100644 domain/.gitattributes create mode 100644 domain/.gitignore create mode 100644 domain/build.gradle create mode 100644 domain/gradle/wrapper/gradle-wrapper.jar create mode 100644 domain/gradle/wrapper/gradle-wrapper.properties create mode 100755 domain/gradlew create mode 100644 domain/gradlew.bat create mode 100644 domain/src/main/java/hanghae/domain/DomainApplication.java create mode 100644 domain/src/main/resources/application.properties create mode 100644 domain/src/test/java/hanghae/domain/DomainApplicationTests.java create mode 100644 infrastructure/.gitattributes create mode 100644 infrastructure/.gitignore create mode 100644 infrastructure/build.gradle create mode 100644 infrastructure/gradle/wrapper/gradle-wrapper.jar create mode 100644 infrastructure/gradle/wrapper/gradle-wrapper.properties create mode 100755 infrastructure/gradlew create mode 100644 infrastructure/gradlew.bat create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java create mode 100644 infrastructure/src/main/resources/application.properties create mode 100644 infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java diff --git a/api/.gitattributes b/api/.gitattributes new file mode 100644 index 000000000..8af972cde --- /dev/null +++ b/api/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 000000000..c2065bc26 --- /dev/null +++ b/api/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/api/build.gradle b/api/build.gradle new file mode 100644 index 000000000..4411c175f --- /dev/null +++ b/api/build.gradle @@ -0,0 +1,4 @@ +bootJar { + enabled = true + mainClass = 'hanghae.api.ApiApplication' +} \ No newline at end of file diff --git a/api/gradle/wrapper/gradle-wrapper.jar b/api/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/api/gradle/wrapper/gradle-wrapper.properties b/api/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..e2847c820 --- /dev/null +++ b/api/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/api/gradlew b/api/gradlew new file mode 100755 index 000000000..f5feea6d6 --- /dev/null +++ b/api/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/api/gradlew.bat b/api/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/api/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/api/src/main/java/hanghae/api/ApiApplication.java b/api/src/main/java/hanghae/api/ApiApplication.java new file mode 100644 index 000000000..1f6cba154 --- /dev/null +++ b/api/src/main/java/hanghae/api/ApiApplication.java @@ -0,0 +1,20 @@ +package hanghae.api; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication( + scanBasePackages = { + "hanghae.common", + "hanghae.api", + "hanghae.application", + "hanghae.domain", + "hanghae.infrastructure" + } +) +public class ApiApplication { + + public static void main(String[] args) { + SpringApplication.run(ApiApplication.class, args); + } +} diff --git a/api/src/main/resources/application.yml b/api/src/main/resources/application.yml new file mode 100644 index 000000000..c67d487cb --- /dev/null +++ b/api/src/main/resources/application.yml @@ -0,0 +1,3 @@ +spring: + application: + name: api \ No newline at end of file diff --git a/api/src/test/java/hanghae/api/ApiApplicationTests.java b/api/src/test/java/hanghae/api/ApiApplicationTests.java new file mode 100644 index 000000000..a7e47dba0 --- /dev/null +++ b/api/src/test/java/hanghae/api/ApiApplicationTests.java @@ -0,0 +1,13 @@ +package hanghae.api; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ApiApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/application/.gitattributes b/application/.gitattributes new file mode 100644 index 000000000..8af972cde --- /dev/null +++ b/application/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/application/.gitignore b/application/.gitignore new file mode 100644 index 000000000..c2065bc26 --- /dev/null +++ b/application/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/application/build.gradle b/application/build.gradle new file mode 100644 index 000000000..0cd1dbc92 --- /dev/null +++ b/application/build.gradle @@ -0,0 +1,3 @@ +bootJar { + enabled = false +} diff --git a/application/gradle/wrapper/gradle-wrapper.jar b/application/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/application/gradle/wrapper/gradle-wrapper.properties b/application/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..e2847c820 --- /dev/null +++ b/application/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/application/gradlew b/application/gradlew new file mode 100755 index 000000000..f5feea6d6 --- /dev/null +++ b/application/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/application/gradlew.bat b/application/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/application/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/application/src/main/java/hanghae/application/Application.java b/application/src/main/java/hanghae/application/Application.java new file mode 100644 index 000000000..1312dfe11 --- /dev/null +++ b/application/src/main/java/hanghae/application/Application.java @@ -0,0 +1,13 @@ +package hanghae.application; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/application/src/main/resources/application.properties b/application/src/main/resources/application.properties new file mode 100644 index 000000000..009783b16 --- /dev/null +++ b/application/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=application diff --git a/application/src/test/java/hanghae/application/ApplicationTests.java b/application/src/test/java/hanghae/application/ApplicationTests.java new file mode 100644 index 000000000..1158065d5 --- /dev/null +++ b/application/src/test/java/hanghae/application/ApplicationTests.java @@ -0,0 +1,13 @@ +package hanghae.application; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/build.gradle b/build.gradle index b219132a0..1350653f9 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,7 @@ subprojects { dependencies { implementation 'org.springframework.boot:spring-boot-starter' + implementation 'org.projectlombok:lombok' compileOnly 'org.projectlombok:lombok' diff --git a/domain/.gitattributes b/domain/.gitattributes new file mode 100644 index 000000000..8af972cde --- /dev/null +++ b/domain/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/domain/.gitignore b/domain/.gitignore new file mode 100644 index 000000000..c2065bc26 --- /dev/null +++ b/domain/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/domain/build.gradle b/domain/build.gradle new file mode 100644 index 000000000..0109b8142 --- /dev/null +++ b/domain/build.gradle @@ -0,0 +1,3 @@ +bootJar { + enabled = false +} \ No newline at end of file diff --git a/domain/gradle/wrapper/gradle-wrapper.jar b/domain/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/domain/gradle/wrapper/gradle-wrapper.properties b/domain/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..e2847c820 --- /dev/null +++ b/domain/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/domain/gradlew b/domain/gradlew new file mode 100755 index 000000000..f5feea6d6 --- /dev/null +++ b/domain/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/domain/gradlew.bat b/domain/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/domain/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/domain/src/main/java/hanghae/domain/DomainApplication.java b/domain/src/main/java/hanghae/domain/DomainApplication.java new file mode 100644 index 000000000..f43248ec3 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/DomainApplication.java @@ -0,0 +1,13 @@ +package hanghae.domain; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DomainApplication { + + public static void main(String[] args) { + SpringApplication.run(DomainApplication.class, args); + } + +} diff --git a/domain/src/main/resources/application.properties b/domain/src/main/resources/application.properties new file mode 100644 index 000000000..cd051b011 --- /dev/null +++ b/domain/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=domain diff --git a/domain/src/test/java/hanghae/domain/DomainApplicationTests.java b/domain/src/test/java/hanghae/domain/DomainApplicationTests.java new file mode 100644 index 000000000..3475ab502 --- /dev/null +++ b/domain/src/test/java/hanghae/domain/DomainApplicationTests.java @@ -0,0 +1,13 @@ +package hanghae.domain; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DomainApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/infrastructure/.gitattributes b/infrastructure/.gitattributes new file mode 100644 index 000000000..8af972cde --- /dev/null +++ b/infrastructure/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/infrastructure/.gitignore b/infrastructure/.gitignore new file mode 100644 index 000000000..c2065bc26 --- /dev/null +++ b/infrastructure/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/infrastructure/build.gradle b/infrastructure/build.gradle new file mode 100644 index 000000000..0109b8142 --- /dev/null +++ b/infrastructure/build.gradle @@ -0,0 +1,3 @@ +bootJar { + enabled = false +} \ No newline at end of file diff --git a/infrastructure/gradle/wrapper/gradle-wrapper.jar b/infrastructure/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/infrastructure/gradle/wrapper/gradle-wrapper.properties b/infrastructure/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..e2847c820 --- /dev/null +++ b/infrastructure/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/infrastructure/gradlew b/infrastructure/gradlew new file mode 100755 index 000000000..f5feea6d6 --- /dev/null +++ b/infrastructure/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/infrastructure/gradlew.bat b/infrastructure/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/infrastructure/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/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java b/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java new file mode 100644 index 000000000..cdad5b51c --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java @@ -0,0 +1,13 @@ +package hanghae.infrastructure; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class InfrastructureApplication { + + public static void main(String[] args) { + SpringApplication.run(InfrastructureApplication.class, args); + } + +} diff --git a/infrastructure/src/main/resources/application.properties b/infrastructure/src/main/resources/application.properties new file mode 100644 index 000000000..55c570f0f --- /dev/null +++ b/infrastructure/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=infrastructure diff --git a/infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java b/infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java new file mode 100644 index 000000000..ded6565bd --- /dev/null +++ b/infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java @@ -0,0 +1,13 @@ +package hanghae.infrastructure; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class InfrastructureApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/settings.gradle b/settings.gradle index ff40b7967..2ee4708de 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,6 @@ rootProject.name = 'movie-app' + +include 'api' +include 'domain' +include 'application' +include 'infrastructure' From 5edf06066ee37989e0924013057ee7c1cd83c184 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 05:09:57 +0900 Subject: [PATCH 03/29] feat: add docker-file and compose.yml --- Dockerfile | 9 +++++++++ compose.yml | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Dockerfile create mode 100644 compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..103017a13 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM openjdk:21-jdk + +WORKDIR /app + +COPY api/build/libs/*SNAPSHOT.jar app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "/app/app.jar"] \ No newline at end of file diff --git a/compose.yml b/compose.yml new file mode 100644 index 000000000..432437c0c --- /dev/null +++ b/compose.yml @@ -0,0 +1,24 @@ +services: + server: + build: . + ports: + - 8080:8080 + depends_on: + mysql-db: + condition: service_healthy + + mysql-db: + image: mysql + environment: + MYSQL_ROOT_PASSWORD: root-password + MYSQL_USER: master + MYSQL_PASSWORD: password + MYSQL_DATABASE: movie_app + volumes: + - ./database:/var/lib/mysql + ports: + - 3306:3306 + healthcheck: + test: ["CMD", "mysqladmin", "ping"] + interval: 5s + retries: 5 \ No newline at end of file From 31d23039fcfcaae82c4fb93aa72ff1db0600f3dc Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 06:15:41 +0900 Subject: [PATCH 04/29] feat: add entities in domain-module --- domain/build.gradle | 4 ++ .../main/java/hanghae/domain/entity/Base.java | 25 ++++++++++++ .../java/hanghae/domain/entity/Movie.java | 38 +++++++++++++++++++ .../java/hanghae/domain/entity/Schedule.java | 29 ++++++++++++++ .../java/hanghae/domain/entity/Screen.java | 25 ++++++++++++ .../hanghae/domain/entity/ScreenSchedule.java | 22 +++++++++++ .../main/java/hanghae/domain/entity/Seat.java | 23 +++++++++++ .../java/hanghae/domain/type/AgeRating.java | 5 +++ .../main/java/hanghae/domain/type/Genre.java | 5 +++ 9 files changed, 176 insertions(+) create mode 100644 domain/src/main/java/hanghae/domain/entity/Base.java create mode 100644 domain/src/main/java/hanghae/domain/entity/Movie.java create mode 100644 domain/src/main/java/hanghae/domain/entity/Schedule.java create mode 100644 domain/src/main/java/hanghae/domain/entity/Screen.java create mode 100644 domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java create mode 100644 domain/src/main/java/hanghae/domain/entity/Seat.java create mode 100644 domain/src/main/java/hanghae/domain/type/AgeRating.java create mode 100644 domain/src/main/java/hanghae/domain/type/Genre.java diff --git a/domain/build.gradle b/domain/build.gradle index 0109b8142..0b3c3eccb 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -1,3 +1,7 @@ bootJar { enabled = false +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' } \ No newline at end of file diff --git a/domain/src/main/java/hanghae/domain/entity/Base.java b/domain/src/main/java/hanghae/domain/entity/Base.java new file mode 100644 index 000000000..d7a2f63e4 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Base.java @@ -0,0 +1,25 @@ +package hanghae.domain.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Base { + + @CreatedDate + @Column(updatable = false, nullable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + @Column(nullable = false) + private LocalDateTime updatedAt; + + private LocalDateTime deletedAt; +} diff --git a/domain/src/main/java/hanghae/domain/entity/Movie.java b/domain/src/main/java/hanghae/domain/entity/Movie.java new file mode 100644 index 000000000..98c041148 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Movie.java @@ -0,0 +1,38 @@ +package hanghae.domain.entity; + +import hanghae.domain.type.AgeRating; +import hanghae.domain.type.Genre; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Table(name = "movies") +@NoArgsConstructor +public class Movie extends Base{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long movieId; + + private String title; + + @Enumerated(EnumType.STRING) + private AgeRating ageRating; + + private LocalDate releaseDate; + + private String thumbnailUrl; + + private int runningTime; + + @Enumerated(EnumType.STRING) + private Genre genre; + + @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL, orphanRemoval = true) + private List schedules = new ArrayList<>(); +} diff --git a/domain/src/main/java/hanghae/domain/entity/Schedule.java b/domain/src/main/java/hanghae/domain/entity/Schedule.java new file mode 100644 index 000000000..558644c30 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Schedule.java @@ -0,0 +1,29 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Table(name = "schedules") +@NoArgsConstructor +public class Schedule extends Base { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long scheduleId; + + @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + private List screenSchedules = new ArrayList<>(); + + @ManyToOne + @JoinColumn(name = "movie_id") + private Movie movie; + + private LocalDateTime startDateTime; + + private LocalDateTime endDateTime; +} diff --git a/domain/src/main/java/hanghae/domain/entity/Screen.java b/domain/src/main/java/hanghae/domain/entity/Screen.java new file mode 100644 index 000000000..abecafe54 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Screen.java @@ -0,0 +1,25 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +@Entity +@Table(name = "screens") +@NoArgsConstructor +public class Screen extends Base { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long screenId; + + private String screenName; + + @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) + private List screenSchedules = new ArrayList<>(); + + @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) + private List seats = new ArrayList<>(); +} diff --git a/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java b/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java new file mode 100644 index 000000000..a8313615b --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java @@ -0,0 +1,22 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "screen_schedule") +@NoArgsConstructor +public class ScreenSchedule { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long screenScheduleId; + + @ManyToOne + @JoinColumn(name = "screen_id") + private Screen screen; + + @ManyToOne + @JoinColumn(name = "schedule_id") + private Schedule schedule; +} diff --git a/domain/src/main/java/hanghae/domain/entity/Seat.java b/domain/src/main/java/hanghae/domain/entity/Seat.java new file mode 100644 index 000000000..86fd4a9fb --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Seat.java @@ -0,0 +1,23 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.NoArgsConstructor; + +@Entity +@Table( + name = "seats", + uniqueConstraints = @UniqueConstraint(columnNames = {"screen_id", "seat_name"}) +) +@NoArgsConstructor +public class Seat { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long seatId; + + private String seatName; + + @ManyToOne + @JoinColumn(name = "screen_id") + private Screen screen; +} diff --git a/domain/src/main/java/hanghae/domain/type/AgeRating.java b/domain/src/main/java/hanghae/domain/type/AgeRating.java new file mode 100644 index 000000000..6f9ec9b13 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/type/AgeRating.java @@ -0,0 +1,5 @@ +package hanghae.domain.type; + +public enum AgeRating { + ALL, AGE_12, AGE_15, AGE_19; +} diff --git a/domain/src/main/java/hanghae/domain/type/Genre.java b/domain/src/main/java/hanghae/domain/type/Genre.java new file mode 100644 index 000000000..918cf9c48 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/type/Genre.java @@ -0,0 +1,5 @@ +package hanghae.domain.type; + +public enum Genre { + ACTION, SF, ROMANCE, COMEDY, HORROR, DRAMA, ANIMATION +} From 219a273cd16ab6b3cc2bc461698ac54bf5418944 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 06:37:27 +0900 Subject: [PATCH 05/29] feat: configure datasource profiles for docker and local environments --- api/build.gradle | 4 ++++ api/src/main/java/hanghae/api/ApiApplication.java | 1 - api/src/main/resources/application-dev.yml | 4 ++++ api/src/main/resources/application.yml | 5 +++-- .../java/hanghae/domain/DomainApplication.java | 2 ++ infrastructure/build.gradle | 7 +++++++ .../infrastructure/InfrastructureApplication.java | 1 - .../src/main/resources/application.properties | 1 - .../src/main/resources/infra-application-dev.yml | 15 +++++++++++++++ .../src/main/resources/infra-application.yml | 15 +++++++++++++++ 10 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 api/src/main/resources/application-dev.yml delete mode 100644 infrastructure/src/main/resources/application.properties create mode 100644 infrastructure/src/main/resources/infra-application-dev.yml create mode 100644 infrastructure/src/main/resources/infra-application.yml diff --git a/api/build.gradle b/api/build.gradle index 4411c175f..72d0171e1 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -1,4 +1,8 @@ bootJar { enabled = true mainClass = 'hanghae.api.ApiApplication' +} + +dependencies { + implementation project(':infrastructure') } \ No newline at end of file diff --git a/api/src/main/java/hanghae/api/ApiApplication.java b/api/src/main/java/hanghae/api/ApiApplication.java index 1f6cba154..b9f3efc59 100644 --- a/api/src/main/java/hanghae/api/ApiApplication.java +++ b/api/src/main/java/hanghae/api/ApiApplication.java @@ -5,7 +5,6 @@ @SpringBootApplication( scanBasePackages = { - "hanghae.common", "hanghae.api", "hanghae.application", "hanghae.domain", diff --git a/api/src/main/resources/application-dev.yml b/api/src/main/resources/application-dev.yml new file mode 100644 index 000000000..a1b014584 --- /dev/null +++ b/api/src/main/resources/application-dev.yml @@ -0,0 +1,4 @@ +spring: + + config: + import: classpath:infra-application-dev.yml \ No newline at end of file diff --git a/api/src/main/resources/application.yml b/api/src/main/resources/application.yml index c67d487cb..f7237c9e6 100644 --- a/api/src/main/resources/application.yml +++ b/api/src/main/resources/application.yml @@ -1,3 +1,4 @@ spring: - application: - name: api \ No newline at end of file + + config: + import: classpath:infra-application.yml \ No newline at end of file diff --git a/domain/src/main/java/hanghae/domain/DomainApplication.java b/domain/src/main/java/hanghae/domain/DomainApplication.java index f43248ec3..61dd1262b 100644 --- a/domain/src/main/java/hanghae/domain/DomainApplication.java +++ b/domain/src/main/java/hanghae/domain/DomainApplication.java @@ -2,7 +2,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +@EnableJpaAuditing @SpringBootApplication public class DomainApplication { diff --git a/infrastructure/build.gradle b/infrastructure/build.gradle index 0109b8142..3421e6a9c 100644 --- a/infrastructure/build.gradle +++ b/infrastructure/build.gradle @@ -1,3 +1,10 @@ bootJar { enabled = false +} + +dependencies { + implementation project(':domain') + + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + runtimeOnly 'com.mysql:mysql-connector-j' } \ No newline at end of file diff --git a/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java b/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java index cdad5b51c..89169fbde 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/InfrastructureApplication.java @@ -9,5 +9,4 @@ public class InfrastructureApplication { public static void main(String[] args) { SpringApplication.run(InfrastructureApplication.class, args); } - } diff --git a/infrastructure/src/main/resources/application.properties b/infrastructure/src/main/resources/application.properties deleted file mode 100644 index 55c570f0f..000000000 --- a/infrastructure/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=infrastructure diff --git a/infrastructure/src/main/resources/infra-application-dev.yml b/infrastructure/src/main/resources/infra-application-dev.yml new file mode 100644 index 000000000..f35b8b6e5 --- /dev/null +++ b/infrastructure/src/main/resources/infra-application-dev.yml @@ -0,0 +1,15 @@ +spring: + + datasource: + url: jdbc:mysql://localhost:3306/movie_app + username: master + password: password + hikari: + driver-class-name: com.mysql.cj.jdbc.Driver + + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + dialect: org.hibernate.dialect.MySQLDialect \ No newline at end of file diff --git a/infrastructure/src/main/resources/infra-application.yml b/infrastructure/src/main/resources/infra-application.yml new file mode 100644 index 000000000..69256ee72 --- /dev/null +++ b/infrastructure/src/main/resources/infra-application.yml @@ -0,0 +1,15 @@ +spring: + + datasource: + url: jdbc:mysql://mysql-db:3306/movie_app + username: master + password: password + hikari: + driver-class-name: com.mysql.cj.jdbc.Driver + + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + dialect: org.hibernate.dialect.MySQLDialect \ No newline at end of file From 35b0d869ed0f4fb03181daca0304430de1c1ff1c Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 08:22:37 +0900 Subject: [PATCH 06/29] feat: insert dummy-data --- api/build.gradle | 3 + .../main/java/hanghae/api/ApiApplication.java | 2 + api/src/main/resources/application-dev.yml | 5 +- .../java/hanghae/domain/entity/Movie.java | 6 +- .../java/hanghae/domain/entity/Schedule.java | 10 ++ .../java/hanghae/domain/entity/Screen.java | 2 + .../hanghae/domain/entity/ScreenSchedule.java | 5 + .../main/java/hanghae/domain/entity/Seat.java | 6 + .../adapter/JpaMovieRepositoryAdapter.java | 17 +++ .../generater/DummyDataInitializer.java | 144 ++++++++++++++++++ .../repository/JpaMovieRepository.java | 7 + .../repository/JpaScheduleRepository.java | 7 + .../repository/JpaScreenRepository.java | 7 + .../JpaScreenScheduleRepository.java | 7 + .../repository/JpaSeatRepository.java | 7 + 15 files changed, 232 insertions(+), 3 deletions(-) create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMovieRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenScheduleRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java diff --git a/api/build.gradle b/api/build.gradle index 72d0171e1..960cdb49f 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -4,5 +4,8 @@ bootJar { } dependencies { + implementation project(':domain') implementation project(':infrastructure') + + implementation 'org.springframework.boot:spring-boot-starter-web' } \ No newline at end of file diff --git a/api/src/main/java/hanghae/api/ApiApplication.java b/api/src/main/java/hanghae/api/ApiApplication.java index b9f3efc59..4f2869d17 100644 --- a/api/src/main/java/hanghae/api/ApiApplication.java +++ b/api/src/main/java/hanghae/api/ApiApplication.java @@ -2,7 +2,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +@EntityScan(basePackages = "hanghae.domain.entity") @SpringBootApplication( scanBasePackages = { "hanghae.api", diff --git a/api/src/main/resources/application-dev.yml b/api/src/main/resources/application-dev.yml index a1b014584..ac808796d 100644 --- a/api/src/main/resources/application-dev.yml +++ b/api/src/main/resources/application-dev.yml @@ -1,4 +1,7 @@ spring: config: - import: classpath:infra-application-dev.yml \ No newline at end of file + import: classpath:infra-application-dev.yml + +server: + port: 8081 \ No newline at end of file diff --git a/domain/src/main/java/hanghae/domain/entity/Movie.java b/domain/src/main/java/hanghae/domain/entity/Movie.java index 98c041148..6d695f27d 100644 --- a/domain/src/main/java/hanghae/domain/entity/Movie.java +++ b/domain/src/main/java/hanghae/domain/entity/Movie.java @@ -3,8 +3,7 @@ import hanghae.domain.type.AgeRating; import hanghae.domain.type.Genre; import jakarta.persistence.*; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDate; import java.util.ArrayList; @@ -13,6 +12,8 @@ @Entity @Table(name = "movies") @NoArgsConstructor +@AllArgsConstructor +@Getter @Builder public class Movie extends Base{ @Id @@ -33,6 +34,7 @@ public class Movie extends Base{ @Enumerated(EnumType.STRING) private Genre genre; + @Setter @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL, orphanRemoval = true) private List schedules = new ArrayList<>(); } diff --git a/domain/src/main/java/hanghae/domain/entity/Schedule.java b/domain/src/main/java/hanghae/domain/entity/Schedule.java index 558644c30..01f555787 100644 --- a/domain/src/main/java/hanghae/domain/entity/Schedule.java +++ b/domain/src/main/java/hanghae/domain/entity/Schedule.java @@ -2,6 +2,7 @@ import jakarta.persistence.*; import lombok.NoArgsConstructor; +import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; @@ -19,6 +20,7 @@ public class Schedule extends Base { @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, fetch = FetchType.EAGER) private List screenSchedules = new ArrayList<>(); + @Setter @ManyToOne @JoinColumn(name = "movie_id") private Movie movie; @@ -26,4 +28,12 @@ public class Schedule extends Base { private LocalDateTime startDateTime; private LocalDateTime endDateTime; + + public void setStartDateTimeAndEndDateTime( + LocalDateTime startDateTime, + LocalDateTime endDateTime + ) { + this.startDateTime = startDateTime; + this.endDateTime = endDateTime; + } } diff --git a/domain/src/main/java/hanghae/domain/entity/Screen.java b/domain/src/main/java/hanghae/domain/entity/Screen.java index abecafe54..b099a5e83 100644 --- a/domain/src/main/java/hanghae/domain/entity/Screen.java +++ b/domain/src/main/java/hanghae/domain/entity/Screen.java @@ -2,6 +2,7 @@ import jakarta.persistence.*; import lombok.NoArgsConstructor; +import lombok.Setter; import java.util.ArrayList; import java.util.List; @@ -15,6 +16,7 @@ public class Screen extends Base { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long screenId; + @Setter private String screenName; @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) diff --git a/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java b/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java index a8313615b..341e8da73 100644 --- a/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java +++ b/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java @@ -19,4 +19,9 @@ public class ScreenSchedule { @ManyToOne @JoinColumn(name = "schedule_id") private Schedule schedule; + + public ScreenSchedule(Screen screen, Schedule schedule) { + this.screen = screen; + this.schedule = schedule; + } } diff --git a/domain/src/main/java/hanghae/domain/entity/Seat.java b/domain/src/main/java/hanghae/domain/entity/Seat.java index 86fd4a9fb..5fc937364 100644 --- a/domain/src/main/java/hanghae/domain/entity/Seat.java +++ b/domain/src/main/java/hanghae/domain/entity/Seat.java @@ -2,6 +2,7 @@ import jakarta.persistence.*; import lombok.NoArgsConstructor; +import lombok.Setter; @Entity @Table( @@ -20,4 +21,9 @@ public class Seat { @ManyToOne @JoinColumn(name = "screen_id") private Screen screen; + + public void setSeatNameAndScreen(String seatName, Screen screen) { + this.seatName = seatName; + this.screen = screen; + } } diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java new file mode 100644 index 000000000..35e460e34 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java @@ -0,0 +1,17 @@ +package hanghae.infrastructure.adapter; + +import hanghae.domain.entity.Movie; +import hanghae.domain.port.MovieRepository; +import hanghae.domain.type.Genre; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class JpaMovieRepositoryAdapter implements MovieRepository { + @Override + public List> findMoviesPlayingWithFilters(String title, Genre genre) { + return List.of(); + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java new file mode 100644 index 000000000..f7ebb2de7 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java @@ -0,0 +1,144 @@ +package hanghae.infrastructure.common.generater; + +import hanghae.domain.entity.*; +import hanghae.domain.type.AgeRating; +import hanghae.domain.type.Genre; +import hanghae.infrastructure.repository.*; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +//@Component +@RequiredArgsConstructor +public class DummyDataInitializer implements ApplicationRunner { + + private final JpaMovieRepository movieRepository; + private final JpaScheduleRepository scheduleRepository; + private final JpaScreenRepository screenRepository; + private final JpaScreenScheduleRepository screenScheduleRepository; + private final JpaSeatRepository seatRepository; + + private final Random random = new Random(); + + @Override + @Transactional + public void run(ApplicationArguments args) throws Exception { + List allMovies = createMovies(500); + List allSchedules = createSchedules(10000, allMovies); + List allScreens = createScreensAndSeats(50); + + createScreenSchedules(allSchedules, allScreens); + } + + private List createMovies(int movieCount) { + List movies = new ArrayList<>(); + AgeRating[] ageRatings = AgeRating.values(); + Genre[] genres = Genre.values(); + + for (int i = 1; i <= movieCount; i++) { + Movie movie = Movie.builder() + .title("Movie " + i) + .ageRating(ageRatings[random.nextInt(ageRatings.length)]) + .releaseDate(getRandomDate()) + .thumbnailUrl(getRandomThumbNailUrl(i)) + .runningTime(90 + random.nextInt(91)) + .genre(genres[random.nextInt(genres.length)]) + .build(); + + movieRepository.save(movie); + movies.add(movie); + } + + return movies; + } + + private String getRandomThumbNailUrl(int i) { + return "https://example.com/thumbnail/" + i + ".jpg"; + } + + private LocalDate getRandomDate() { + return LocalDate.of( + 2024 + random.nextInt(6), + 1 + random.nextInt(12), + 1 + random.nextInt(28) + ); + } + + private List createSchedules(int scheduleCount, List allMovies) { + List schedules = new ArrayList<>(); + int movieSize = allMovies.size(); + + for (int i = 0; i < scheduleCount; i++) { + Schedule schedule = new Schedule(); + + Movie randomMovie = allMovies.get(random.nextInt(movieSize)); + schedule.setMovie(randomMovie); + + LocalDateTime startTime = LocalDateTime.now() + .plusDays(random.nextInt(60) - 30) + .withHour(random.nextInt(24)) + .withMinute(0); + + int runningMin = randomMovie.getRunningTime(); + LocalDateTime endTime = startTime.plusMinutes(runningMin); + schedule.setStartDateTimeAndEndDateTime(startTime, endTime); + + scheduleRepository.save(schedule); + randomMovie.setSchedules(List.of(schedule)); + schedules.add(schedule); + } + + return schedules; + } + + private List createScreensAndSeats(int screenCount) { + List screens = new ArrayList<>(); + + for (int i = 1; i <= screenCount; i++) { + Screen screen = new Screen(); + screen.setScreenName("Screen " + i); + + screenRepository.save(screen); + + // A~E, 1~5 좌석 25개 + for (char row = 'A'; row <= 'E'; row++) { + for (int col = 1; col <= 5; col++) { + Seat seat = new Seat(); + seat.setSeatNameAndScreen(row + String.valueOf(col), screen); + + seatRepository.save(seat); + } + } + + screens.add(screen); + } + + return screens; + } + + private void createScreenSchedules(List allSchedules, List allScreens) { + int screenSize = allScreens.size(); + + for (Schedule schedule : allSchedules) { + int howMany = 1 + random.nextInt(3); // 1~3 + Set chosenIndexes = new HashSet<>(); + + while (chosenIndexes.size() < howMany) { + chosenIndexes.add(random.nextInt(screenSize)); + } + + for (int screenIndex : chosenIndexes) { + Screen screen = allScreens.get(screenIndex); + + ScreenSchedule sc = new ScreenSchedule(screen, schedule); + screenScheduleRepository.save(sc); + } + } + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMovieRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMovieRepository.java new file mode 100644 index 000000000..4cb219bdb --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMovieRepository.java @@ -0,0 +1,7 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.Movie; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface JpaMovieRepository extends JpaRepository { +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleRepository.java new file mode 100644 index 000000000..e174596ec --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleRepository.java @@ -0,0 +1,7 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.Schedule; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface JpaScheduleRepository extends JpaRepository { +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenRepository.java new file mode 100644 index 000000000..09a1db93a --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenRepository.java @@ -0,0 +1,7 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.Screen; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface JpaScreenRepository extends JpaRepository { +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenScheduleRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenScheduleRepository.java new file mode 100644 index 000000000..fd50d0270 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScreenScheduleRepository.java @@ -0,0 +1,7 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.ScreenSchedule; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface JpaScreenScheduleRepository extends JpaRepository { +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java new file mode 100644 index 000000000..de580f55d --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java @@ -0,0 +1,7 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.Seat; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface JpaSeatRepository extends JpaRepository { +} From e57ffa328d9a1f84198e39884e5cf4e054f6b514 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 12:46:27 +0900 Subject: [PATCH 07/29] feat: implement querydsl-based search logic for movie --- domain/build.gradle | 6 +++ .../java/hanghae/domain/entity/Schedule.java | 10 ++-- .../hanghae/domain/port/MovieRepository.java | 17 +++++++ infrastructure/build.gradle | 7 +++ .../adapter/JpaMovieRepositoryAdapter.java | 50 +++++++++++++++++-- .../infrastructure/config/QuerydslConfig.java | 15 ++++++ 6 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 domain/src/main/java/hanghae/domain/port/MovieRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/config/QuerydslConfig.java diff --git a/domain/build.gradle b/domain/build.gradle index 0b3c3eccb..c18d9b3e8 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -4,4 +4,10 @@ bootJar { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + + annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' + annotationProcessor 'jakarta.annotation:jakarta.annotation-api' + annotationProcessor 'jakarta.persistence:jakarta.persistence-api' } \ No newline at end of file diff --git a/domain/src/main/java/hanghae/domain/entity/Schedule.java b/domain/src/main/java/hanghae/domain/entity/Schedule.java index 01f555787..e46514212 100644 --- a/domain/src/main/java/hanghae/domain/entity/Schedule.java +++ b/domain/src/main/java/hanghae/domain/entity/Schedule.java @@ -1,12 +1,13 @@ package hanghae.domain.entity; import jakarta.persistence.*; +import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; @Entity @Table(name = "schedules") @@ -17,16 +18,19 @@ public class Schedule extends Base { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long scheduleId; + @Getter @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private List screenSchedules = new ArrayList<>(); + private Set screenSchedules = new HashSet<>(); @Setter @ManyToOne @JoinColumn(name = "movie_id") private Movie movie; + @Getter private LocalDateTime startDateTime; + @Getter private LocalDateTime endDateTime; public void setStartDateTimeAndEndDateTime( diff --git a/domain/src/main/java/hanghae/domain/port/MovieRepository.java b/domain/src/main/java/hanghae/domain/port/MovieRepository.java new file mode 100644 index 000000000..91b35f663 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/MovieRepository.java @@ -0,0 +1,17 @@ +package hanghae.domain.port; + +import hanghae.domain.entity.Movie; +import hanghae.domain.type.Genre; +import org.springframework.stereotype.Repository; + +import java.time.LocalDate; +import java.util.List; + +@Repository +public interface MovieRepository { + List findMoviesPlayingWithFilters( + LocalDate now, + String title, + Genre genre + ); +} diff --git a/infrastructure/build.gradle b/infrastructure/build.gradle index 3421e6a9c..f4e611103 100644 --- a/infrastructure/build.gradle +++ b/infrastructure/build.gradle @@ -6,5 +6,12 @@ dependencies { implementation project(':domain') implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + + annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' + annotationProcessor 'jakarta.annotation:jakarta.annotation-api' + annotationProcessor 'jakarta.persistence:jakarta.persistence-api' + runtimeOnly 'com.mysql:mysql-connector-j' } \ No newline at end of file diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java index 35e460e34..124afd9fd 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java @@ -1,17 +1,59 @@ package hanghae.infrastructure.adapter; -import hanghae.domain.entity.Movie; +import com.querydsl.core.BooleanBuilder; +import com.querydsl.jpa.impl.JPAQueryFactory; +import hanghae.domain.entity.*; import hanghae.domain.port.MovieRepository; import hanghae.domain.type.Genre; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import java.time.LocalDate; import java.util.List; -import java.util.Optional; @Repository +@RequiredArgsConstructor public class JpaMovieRepositoryAdapter implements MovieRepository { + + private final JPAQueryFactory queryFactory; + @Override - public List> findMoviesPlayingWithFilters(String title, Genre genre) { - return List.of(); + public List findMoviesPlayingWithFilters( + LocalDate now, + String title, + Genre genre + ) { + + QMovie movie = QMovie.movie; + QSchedule schedule = QSchedule.schedule; + QScreen screen = QScreen.screen; + QScreenSchedule screenSchedule = QScreenSchedule.screenSchedule; + + BooleanBuilder builder = new BooleanBuilder(); + + builder.and(movie.releaseDate.loe(now)) + .and(movie.deletedAt.isNull()); + + if (title != null && !title.trim().isEmpty()) { + builder.and(movie.title.startsWith(title)); + } + + if (genre != null) { + builder.and(movie.genre.eq(genre)); + } + + return queryFactory + .selectDistinct(movie) + .from(movie) + .leftJoin(movie.schedules, schedule).fetchJoin() + .leftJoin(schedule.screenSchedules, screenSchedule).fetchJoin() + .leftJoin(screenSchedule.screen, screen).fetchJoin() + .where(builder) + .orderBy( + movie.releaseDate.desc(), + schedule.startDateTime.asc(), + screen.screenName.asc() + ) + .fetch(); } } diff --git a/infrastructure/src/main/java/hanghae/infrastructure/config/QuerydslConfig.java b/infrastructure/src/main/java/hanghae/infrastructure/config/QuerydslConfig.java new file mode 100644 index 000000000..6bcaf2a62 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/config/QuerydslConfig.java @@ -0,0 +1,15 @@ +package hanghae.infrastructure.config; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import jakarta.persistence.EntityManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class QuerydslConfig { + + @Bean + public JPAQueryFactory jpaQueryFactory(EntityManager em) { + return new JPAQueryFactory(em); + } +} From 62edbd7f6cec8ecdf3c3400e1b628349f884a182 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 12:49:16 +0900 Subject: [PATCH 08/29] feat: add search and transformation logics for filtering currently playing movies --- .../application/dto/MoviePlayingResponse.java | 50 +++++++++++++++++++ .../application/dto/common/MovieResponse.java | 28 +++++++++++ .../dto/common/ScheduleResponse.java | 23 +++++++++ .../dto/common/ScreenResponse.java | 14 ++++++ .../application/port/MovieService.java | 13 +++++ .../application/service/MovieServiceImpl.java | 29 +++++++++++ .../java/hanghae/domain/entity/Movie.java | 3 +- .../java/hanghae/domain/entity/Screen.java | 3 +- .../hanghae/domain/entity/ScreenSchedule.java | 2 + 9 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java create mode 100644 application/src/main/java/hanghae/application/dto/common/MovieResponse.java create mode 100644 application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java create mode 100644 application/src/main/java/hanghae/application/dto/common/ScreenResponse.java create mode 100644 application/src/main/java/hanghae/application/port/MovieService.java create mode 100644 application/src/main/java/hanghae/application/service/MovieServiceImpl.java diff --git a/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java b/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java new file mode 100644 index 000000000..2cac6b5f8 --- /dev/null +++ b/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java @@ -0,0 +1,50 @@ +package hanghae.application.dto; + +import hanghae.application.dto.common.MovieResponse; +import hanghae.application.dto.common.ScheduleResponse; +import hanghae.application.dto.common.ScreenResponse; +import hanghae.domain.entity.Movie; +import hanghae.domain.entity.Schedule; +import hanghae.domain.entity.Screen; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public record MoviePlayingResponse( + MovieResponse movieResponse, + Set screenScheduleResponses +) { + + public static MoviePlayingResponse of(Movie movie) { + + MovieResponse movieResponse = MovieResponse.from(movie); + + Set screenScheduleResponses = new HashSet<>(); + + List schedules = movie.getSchedules(); + for (Schedule schedule : schedules) { + schedule.getScreenSchedules().stream() + .map(screenSchedule + -> ScreenScheduleResponse.of(screenSchedule.getScreen(), schedule) + ) + .forEach(screenScheduleResponses::add); + } + + return new MoviePlayingResponse(movieResponse, screenScheduleResponses); + } + + record ScreenScheduleResponse( + ScreenResponse screenResponse, + ScheduleResponse scheduleResponse + ) { + + public static ScreenScheduleResponse of(Screen screen, Schedule schedule) { + return new ScreenScheduleResponse( + ScreenResponse.from(screen), + ScheduleResponse.from(schedule) + ); + } + } +} + diff --git a/application/src/main/java/hanghae/application/dto/common/MovieResponse.java b/application/src/main/java/hanghae/application/dto/common/MovieResponse.java new file mode 100644 index 000000000..9144a2f29 --- /dev/null +++ b/application/src/main/java/hanghae/application/dto/common/MovieResponse.java @@ -0,0 +1,28 @@ +package hanghae.application.dto.common; + +import hanghae.domain.entity.Movie; +import hanghae.domain.type.AgeRating; +import hanghae.domain.type.Genre; + +import java.time.LocalDate; + +public record MovieResponse( + String title, + AgeRating ageRating, + LocalDate releaseDate, + String thumbnailUrl, + int runningTime, + Genre genre +) { + + public static MovieResponse from(Movie movie) { + return new MovieResponse( + movie.getTitle(), + movie.getAgeRating(), + movie.getReleaseDate(), + movie.getThumbnailUrl(), + movie.getRunningTime(), + movie.getGenre() + ); + } +} diff --git a/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java b/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java new file mode 100644 index 000000000..5895f5f14 --- /dev/null +++ b/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java @@ -0,0 +1,23 @@ +package hanghae.application.dto.common; + +import hanghae.domain.entity.Schedule; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public record ScheduleResponse( + String startTime, + String endTime +) { + + public static ScheduleResponse from(Schedule schedule) { + return new ScheduleResponse( + getFormattedDateTime(schedule.getStartDateTime()), + getFormattedDateTime(schedule.getEndDateTime()) + ); + } + + private static String getFormattedDateTime(LocalDateTime dateTime) { + return dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } +} diff --git a/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java b/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java new file mode 100644 index 000000000..d889647ea --- /dev/null +++ b/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java @@ -0,0 +1,14 @@ +package hanghae.application.dto.common; + +import hanghae.domain.entity.Screen; + +public record ScreenResponse( + String screenName +) { + + public static ScreenResponse from(Screen screen) { + return new ScreenResponse( + screen.getScreenName() + ); + } +} diff --git a/application/src/main/java/hanghae/application/port/MovieService.java b/application/src/main/java/hanghae/application/port/MovieService.java new file mode 100644 index 000000000..f6aaea308 --- /dev/null +++ b/application/src/main/java/hanghae/application/port/MovieService.java @@ -0,0 +1,13 @@ +package hanghae.application.port; + +import hanghae.application.dto.MoviePlayingResponse; +import hanghae.domain.type.Genre; + +import java.util.List; + +public interface MovieService { + List findMoviesPlayingWithFilters( + String title, + Genre genre + ); +} diff --git a/application/src/main/java/hanghae/application/service/MovieServiceImpl.java b/application/src/main/java/hanghae/application/service/MovieServiceImpl.java new file mode 100644 index 000000000..406e3205a --- /dev/null +++ b/application/src/main/java/hanghae/application/service/MovieServiceImpl.java @@ -0,0 +1,29 @@ +package hanghae.application.service; + +import hanghae.application.dto.MoviePlayingResponse; +import hanghae.application.port.MovieService; +import hanghae.domain.entity.Movie; +import hanghae.domain.port.MovieRepository; +import hanghae.domain.type.Genre; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class MovieServiceImpl implements MovieService { + + private final MovieRepository movieRepository; + + @Override + public List findMoviesPlayingWithFilters(String title, Genre genre) { + List movies = + movieRepository.findMoviesPlayingWithFilters(LocalDate.now(), title, genre); + + return movies.stream() + .map(MoviePlayingResponse::of) + .toList(); + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/Movie.java b/domain/src/main/java/hanghae/domain/entity/Movie.java index 6d695f27d..7807847ab 100644 --- a/domain/src/main/java/hanghae/domain/entity/Movie.java +++ b/domain/src/main/java/hanghae/domain/entity/Movie.java @@ -6,7 +6,6 @@ import lombok.*; import java.time.LocalDate; -import java.util.ArrayList; import java.util.List; @Entity @@ -36,5 +35,5 @@ public class Movie extends Base{ @Setter @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL, orphanRemoval = true) - private List schedules = new ArrayList<>(); + private List schedules; } diff --git a/domain/src/main/java/hanghae/domain/entity/Screen.java b/domain/src/main/java/hanghae/domain/entity/Screen.java index b099a5e83..89d5acc1b 100644 --- a/domain/src/main/java/hanghae/domain/entity/Screen.java +++ b/domain/src/main/java/hanghae/domain/entity/Screen.java @@ -1,6 +1,7 @@ package hanghae.domain.entity; import jakarta.persistence.*; +import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -16,7 +17,7 @@ public class Screen extends Base { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long screenId; - @Setter + @Getter @Setter private String screenName; @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) diff --git a/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java b/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java index 341e8da73..2ab5374be 100644 --- a/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java +++ b/domain/src/main/java/hanghae/domain/entity/ScreenSchedule.java @@ -1,6 +1,7 @@ package hanghae.domain.entity; import jakarta.persistence.*; +import lombok.Getter; import lombok.NoArgsConstructor; @Entity @@ -12,6 +13,7 @@ public class ScreenSchedule { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long screenScheduleId; + @Getter @ManyToOne @JoinColumn(name = "screen_id") private Screen screen; From 15cac0ff5cf9333193b2565b58c73d571273f44d Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 12:50:12 +0900 Subject: [PATCH 09/29] feat: set controller to search movies-playing --- api/build.gradle | 2 ++ .../hanghae/api/adapter/MovieController.java | 32 +++++++++++++++++++ .../hanghae/api/adapter/MovieController.http | 11 +++++++ application/build.gradle | 4 +++ 4 files changed, 49 insertions(+) create mode 100644 api/src/main/java/hanghae/api/adapter/MovieController.java create mode 100644 api/src/test/java/hanghae/api/adapter/MovieController.http diff --git a/api/build.gradle b/api/build.gradle index 960cdb49f..5653ccc13 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -5,7 +5,9 @@ bootJar { dependencies { implementation project(':domain') + implementation project(':application') implementation project(':infrastructure') implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-validation' } \ No newline at end of file diff --git a/api/src/main/java/hanghae/api/adapter/MovieController.java b/api/src/main/java/hanghae/api/adapter/MovieController.java new file mode 100644 index 000000000..00ed7918d --- /dev/null +++ b/api/src/main/java/hanghae/api/adapter/MovieController.java @@ -0,0 +1,32 @@ +package hanghae.api.adapter; + +import hanghae.application.dto.MoviePlayingResponse; +import hanghae.application.port.MovieService; +import hanghae.domain.type.Genre; +import jakarta.validation.constraints.Size; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/movie") +public class MovieController { + + private final MovieService movieService; + + @GetMapping + public ResponseEntity> findMoviesPlayingWithFilters( + @RequestParam(required = false) @Size(max = 50) String title, + @RequestParam(required = false) Genre genre + ) { + + return ResponseEntity.ok(movieService.findMoviesPlayingWithFilters(title, genre)); + } + +} diff --git a/api/src/test/java/hanghae/api/adapter/MovieController.http b/api/src/test/java/hanghae/api/adapter/MovieController.http new file mode 100644 index 000000000..cc78e4935 --- /dev/null +++ b/api/src/test/java/hanghae/api/adapter/MovieController.http @@ -0,0 +1,11 @@ +### 조회하는 날짜를 기준으로 상영 중인, title, genre 필터 기반 영화 조회 +GET http://localhost:8081/api/v1/movie + +### 현재 상영 중인 영화 중 제목에 5가 들어가는 영화 조회 +GET http://localhost:8081/api/v1/movie?title=5 + +### 현재 상영 중인 영화 중 장가에 애니메이션인 영화 조회 +GET http://localhost:8081/api/v1/movie?genre=ANIMATION + +### 현재 상영 중인 영화 중 제목에 10이 들어가고, 장르가 SF인 영화 조회 +GET http://localhost:8081/api/v1/movie?title=1&genre=SF \ No newline at end of file diff --git a/application/build.gradle b/application/build.gradle index 0cd1dbc92..ad2917dbb 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -1,3 +1,7 @@ bootJar { enabled = false } + +dependencies { + implementation project(':domain') +} \ No newline at end of file From d8c68207b697660865f73692138c40b607072d2a Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 12:53:38 +0900 Subject: [PATCH 10/29] chore: update dummy data and configs --- .gitignore | 120 ++++++++ .../generater/DummyDataInitializer.java | 284 +++++++++--------- .../main/resources/infra-application-dev.yml | 2 + 3 files changed, 263 insertions(+), 143 deletions(-) diff --git a/.gitignore b/.gitignore index c2065bc26..225365792 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,123 @@ out/ ### VS Code ### .vscode/ + +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### Gradle ### +.gradle +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Avoid ignore Gradle wrappper properties +!gradle-wrapper.properties + +# Cache of project +.gradletasknamecache + +# Eclipse Gradle plugin generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath + +### Gradle Patch ### +# Java heap dump +*.hprof + + +### volume ### +database \ No newline at end of file diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java index f7ebb2de7..ddb684390 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java @@ -1,144 +1,142 @@ -package hanghae.infrastructure.common.generater; - -import hanghae.domain.entity.*; -import hanghae.domain.type.AgeRating; -import hanghae.domain.type.Genre; -import hanghae.infrastructure.repository.*; -import jakarta.transaction.Transactional; -import lombok.RequiredArgsConstructor; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.*; - +//package hanghae.infrastructure.common.generater; +// +//import hanghae.domain.entity.*; +//import hanghae.domain.type.AgeRating; +//import hanghae.domain.type.Genre; +//import hanghae.infrastructure.repository.*; +//import jakarta.transaction.Transactional; +//import lombok.RequiredArgsConstructor; +//import org.springframework.boot.ApplicationArguments; +//import org.springframework.boot.ApplicationRunner; +//import org.springframework.stereotype.Component; +// +//import java.time.LocalDate; +//import java.time.LocalDateTime; +//import java.util.*; +// //@Component -@RequiredArgsConstructor -public class DummyDataInitializer implements ApplicationRunner { - - private final JpaMovieRepository movieRepository; - private final JpaScheduleRepository scheduleRepository; - private final JpaScreenRepository screenRepository; - private final JpaScreenScheduleRepository screenScheduleRepository; - private final JpaSeatRepository seatRepository; - - private final Random random = new Random(); - - @Override - @Transactional - public void run(ApplicationArguments args) throws Exception { - List allMovies = createMovies(500); - List allSchedules = createSchedules(10000, allMovies); - List allScreens = createScreensAndSeats(50); - - createScreenSchedules(allSchedules, allScreens); - } - - private List createMovies(int movieCount) { - List movies = new ArrayList<>(); - AgeRating[] ageRatings = AgeRating.values(); - Genre[] genres = Genre.values(); - - for (int i = 1; i <= movieCount; i++) { - Movie movie = Movie.builder() - .title("Movie " + i) - .ageRating(ageRatings[random.nextInt(ageRatings.length)]) - .releaseDate(getRandomDate()) - .thumbnailUrl(getRandomThumbNailUrl(i)) - .runningTime(90 + random.nextInt(91)) - .genre(genres[random.nextInt(genres.length)]) - .build(); - - movieRepository.save(movie); - movies.add(movie); - } - - return movies; - } - - private String getRandomThumbNailUrl(int i) { - return "https://example.com/thumbnail/" + i + ".jpg"; - } - - private LocalDate getRandomDate() { - return LocalDate.of( - 2024 + random.nextInt(6), - 1 + random.nextInt(12), - 1 + random.nextInt(28) - ); - } - - private List createSchedules(int scheduleCount, List allMovies) { - List schedules = new ArrayList<>(); - int movieSize = allMovies.size(); - - for (int i = 0; i < scheduleCount; i++) { - Schedule schedule = new Schedule(); - - Movie randomMovie = allMovies.get(random.nextInt(movieSize)); - schedule.setMovie(randomMovie); - - LocalDateTime startTime = LocalDateTime.now() - .plusDays(random.nextInt(60) - 30) - .withHour(random.nextInt(24)) - .withMinute(0); - - int runningMin = randomMovie.getRunningTime(); - LocalDateTime endTime = startTime.plusMinutes(runningMin); - schedule.setStartDateTimeAndEndDateTime(startTime, endTime); - - scheduleRepository.save(schedule); - randomMovie.setSchedules(List.of(schedule)); - schedules.add(schedule); - } - - return schedules; - } - - private List createScreensAndSeats(int screenCount) { - List screens = new ArrayList<>(); - - for (int i = 1; i <= screenCount; i++) { - Screen screen = new Screen(); - screen.setScreenName("Screen " + i); - - screenRepository.save(screen); - - // A~E, 1~5 좌석 25개 - for (char row = 'A'; row <= 'E'; row++) { - for (int col = 1; col <= 5; col++) { - Seat seat = new Seat(); - seat.setSeatNameAndScreen(row + String.valueOf(col), screen); - - seatRepository.save(seat); - } - } - - screens.add(screen); - } - - return screens; - } - - private void createScreenSchedules(List allSchedules, List allScreens) { - int screenSize = allScreens.size(); - - for (Schedule schedule : allSchedules) { - int howMany = 1 + random.nextInt(3); // 1~3 - Set chosenIndexes = new HashSet<>(); - - while (chosenIndexes.size() < howMany) { - chosenIndexes.add(random.nextInt(screenSize)); - } - - for (int screenIndex : chosenIndexes) { - Screen screen = allScreens.get(screenIndex); - - ScreenSchedule sc = new ScreenSchedule(screen, schedule); - screenScheduleRepository.save(sc); - } - } - } -} +//@RequiredArgsConstructor +//public class DummyDataInitializer implements ApplicationRunner { +// +// private final JpaMovieRepository movieRepository; +// private final JpaScheduleRepository scheduleRepository; +// private final JpaScreenRepository screenRepository; +// private final JpaScreenScheduleRepository screenScheduleRepository; +// private final JpaSeatRepository seatRepository; +// +// private final Random random = new Random(); +// +// @Override +// @Transactional +// public void run(ApplicationArguments args) throws Exception { +// List allScreens = createScreensAndSeats(50); +// List allMovies = createMovies(500); +// List allSchedules = createSchedules(10000, allMovies); +// +// createScreenSchedules(allSchedules, allScreens); +// } +// +// private List createScreensAndSeats(int screenCount) { +// List screens = new ArrayList<>(); +// +// for (int i = 1; i <= screenCount; i++) { +// Screen screen = new Screen(); +// screen.setScreenName("Screen " + i); +// +// screenRepository.save(screen); +// +// // A~E, 1~5 좌석 25개 +// for (char row = 'A'; row <= 'E'; row++) { +// for (int col = 1; col <= 5; col++) { +// Seat seat = new Seat(); +// seat.setSeatNameAndScreen(row + String.valueOf(col), screen); +// +// seatRepository.save(seat); +// } +// } +// +// screens.add(screen); +// } +// +// return screens; +// } +// private List createMovies(int movieCount) { +// List movies = new ArrayList<>(); +// AgeRating[] ageRatings = AgeRating.values(); +// Genre[] genres = Genre.values(); +// +// for (int i = 1; i <= movieCount; i++) { +// Movie movie = Movie.builder() +// .title("Movie " + i) +// .ageRating(ageRatings[random.nextInt(ageRatings.length)]) +// .releaseDate(getRandomDate()) +// .thumbnailUrl(getRandomThumbNailUrl(i)) +// .runningTime(90 + random.nextInt(91)) +// .genre(genres[random.nextInt(genres.length)]) +// .build(); +// +// movieRepository.save(movie); +// movies.add(movie); +// } +// +// return movies; +// } +// +// private String getRandomThumbNailUrl(int i) { +// return "https://example.com/thumbnail/" + i + ".jpg"; +// } +// +// private LocalDate getRandomDate() { +// return LocalDate.of( +// 2022 + random.nextInt(6), +// 1 + random.nextInt(12), +// 1 + random.nextInt(28) +// ); +// } +// +// private List createSchedules(int scheduleCount, List allMovies) { +// List schedules = new ArrayList<>(); +// int movieSize = allMovies.size(); +// +// for (int i = 0; i < scheduleCount; i++) { +// Schedule schedule = new Schedule(); +// +// Movie randomMovie = allMovies.get(random.nextInt(movieSize)); +// schedule.setMovie(randomMovie); +// +// LocalDateTime startTime = randomMovie.getReleaseDate().atTime(0, 0) +// .plusDays(random.nextInt(60)) +// .withHour(random.nextInt(24)) +// .withMinute(random.nextInt(60)); +// +// int runningMin = randomMovie.getRunningTime(); +// LocalDateTime endTime = startTime.plusMinutes(runningMin); +// schedule.setStartDateTimeAndEndDateTime(startTime, endTime); +// +// scheduleRepository.save(schedule); +// schedules.add(schedule); +// } +// +// return schedules; +// } +// +// private void createScreenSchedules(List allSchedules, List allScreens) { +// int screenSize = allScreens.size(); +// +// for (Schedule schedule : allSchedules) { +// int howMany = 1 + random.nextInt(3); // 1~3 +// Set chosenIndexes = new HashSet<>(); +// +// while (chosenIndexes.size() < howMany) { +// chosenIndexes.add(random.nextInt(screenSize)); +// } +// +// for (int screenIndex : chosenIndexes) { +// Screen screen = allScreens.get(screenIndex); +// +// ScreenSchedule sc = new ScreenSchedule(screen, schedule); +// screenScheduleRepository.save(sc); +// } +// } +// } +//} diff --git a/infrastructure/src/main/resources/infra-application-dev.yml b/infrastructure/src/main/resources/infra-application-dev.yml index f35b8b6e5..57bbc3228 100644 --- a/infrastructure/src/main/resources/infra-application-dev.yml +++ b/infrastructure/src/main/resources/infra-application-dev.yml @@ -12,4 +12,6 @@ spring: ddl-auto: update properties: hibernate: +# show_sql: true +# format_sql: true dialect: org.hibernate.dialect.MySQLDialect \ No newline at end of file From 5078ecec393f432825c67f3bf83be8aa46971560 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 18:01:22 +0900 Subject: [PATCH 11/29] chore: setup for connecting with redis --- application/build.gradle | 1 + compose.yml | 11 +++++ infrastructure/build.gradle | 3 ++ .../config/RedisCacheConfig.java | 49 +++++++++++++++++++ .../config/RedisConnectionConfig.java | 22 +++++++++ .../main/resources/infra-application-dev.yml | 5 ++ .../src/main/resources/infra-application.yml | 5 ++ 7 files changed, 96 insertions(+) create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/config/RedisConnectionConfig.java diff --git a/application/build.gradle b/application/build.gradle index ad2917dbb..646d129cc 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -4,4 +4,5 @@ bootJar { dependencies { implementation project(':domain') + implementation project(':infrastructure') } \ No newline at end of file diff --git a/compose.yml b/compose.yml index 432437c0c..ffbd7e4f4 100644 --- a/compose.yml +++ b/compose.yml @@ -4,9 +4,20 @@ services: ports: - 8080:8080 depends_on: + redis-cache: + condition: service_healthy mysql-db: condition: service_healthy + redis-cache: + image: redis + ports: + - 6379:6379 + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + retries: 5 + mysql-db: image: mysql environment: diff --git a/infrastructure/build.gradle b/infrastructure/build.gradle index f4e611103..15e17a6ad 100644 --- a/infrastructure/build.gradle +++ b/infrastructure/build.gradle @@ -7,6 +7,9 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-redis' + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' diff --git a/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java b/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java new file mode 100644 index 000000000..936233101 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java @@ -0,0 +1,49 @@ +package hanghae.infrastructure.config; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import java.time.Duration; + +@Configuration +@EnableCaching +public class RedisCacheConfig { + + @Bean + public CacheManager cacheManager(LettuceConnectionFactory lettuceConnectionFactory) { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration + .defaultCacheConfig() + .serializeKeysWith( + RedisSerializationContext.SerializationPair.fromSerializer( + new StringRedisSerializer() + ) + ) + .serializeValuesWith( + RedisSerializationContext.SerializationPair.fromSerializer( + new GenericJackson2JsonRedisSerializer(objectMapper) + ) + ) + .entryTtl(Duration.ofMinutes(10L)); + + return RedisCacheManager + .RedisCacheManagerBuilder + .fromConnectionFactory(lettuceConnectionFactory) + .cacheDefaults(redisCacheConfiguration) + .build(); + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/config/RedisConnectionConfig.java b/infrastructure/src/main/java/hanghae/infrastructure/config/RedisConnectionConfig.java new file mode 100644 index 000000000..07845ebcb --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/config/RedisConnectionConfig.java @@ -0,0 +1,22 @@ +package hanghae.infrastructure.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisStandaloneConfiguration; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; + +@Configuration +public class RedisConnectionConfig { + + @Value("${spring.data.redis.host}") + private String host; + + @Value("${spring.data.redis.port}") + private int port; + + @Bean + public LettuceConnectionFactory lettuceConnectionFactory() { + return new LettuceConnectionFactory(new RedisStandaloneConfiguration(host, port)); + } +} diff --git a/infrastructure/src/main/resources/infra-application-dev.yml b/infrastructure/src/main/resources/infra-application-dev.yml index 57bbc3228..b362e6fff 100644 --- a/infrastructure/src/main/resources/infra-application-dev.yml +++ b/infrastructure/src/main/resources/infra-application-dev.yml @@ -1,5 +1,10 @@ spring: + data: + redis: + host: localhost + port: 6379 + datasource: url: jdbc:mysql://localhost:3306/movie_app username: master diff --git a/infrastructure/src/main/resources/infra-application.yml b/infrastructure/src/main/resources/infra-application.yml index 69256ee72..5a1f12c99 100644 --- a/infrastructure/src/main/resources/infra-application.yml +++ b/infrastructure/src/main/resources/infra-application.yml @@ -1,5 +1,10 @@ spring: + data: + redis: + host: redis-cache + port: 6379 + datasource: url: jdbc:mysql://mysql-db:3306/movie_app username: master From b6dffa57d853e57a49ef8d24c024914b355c2122 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 18:03:18 +0900 Subject: [PATCH 12/29] feat: add logics to cache searched movie details --- .../hanghae/api/adapter/MovieController.http | 4 +- .../application/dto/MoviePlayingResponse.java | 52 +++++++------------ .../application/dto/common/MovieResponse.java | 12 +++++ .../dto/common/ScheduleResponse.java | 8 +++ .../dto/common/ScreenResponse.java | 7 +++ .../application/service/MovieServiceImpl.java | 13 +++-- .../java/hanghae/domain/entity/Movie.java | 6 ++- .../java/hanghae/domain/entity/Schedule.java | 6 ++- .../java/hanghae/domain/entity/Screen.java | 6 ++- .../hanghae/domain/port/MovieRepository.java | 2 +- .../domain/port/MovieScheduleScreenDto.java | 24 +++++++++ .../adapter/JpaMovieRepositoryAdapter.java | 35 ++++++++++--- 12 files changed, 124 insertions(+), 51 deletions(-) create mode 100644 domain/src/main/java/hanghae/domain/port/MovieScheduleScreenDto.java diff --git a/api/src/test/java/hanghae/api/adapter/MovieController.http b/api/src/test/java/hanghae/api/adapter/MovieController.http index cc78e4935..d95a21cd5 100644 --- a/api/src/test/java/hanghae/api/adapter/MovieController.http +++ b/api/src/test/java/hanghae/api/adapter/MovieController.http @@ -7,5 +7,5 @@ GET http://localhost:8081/api/v1/movie?title=5 ### 현재 상영 중인 영화 중 장가에 애니메이션인 영화 조회 GET http://localhost:8081/api/v1/movie?genre=ANIMATION -### 현재 상영 중인 영화 중 제목에 10이 들어가고, 장르가 SF인 영화 조회 -GET http://localhost:8081/api/v1/movie?title=1&genre=SF \ No newline at end of file +### 현재 상영 중인 영화 중 제목에 3 들어가고, 장르가 SF인 영화 조회 +GET http://localhost:8081/api/v1/movie?title=3&genre=SF \ No newline at end of file diff --git a/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java b/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java index 2cac6b5f8..3b5974bc5 100644 --- a/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java +++ b/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java @@ -6,45 +6,29 @@ import hanghae.domain.entity.Movie; import hanghae.domain.entity.Schedule; import hanghae.domain.entity.Screen; +import hanghae.domain.port.MovieScheduleScreenDto; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; import java.util.HashSet; import java.util.List; import java.util.Set; -public record MoviePlayingResponse( - MovieResponse movieResponse, - Set screenScheduleResponses -) { - - public static MoviePlayingResponse of(Movie movie) { - - MovieResponse movieResponse = MovieResponse.from(movie); - - Set screenScheduleResponses = new HashSet<>(); - - List schedules = movie.getSchedules(); - for (Schedule schedule : schedules) { - schedule.getScreenSchedules().stream() - .map(screenSchedule - -> ScreenScheduleResponse.of(screenSchedule.getScreen(), schedule) - ) - .forEach(screenScheduleResponses::add); - } - - return new MoviePlayingResponse(movieResponse, screenScheduleResponses); - } - - record ScreenScheduleResponse( - ScreenResponse screenResponse, - ScheduleResponse scheduleResponse - ) { - - public static ScreenScheduleResponse of(Screen screen, Schedule schedule) { - return new ScreenScheduleResponse( - ScreenResponse.from(screen), - ScheduleResponse.from(schedule) - ); - } +@Getter +@Builder +public class MoviePlayingResponse { + private MovieResponse movieResponse; + private ScheduleResponse scheduleResponse; + private ScreenResponse screenResponse; + + public static MoviePlayingResponse from(MovieScheduleScreenDto dto) { + return MoviePlayingResponse.builder() + .movieResponse(MovieResponse.of(dto)) + .scheduleResponse(ScheduleResponse.of(dto)) + .screenResponse(ScreenResponse.of(dto)) + .build(); } } diff --git a/application/src/main/java/hanghae/application/dto/common/MovieResponse.java b/application/src/main/java/hanghae/application/dto/common/MovieResponse.java index 9144a2f29..bad5ea5a3 100644 --- a/application/src/main/java/hanghae/application/dto/common/MovieResponse.java +++ b/application/src/main/java/hanghae/application/dto/common/MovieResponse.java @@ -1,6 +1,7 @@ package hanghae.application.dto.common; import hanghae.domain.entity.Movie; +import hanghae.domain.port.MovieScheduleScreenDto; import hanghae.domain.type.AgeRating; import hanghae.domain.type.Genre; @@ -15,6 +16,17 @@ public record MovieResponse( Genre genre ) { + public static MovieResponse of(MovieScheduleScreenDto movieScheduleScreenDto) { + return new MovieResponse( + movieScheduleScreenDto.movieTitle(), + movieScheduleScreenDto.ageRating(), + movieScheduleScreenDto.releaseDate(), + movieScheduleScreenDto.thumbnailUrl(), + movieScheduleScreenDto.runningTime(), + movieScheduleScreenDto.genre() + ); + } + public static MovieResponse from(Movie movie) { return new MovieResponse( movie.getTitle(), diff --git a/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java b/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java index 5895f5f14..3c92ebc4f 100644 --- a/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java +++ b/application/src/main/java/hanghae/application/dto/common/ScheduleResponse.java @@ -1,6 +1,7 @@ package hanghae.application.dto.common; import hanghae.domain.entity.Schedule; +import hanghae.domain.port.MovieScheduleScreenDto; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -17,6 +18,13 @@ public static ScheduleResponse from(Schedule schedule) { ); } + public static ScheduleResponse of(MovieScheduleScreenDto movieScheduleScreenDto) { + return new ScheduleResponse( + getFormattedDateTime(movieScheduleScreenDto.startDateTime()), + getFormattedDateTime(movieScheduleScreenDto.endDateTime()) + ); + } + private static String getFormattedDateTime(LocalDateTime dateTime) { return dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } diff --git a/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java b/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java index d889647ea..f59c16283 100644 --- a/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java +++ b/application/src/main/java/hanghae/application/dto/common/ScreenResponse.java @@ -1,6 +1,7 @@ package hanghae.application.dto.common; import hanghae.domain.entity.Screen; +import hanghae.domain.port.MovieScheduleScreenDto; public record ScreenResponse( String screenName @@ -11,4 +12,10 @@ public static ScreenResponse from(Screen screen) { screen.getScreenName() ); } + + public static ScreenResponse of(MovieScheduleScreenDto movieScheduleScreenDto) { + return new ScreenResponse( + movieScheduleScreenDto.screenName() + ); + } } diff --git a/application/src/main/java/hanghae/application/service/MovieServiceImpl.java b/application/src/main/java/hanghae/application/service/MovieServiceImpl.java index 406e3205a..d72a81751 100644 --- a/application/src/main/java/hanghae/application/service/MovieServiceImpl.java +++ b/application/src/main/java/hanghae/application/service/MovieServiceImpl.java @@ -2,10 +2,11 @@ import hanghae.application.dto.MoviePlayingResponse; import hanghae.application.port.MovieService; -import hanghae.domain.entity.Movie; import hanghae.domain.port.MovieRepository; +import hanghae.domain.port.MovieScheduleScreenDto; import hanghae.domain.type.Genre; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.time.LocalDate; @@ -18,12 +19,16 @@ public class MovieServiceImpl implements MovieService { private final MovieRepository movieRepository; @Override + @Cacheable( + cacheNames = "findMoviesPlaying", + key = "'findMoviesPlaying' + (#title ?: '') + ':' + (#genre ?: '')" + ) public List findMoviesPlayingWithFilters(String title, Genre genre) { - List movies = + List movieScheduleScreenDtoList = movieRepository.findMoviesPlayingWithFilters(LocalDate.now(), title, genre); - return movies.stream() - .map(MoviePlayingResponse::of) + return movieScheduleScreenDtoList.stream() + .map(MoviePlayingResponse::from) .toList(); } } diff --git a/domain/src/main/java/hanghae/domain/entity/Movie.java b/domain/src/main/java/hanghae/domain/entity/Movie.java index 7807847ab..8f3a0cc20 100644 --- a/domain/src/main/java/hanghae/domain/entity/Movie.java +++ b/domain/src/main/java/hanghae/domain/entity/Movie.java @@ -34,6 +34,10 @@ public class Movie extends Base{ private Genre genre; @Setter - @OneToMany(mappedBy = "movie", cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany( + mappedBy = "movie", + cascade = CascadeType.ALL, + orphanRemoval = true + ) private List schedules; } diff --git a/domain/src/main/java/hanghae/domain/entity/Schedule.java b/domain/src/main/java/hanghae/domain/entity/Schedule.java index e46514212..fbb5b1803 100644 --- a/domain/src/main/java/hanghae/domain/entity/Schedule.java +++ b/domain/src/main/java/hanghae/domain/entity/Schedule.java @@ -19,7 +19,11 @@ public class Schedule extends Base { private Long scheduleId; @Getter - @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany( + mappedBy = "schedule", + cascade = CascadeType.ALL, + orphanRemoval = true + ) private Set screenSchedules = new HashSet<>(); @Setter diff --git a/domain/src/main/java/hanghae/domain/entity/Screen.java b/domain/src/main/java/hanghae/domain/entity/Screen.java index 89d5acc1b..f124d2bf5 100644 --- a/domain/src/main/java/hanghae/domain/entity/Screen.java +++ b/domain/src/main/java/hanghae/domain/entity/Screen.java @@ -20,7 +20,11 @@ public class Screen extends Base { @Getter @Setter private String screenName; - @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany( + mappedBy = "screen", + cascade = CascadeType.ALL, + orphanRemoval = true + ) private List screenSchedules = new ArrayList<>(); @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) diff --git a/domain/src/main/java/hanghae/domain/port/MovieRepository.java b/domain/src/main/java/hanghae/domain/port/MovieRepository.java index 91b35f663..92064388a 100644 --- a/domain/src/main/java/hanghae/domain/port/MovieRepository.java +++ b/domain/src/main/java/hanghae/domain/port/MovieRepository.java @@ -9,7 +9,7 @@ @Repository public interface MovieRepository { - List findMoviesPlayingWithFilters( + List findMoviesPlayingWithFilters( LocalDate now, String title, Genre genre diff --git a/domain/src/main/java/hanghae/domain/port/MovieScheduleScreenDto.java b/domain/src/main/java/hanghae/domain/port/MovieScheduleScreenDto.java new file mode 100644 index 000000000..dcaad9556 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/MovieScheduleScreenDto.java @@ -0,0 +1,24 @@ +package hanghae.domain.port; + +import hanghae.domain.type.AgeRating; +import hanghae.domain.type.Genre; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +public record MovieScheduleScreenDto( + Long movieId, + String movieTitle, + AgeRating ageRating, + LocalDate releaseDate, + String thumbnailUrl, + int runningTime, + Genre genre, + + Long scheduleId, + LocalDateTime startDateTime, + LocalDateTime endDateTime, + + Long screenId, + String screenName +) {} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java index 124afd9fd..efcbe7f47 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMovieRepositoryAdapter.java @@ -1,9 +1,14 @@ package hanghae.infrastructure.adapter; import com.querydsl.core.BooleanBuilder; +import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; -import hanghae.domain.entity.*; +import hanghae.domain.entity.QMovie; +import hanghae.domain.entity.QSchedule; +import hanghae.domain.entity.QScreen; +import hanghae.domain.entity.QScreenSchedule; import hanghae.domain.port.MovieRepository; +import hanghae.domain.port.MovieScheduleScreenDto; import hanghae.domain.type.Genre; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -18,7 +23,7 @@ public class JpaMovieRepositoryAdapter implements MovieRepository { private final JPAQueryFactory queryFactory; @Override - public List findMoviesPlayingWithFilters( + public List findMoviesPlayingWithFilters( LocalDate now, String title, Genre genre @@ -35,7 +40,7 @@ public List findMoviesPlayingWithFilters( .and(movie.deletedAt.isNull()); if (title != null && !title.trim().isEmpty()) { - builder.and(movie.title.startsWith(title)); + builder.and(movie.title.contains(title)); } if (genre != null) { @@ -43,11 +48,27 @@ public List findMoviesPlayingWithFilters( } return queryFactory - .selectDistinct(movie) + .select( + Projections.constructor( + MovieScheduleScreenDto.class, + movie.movieId, + movie.title, + movie.ageRating, + movie.releaseDate, + movie.thumbnailUrl, + movie.runningTime, + movie.genre, + schedule.scheduleId, + schedule.startDateTime, + schedule.endDateTime, + screen.screenId, + screen.screenName + ) + ) .from(movie) - .leftJoin(movie.schedules, schedule).fetchJoin() - .leftJoin(schedule.screenSchedules, screenSchedule).fetchJoin() - .leftJoin(screenSchedule.screen, screen).fetchJoin() + .leftJoin(movie.schedules, schedule) + .leftJoin(schedule.screenSchedules, screenSchedule) + .leftJoin(screenSchedule.screen, screen) .where(builder) .orderBy( movie.releaseDate.desc(), From 53f9de1c2ed8d3e0c9b04b266ced857700841eb2 Mon Sep 17 00:00:00 2001 From: zun Date: Mon, 27 Jan 2025 18:10:53 +0900 Subject: [PATCH 13/29] feat: add secondary-index in movie --- domain/src/main/java/hanghae/domain/entity/Movie.java | 8 +++++++- .../hanghae/infrastructure/config/RedisCacheConfig.java | 2 -- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/domain/src/main/java/hanghae/domain/entity/Movie.java b/domain/src/main/java/hanghae/domain/entity/Movie.java index 8f3a0cc20..2de48c53a 100644 --- a/domain/src/main/java/hanghae/domain/entity/Movie.java +++ b/domain/src/main/java/hanghae/domain/entity/Movie.java @@ -9,7 +9,13 @@ import java.util.List; @Entity -@Table(name = "movies") +@Table( + name = "movies", + indexes = { + @Index(name = "idx_release_date", columnList = "release_date"), + @Index(name = "idx_title_genre", columnList = "title, genre") + } +) @NoArgsConstructor @AllArgsConstructor @Getter @Builder diff --git a/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java b/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java index 936233101..3f79a5c0b 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/config/RedisCacheConfig.java @@ -1,8 +1,6 @@ package hanghae.infrastructure.config; -import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; From e6ceb72a72064712fff050ee6ddde816abb6526a Mon Sep 17 00:00:00 2001 From: zun Date: Thu, 30 Jan 2025 04:51:23 +0900 Subject: [PATCH 14/29] feat: add member entity and logics, dummy-data for reservation --- .../application/port/MemberService.java | 9 ++++++++ .../service/MemberServiceImpl.java | 20 ++++++++++++++++++ .../java/hanghae/domain/entity/Member.java | 18 ++++++++++++++++ .../hanghae/domain/port/MemberRepository.java | 9 ++++++++ .../adapter/JpaMemberRepositoryAdapter.java | 21 +++++++++++++++++++ .../generater/DummyDataInitializer.java | 11 ++++++++++ .../repository/JpaMemberRepository.java | 7 +++++++ 7 files changed, 95 insertions(+) create mode 100644 application/src/main/java/hanghae/application/port/MemberService.java create mode 100644 application/src/main/java/hanghae/application/service/MemberServiceImpl.java create mode 100644 domain/src/main/java/hanghae/domain/entity/Member.java create mode 100644 domain/src/main/java/hanghae/domain/port/MemberRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMemberRepositoryAdapter.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMemberRepository.java diff --git a/application/src/main/java/hanghae/application/port/MemberService.java b/application/src/main/java/hanghae/application/port/MemberService.java new file mode 100644 index 000000000..aed212143 --- /dev/null +++ b/application/src/main/java/hanghae/application/port/MemberService.java @@ -0,0 +1,9 @@ +package hanghae.application.port; + +import hanghae.domain.entity.Member; + +public interface MemberService { + + // 애플리케이션용, 만약 클라이언트용이 필요하다면 반환 타입이 DTO 인 로직 추가 + Member findMemberById(Long memberId); +} diff --git a/application/src/main/java/hanghae/application/service/MemberServiceImpl.java b/application/src/main/java/hanghae/application/service/MemberServiceImpl.java new file mode 100644 index 000000000..0b9b9ade1 --- /dev/null +++ b/application/src/main/java/hanghae/application/service/MemberServiceImpl.java @@ -0,0 +1,20 @@ +package hanghae.application.service; + +import hanghae.application.port.MemberService; +import hanghae.domain.entity.Member; +import hanghae.domain.port.MemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class MemberServiceImpl implements MemberService { + + private final MemberRepository memberRepository; + + @Override + public Member findMemberById(Long memberId) { + return memberRepository.findMemberById(memberId) + .orElseThrow(() -> new IllegalArgumentException("No member found with id: " + memberId)); + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/Member.java b/domain/src/main/java/hanghae/domain/entity/Member.java new file mode 100644 index 000000000..33a31d0e4 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Member.java @@ -0,0 +1,18 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(name = "members") +@NoArgsConstructor +public class Member { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long memberId; + + @Setter + private String memberName; +} diff --git a/domain/src/main/java/hanghae/domain/port/MemberRepository.java b/domain/src/main/java/hanghae/domain/port/MemberRepository.java new file mode 100644 index 000000000..2aaa926be --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/MemberRepository.java @@ -0,0 +1,9 @@ +package hanghae.domain.port; + +import hanghae.domain.entity.Member; + +import java.util.Optional; + +public interface MemberRepository { + Optional findMemberById(Long memberId); +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMemberRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMemberRepositoryAdapter.java new file mode 100644 index 000000000..4efea2452 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaMemberRepositoryAdapter.java @@ -0,0 +1,21 @@ +package hanghae.infrastructure.adapter; + +import hanghae.domain.entity.Member; +import hanghae.domain.port.MemberRepository; +import hanghae.infrastructure.repository.JpaMemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +@RequiredArgsConstructor +public class JpaMemberRepositoryAdapter implements MemberRepository { + + private final JpaMemberRepository jpaMemberRepository; + + @Override + public Optional findMemberById(Long memberId) { + return jpaMemberRepository.findById(memberId); + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java index ddb684390..4e074cd54 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java @@ -18,6 +18,7 @@ //@RequiredArgsConstructor //public class DummyDataInitializer implements ApplicationRunner { // +// private final JpaMemberRepository memberRepository; // private final JpaMovieRepository movieRepository; // private final JpaScheduleRepository scheduleRepository; // private final JpaScreenRepository screenRepository; @@ -29,6 +30,7 @@ // @Override // @Transactional // public void run(ApplicationArguments args) throws Exception { +// createMembers(10); // List allScreens = createScreensAndSeats(50); // List allMovies = createMovies(500); // List allSchedules = createSchedules(10000, allMovies); @@ -36,6 +38,15 @@ // createScreenSchedules(allSchedules, allScreens); // } // +// private void createMembers(int memberCount) { +// for (int i = 1; i <= memberCount; i++) { +// Member member = new Member(); +// member.setMemberName("Member" + i); +// +// memberRepository.save(member); +// } +// } +// // private List createScreensAndSeats(int screenCount) { // List screens = new ArrayList<>(); // diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMemberRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMemberRepository.java new file mode 100644 index 000000000..558049c3f --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaMemberRepository.java @@ -0,0 +1,7 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.Member; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface JpaMemberRepository extends JpaRepository { +} From 0cfafce94c5543e645971be73650fc203d0d2712 Mon Sep 17 00:00:00 2001 From: zun Date: Thu, 30 Jan 2025 04:54:54 +0900 Subject: [PATCH 15/29] refactor: modify seat logics to find the seat by seatName and scheduleId --- .../hanghae/application/port/SeatService.java | 9 ++++++++ .../application/service/SeatServiceImpl.java | 20 ++++++++++++++++++ .../main/java/hanghae/domain/entity/Seat.java | 4 ++-- .../hanghae/domain/port/SeatRepository.java | 9 ++++++++ .../adapter/JpaSeatRepositoryAdapter.java | 21 +++++++++++++++++++ .../repository/JpaSeatRepository.java | 3 +++ 6 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 application/src/main/java/hanghae/application/port/SeatService.java create mode 100644 application/src/main/java/hanghae/application/service/SeatServiceImpl.java create mode 100644 domain/src/main/java/hanghae/domain/port/SeatRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaSeatRepositoryAdapter.java diff --git a/application/src/main/java/hanghae/application/port/SeatService.java b/application/src/main/java/hanghae/application/port/SeatService.java new file mode 100644 index 000000000..6acddfd77 --- /dev/null +++ b/application/src/main/java/hanghae/application/port/SeatService.java @@ -0,0 +1,9 @@ +package hanghae.application.port; + +import hanghae.domain.entity.Seat; + +public interface SeatService { + + // 애플리케이션용, 만약 클라이언트용이 필요하다면 반환 타입이 DTO 인 로직 추가 + Seat findSeatBySeatNameAndScreenId(String seatName, Long screenId); +} diff --git a/application/src/main/java/hanghae/application/service/SeatServiceImpl.java b/application/src/main/java/hanghae/application/service/SeatServiceImpl.java new file mode 100644 index 000000000..3a15a4040 --- /dev/null +++ b/application/src/main/java/hanghae/application/service/SeatServiceImpl.java @@ -0,0 +1,20 @@ +package hanghae.application.service; + +import hanghae.application.port.SeatService; +import hanghae.domain.entity.Seat; +import hanghae.domain.port.SeatRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class SeatServiceImpl implements SeatService { + + private final SeatRepository seatRepository; + + @Override + public Seat findSeatBySeatNameAndScreenId(String seatName, Long screenId) { + return seatRepository.findSeatBySeatNameAndScreenId(seatName, screenId) + .orElseThrow(() -> new IllegalArgumentException("No seat found with name: " + seatName)); + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/Seat.java b/domain/src/main/java/hanghae/domain/entity/Seat.java index 5fc937364..d4f48f063 100644 --- a/domain/src/main/java/hanghae/domain/entity/Seat.java +++ b/domain/src/main/java/hanghae/domain/entity/Seat.java @@ -1,8 +1,7 @@ package hanghae.domain.entity; import jakarta.persistence.*; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Entity @Table( @@ -16,6 +15,7 @@ public class Seat { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long seatId; + @Getter private String seatName; @ManyToOne diff --git a/domain/src/main/java/hanghae/domain/port/SeatRepository.java b/domain/src/main/java/hanghae/domain/port/SeatRepository.java new file mode 100644 index 000000000..17e1d5ba0 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/SeatRepository.java @@ -0,0 +1,9 @@ +package hanghae.domain.port; + +import hanghae.domain.entity.Seat; + +import java.util.Optional; + +public interface SeatRepository { + Optional findSeatBySeatNameAndScreenId(String seatName, Long screenId); +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaSeatRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaSeatRepositoryAdapter.java new file mode 100644 index 000000000..0ea0b0613 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaSeatRepositoryAdapter.java @@ -0,0 +1,21 @@ +package hanghae.infrastructure.adapter; + +import hanghae.domain.entity.Seat; +import hanghae.domain.port.SeatRepository; +import hanghae.infrastructure.repository.JpaSeatRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +@RequiredArgsConstructor +public class JpaSeatRepositoryAdapter implements SeatRepository { + + private final JpaSeatRepository jpaSeatRepository; + + @Override + public Optional findSeatBySeatNameAndScreenId(String seatName, Long screenId) { + return jpaSeatRepository.findSeatBySeatNameAndScreen_ScreenId(seatName, screenId); + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java index de580f55d..501c9326c 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaSeatRepository.java @@ -3,5 +3,8 @@ import hanghae.domain.entity.Seat; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface JpaSeatRepository extends JpaRepository { + Optional findSeatBySeatNameAndScreen_ScreenId(String seatName, Long screenId); } From c611f9eeb1ff49c3efe5435fa5302bf5279d2145 Mon Sep 17 00:00:00 2001 From: zun Date: Thu, 30 Jan 2025 04:58:09 +0900 Subject: [PATCH 16/29] feat: add logics to find the schedule for reservation --- .../application/port/ScheduleService.java | 9 ++++++++ .../application/port/ScreenService.java | 4 ++++ .../service/ScheduleServiceImpl.java | 19 +++++++++++++++++ .../domain/port/ScheduleRepository.java | 9 ++++++++ .../adapter/JpaScheduleRepositoryAdapter.java | 21 +++++++++++++++++++ 5 files changed, 62 insertions(+) create mode 100644 application/src/main/java/hanghae/application/port/ScheduleService.java create mode 100644 application/src/main/java/hanghae/application/port/ScreenService.java create mode 100644 application/src/main/java/hanghae/application/service/ScheduleServiceImpl.java create mode 100644 domain/src/main/java/hanghae/domain/port/ScheduleRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleRepositoryAdapter.java diff --git a/application/src/main/java/hanghae/application/port/ScheduleService.java b/application/src/main/java/hanghae/application/port/ScheduleService.java new file mode 100644 index 000000000..34527a9c6 --- /dev/null +++ b/application/src/main/java/hanghae/application/port/ScheduleService.java @@ -0,0 +1,9 @@ +package hanghae.application.port; + +import hanghae.domain.entity.Schedule; + +public interface ScheduleService { + + // 애플리케이션용, 만약 클라이언트용이 필요하다면 반환 타입이 DTO 인 로직 추가 + Schedule findScheduleById(Long scheduleId); +} diff --git a/application/src/main/java/hanghae/application/port/ScreenService.java b/application/src/main/java/hanghae/application/port/ScreenService.java new file mode 100644 index 000000000..58787bcbd --- /dev/null +++ b/application/src/main/java/hanghae/application/port/ScreenService.java @@ -0,0 +1,4 @@ +package hanghae.application.port; + +public interface ScreenService { +} diff --git a/application/src/main/java/hanghae/application/service/ScheduleServiceImpl.java b/application/src/main/java/hanghae/application/service/ScheduleServiceImpl.java new file mode 100644 index 000000000..944c2bb3c --- /dev/null +++ b/application/src/main/java/hanghae/application/service/ScheduleServiceImpl.java @@ -0,0 +1,19 @@ +package hanghae.application.service; + +import hanghae.application.port.ScheduleService; +import hanghae.domain.entity.Schedule; +import hanghae.domain.port.ScheduleRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class ScheduleServiceImpl implements ScheduleService { + + private final ScheduleRepository scheduleRepository; + + public Schedule findScheduleById(Long scheduleId) { + return scheduleRepository.findScheduleById(scheduleId) + .orElseThrow(() -> new IllegalArgumentException("No schedule found with id: " + scheduleId)); + } +} diff --git a/domain/src/main/java/hanghae/domain/port/ScheduleRepository.java b/domain/src/main/java/hanghae/domain/port/ScheduleRepository.java new file mode 100644 index 000000000..2064c306f --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/ScheduleRepository.java @@ -0,0 +1,9 @@ +package hanghae.domain.port; + +import hanghae.domain.entity.Schedule; + +import java.util.Optional; + +public interface ScheduleRepository { + Optional findScheduleById(Long scheduleId); +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleRepositoryAdapter.java new file mode 100644 index 000000000..b14432f44 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleRepositoryAdapter.java @@ -0,0 +1,21 @@ +package hanghae.infrastructure.adapter; + +import hanghae.domain.entity.Schedule; +import hanghae.domain.port.ScheduleRepository; +import hanghae.infrastructure.repository.JpaScheduleRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +@RequiredArgsConstructor +public class JpaScheduleRepositoryAdapter implements ScheduleRepository { + + private final JpaScheduleRepository jpaScheduleRepository; + + @Override + public Optional findScheduleById(Long scheduleId) { + return jpaScheduleRepository.findById(scheduleId); + } +} From 0f6935fbba2af2924509e680492c3636c321c25c Mon Sep 17 00:00:00 2001 From: zun Date: Thu, 30 Jan 2025 04:59:44 +0900 Subject: [PATCH 17/29] chore: move files for clarify --- .../java/hanghae/api/adapter/MovieController.java | 2 +- .../java/hanghae/api/http}/MovieController.http | 0 .../dto/{ => response}/MoviePlayingResponse.java | 11 +---------- .../java/hanghae/application/port/MovieService.java | 2 +- .../hanghae/application/service/MovieServiceImpl.java | 2 +- .../java/hanghae/domain/port/MovieRepository.java | 3 --- 6 files changed, 4 insertions(+), 16 deletions(-) rename api/src/{test/java/hanghae/api/adapter => main/java/hanghae/api/http}/MovieController.http (100%) rename application/src/main/java/hanghae/application/dto/{ => response}/MoviePlayingResponse.java (73%) diff --git a/api/src/main/java/hanghae/api/adapter/MovieController.java b/api/src/main/java/hanghae/api/adapter/MovieController.java index 00ed7918d..510e2c54e 100644 --- a/api/src/main/java/hanghae/api/adapter/MovieController.java +++ b/api/src/main/java/hanghae/api/adapter/MovieController.java @@ -1,6 +1,6 @@ package hanghae.api.adapter; -import hanghae.application.dto.MoviePlayingResponse; +import hanghae.application.dto.response.MoviePlayingResponse; import hanghae.application.port.MovieService; import hanghae.domain.type.Genre; import jakarta.validation.constraints.Size; diff --git a/api/src/test/java/hanghae/api/adapter/MovieController.http b/api/src/main/java/hanghae/api/http/MovieController.http similarity index 100% rename from api/src/test/java/hanghae/api/adapter/MovieController.http rename to api/src/main/java/hanghae/api/http/MovieController.http diff --git a/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java b/application/src/main/java/hanghae/application/dto/response/MoviePlayingResponse.java similarity index 73% rename from application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java rename to application/src/main/java/hanghae/application/dto/response/MoviePlayingResponse.java index 3b5974bc5..583efce52 100644 --- a/application/src/main/java/hanghae/application/dto/MoviePlayingResponse.java +++ b/application/src/main/java/hanghae/application/dto/response/MoviePlayingResponse.java @@ -1,20 +1,11 @@ -package hanghae.application.dto; +package hanghae.application.dto.response; import hanghae.application.dto.common.MovieResponse; import hanghae.application.dto.common.ScheduleResponse; import hanghae.application.dto.common.ScreenResponse; -import hanghae.domain.entity.Movie; -import hanghae.domain.entity.Schedule; -import hanghae.domain.entity.Screen; import hanghae.domain.port.MovieScheduleScreenDto; -import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; -import lombok.NoArgsConstructor; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; @Getter @Builder diff --git a/application/src/main/java/hanghae/application/port/MovieService.java b/application/src/main/java/hanghae/application/port/MovieService.java index f6aaea308..d424874d6 100644 --- a/application/src/main/java/hanghae/application/port/MovieService.java +++ b/application/src/main/java/hanghae/application/port/MovieService.java @@ -1,6 +1,6 @@ package hanghae.application.port; -import hanghae.application.dto.MoviePlayingResponse; +import hanghae.application.dto.response.MoviePlayingResponse; import hanghae.domain.type.Genre; import java.util.List; diff --git a/application/src/main/java/hanghae/application/service/MovieServiceImpl.java b/application/src/main/java/hanghae/application/service/MovieServiceImpl.java index d72a81751..89dbb8359 100644 --- a/application/src/main/java/hanghae/application/service/MovieServiceImpl.java +++ b/application/src/main/java/hanghae/application/service/MovieServiceImpl.java @@ -1,6 +1,6 @@ package hanghae.application.service; -import hanghae.application.dto.MoviePlayingResponse; +import hanghae.application.dto.response.MoviePlayingResponse; import hanghae.application.port.MovieService; import hanghae.domain.port.MovieRepository; import hanghae.domain.port.MovieScheduleScreenDto; diff --git a/domain/src/main/java/hanghae/domain/port/MovieRepository.java b/domain/src/main/java/hanghae/domain/port/MovieRepository.java index 92064388a..3ecd10394 100644 --- a/domain/src/main/java/hanghae/domain/port/MovieRepository.java +++ b/domain/src/main/java/hanghae/domain/port/MovieRepository.java @@ -1,13 +1,10 @@ package hanghae.domain.port; -import hanghae.domain.entity.Movie; import hanghae.domain.type.Genre; -import org.springframework.stereotype.Repository; import java.time.LocalDate; import java.util.List; -@Repository public interface MovieRepository { List findMoviesPlayingWithFilters( LocalDate now, From 2b64805a7e89ee31be5bcfc3e88427b7f1a5ed37 Mon Sep 17 00:00:00 2001 From: zun Date: Thu, 30 Jan 2025 08:03:30 +0900 Subject: [PATCH 18/29] feat: implement reservation api with test --- .../api/adapter/ReservationController.java | 26 ++++ .../api/http/ReservationController.http | 80 ++++++++++ .../adapter/ReservationControllerTest.java | 32 ++++ application/build.gradle | 2 + .../dto/request/ReservationRequest.java | 9 ++ .../dto/response/ReservationResponse.java | 29 ++++ .../application/port/ReservationService.java | 9 ++ .../service/ReservationServiceImpl.java | 143 ++++++++++++++++++ .../java/hanghae/domain/entity/Member.java | 2 + .../java/hanghae/domain/entity/Movie.java | 44 +++--- .../hanghae/domain/entity/Reservation.java | 73 +++++++++ .../domain/entity/ReservationSeat.java | 39 +++++ .../java/hanghae/domain/entity/Schedule.java | 4 +- .../domain/port/ReservationRepository.java | 14 ++ .../JpaReservationRepositoryAdapter.java | 32 ++++ .../repository/JpaReservationRepository.java | 13 ++ 16 files changed, 527 insertions(+), 24 deletions(-) create mode 100644 api/src/main/java/hanghae/api/adapter/ReservationController.java create mode 100644 api/src/main/java/hanghae/api/http/ReservationController.http create mode 100644 api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java create mode 100644 application/src/main/java/hanghae/application/dto/request/ReservationRequest.java create mode 100644 application/src/main/java/hanghae/application/dto/response/ReservationResponse.java create mode 100644 application/src/main/java/hanghae/application/port/ReservationService.java create mode 100644 application/src/main/java/hanghae/application/service/ReservationServiceImpl.java create mode 100644 domain/src/main/java/hanghae/domain/entity/Reservation.java create mode 100644 domain/src/main/java/hanghae/domain/entity/ReservationSeat.java create mode 100644 domain/src/main/java/hanghae/domain/port/ReservationRepository.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaReservationRepositoryAdapter.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaReservationRepository.java diff --git a/api/src/main/java/hanghae/api/adapter/ReservationController.java b/api/src/main/java/hanghae/api/adapter/ReservationController.java new file mode 100644 index 000000000..2c202ad56 --- /dev/null +++ b/api/src/main/java/hanghae/api/adapter/ReservationController.java @@ -0,0 +1,26 @@ +package hanghae.api.adapter; + +import hanghae.application.dto.request.ReservationRequest; +import hanghae.application.dto.response.ReservationResponse; +import hanghae.application.port.ReservationService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/reservation") +public class ReservationController { + + private final ReservationService reservationService; + + @PostMapping + public ResponseEntity createReservation( + @RequestBody ReservationRequest request) { + + return ResponseEntity.ok(reservationService.reserveSeat(request)); + } +} diff --git a/api/src/main/java/hanghae/api/http/ReservationController.http b/api/src/main/java/hanghae/api/http/ReservationController.http new file mode 100644 index 000000000..641021918 --- /dev/null +++ b/api/src/main/java/hanghae/api/http/ReservationController.http @@ -0,0 +1,80 @@ +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 1, + "scheduleId": 10, + "seatNames": ["A1", "A2", "A3"] +} + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ +"memberId": 2, +"scheduleId": 20, +"seatNames": ["A1", "A2", "A3", "B1", "B2", "B3"] +} + + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 3, + "scheduleId": 30, + "seatNames": ["A1"] +} + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 3, + "scheduleId": 30, + "seatNames": ["A2"] +} + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 3, + "scheduleId": 30, + "seatNames": ["A3"] +} + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 4, + "scheduleId": 40, + "seatNames": ["A1", "B1", "C1", "D1", "E1"] +} + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 5, + "scheduleId": 50, + "seatNames": ["A1"] +} + +### +POST http://localhost:8081/api/v1/reservation +Content-Type: application/json + +{ + "memberId": 6, + "scheduleId": 50, + "seatNames": ["A1"] +} \ No newline at end of file diff --git a/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java b/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java new file mode 100644 index 000000000..be3870290 --- /dev/null +++ b/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java @@ -0,0 +1,32 @@ +package hanghae.api.adapter; + +import hanghae.application.dto.request.ReservationRequest; +import hanghae.application.dto.response.ReservationResponse; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.web.client.RestClient; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +@Slf4j +class ReservationControllerTest { + + RestClient restClient = RestClient.create("http://localhost:8081"); + + @Test + void reserveSeatTest() { + ReservationResponse response = + reserve(new ReservationRequest(5L, 30L, List.of("B1", "B2", "B3"))); + System.out.println("Reservation response: " + response); + } + + ReservationResponse reserve(ReservationRequest request) { + return restClient.post() + .uri("/api/v1/reservation") + .body(request) + .retrieve() + .body(ReservationResponse.class); + } +} \ No newline at end of file diff --git a/application/build.gradle b/application/build.gradle index 646d129cc..ee9abddad 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -5,4 +5,6 @@ bootJar { dependencies { implementation project(':domain') implementation project(':infrastructure') + + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' } \ No newline at end of file diff --git a/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java b/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java new file mode 100644 index 000000000..8159edfbc --- /dev/null +++ b/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java @@ -0,0 +1,9 @@ +package hanghae.application.dto.request; + +import java.util.List; + +public record ReservationRequest( + Long memberId, + Long scheduleId, + List seatNames +) {} diff --git a/application/src/main/java/hanghae/application/dto/response/ReservationResponse.java b/application/src/main/java/hanghae/application/dto/response/ReservationResponse.java new file mode 100644 index 000000000..0ccc894aa --- /dev/null +++ b/application/src/main/java/hanghae/application/dto/response/ReservationResponse.java @@ -0,0 +1,29 @@ +package hanghae.application.dto.response; + +import hanghae.domain.entity.Reservation; +import hanghae.domain.entity.ReservationSeat; +import hanghae.domain.entity.Seat; + +import java.time.LocalDateTime; +import java.util.List; + +public record ReservationResponse( + LocalDateTime startDateTime, + LocalDateTime endDateTime, + List seatName +) { + public static ReservationResponse from(Reservation reservation) { + return new ReservationResponse( + reservation.getStartDateTime(), + reservation.getEndDateTime(), + getSeatNames(reservation) + ); + } + + private static List getSeatNames(Reservation reservation) { + return reservation.getReservationSeats().stream() + .map(ReservationSeat::getSeat) + .map(Seat::getSeatName) + .toList(); + } +} diff --git a/application/src/main/java/hanghae/application/port/ReservationService.java b/application/src/main/java/hanghae/application/port/ReservationService.java new file mode 100644 index 000000000..1dcbf798b --- /dev/null +++ b/application/src/main/java/hanghae/application/port/ReservationService.java @@ -0,0 +1,9 @@ +package hanghae.application.port; + +import hanghae.application.dto.request.ReservationRequest; +import hanghae.application.dto.response.ReservationResponse; + +public interface ReservationService { + + ReservationResponse reserveSeat(ReservationRequest request); +} diff --git a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java new file mode 100644 index 000000000..d80ad77b8 --- /dev/null +++ b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java @@ -0,0 +1,143 @@ +package hanghae.application.service; + +import hanghae.application.dto.request.ReservationRequest; +import hanghae.application.dto.response.ReservationResponse; +import hanghae.application.port.MemberService; +import hanghae.application.port.ReservationService; +import hanghae.application.port.ScheduleService; +import hanghae.application.port.SeatService; +import hanghae.domain.entity.*; +import hanghae.domain.port.ReservationRepository; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class ReservationServiceImpl implements ReservationService { + + private final MemberService memberService; + private final ScheduleService scheduleService; + private final SeatService seatService; + private final ReservationRepository reservationRepository; + + @Override + @Transactional + public ReservationResponse reserveSeat(ReservationRequest request) { + Reservation reservation = initReservation(request); + List seats = getSeats(request); + List reservationSeats = toReservationSeats(reservation, seats); + + checkDoubleBooking(request); + checkReservationPolicy(reservation, reservationSeats, 5); + + reservation.setReservationSeats(reservationSeats); + reservationSeats.forEach(reservationSeat -> reservationSeat.setReserved(true)); + + return ReservationResponse.from(reservationRepository.reserve(reservation)); + } + + private Reservation initReservation(ReservationRequest request) { + Member member = memberService.findMemberById(request.memberId()); + Schedule schedule = scheduleService.findScheduleById(request.scheduleId()); + + return Reservation.of(member, schedule); + } + + private List getSeats(ReservationRequest request) { + return request.seatNames() + .stream() + .map(seatName -> seatService.findSeatBySeatNameAndScreenId(seatName, request.scheduleId())) + .toList(); + } + + private List toReservationSeats(Reservation reservation, List seats) { + return seats.stream() + .map(seat -> ReservationSeat.of(reservation, seat)) + .toList(); + } + + private void checkDoubleBooking(ReservationRequest request) { + List reservations = reservationRepository.findReservationByScheduleId(request.scheduleId()) + .orElse(new ArrayList<>()); + + if (reservations.isEmpty()) { + return; + } + + if (isReserved(reservations)) { + throw new IllegalArgumentException("이미 예매된 좌석입니다."); + } + } + + private boolean isReserved(List reservations) { + return reservations.stream() + .flatMap(reservation -> reservation.getReservationSeats().stream()) + .anyMatch(ReservationSeat::isReserved); + } + + private void checkReservationPolicy(Reservation reservation, List reservationSeats, int limit) { + if (isReservationOverLimit(reservationSeats, limit) + || isTotalReservationOverLimit(reservation, reservationSeats, limit) + ) { + throw new IllegalArgumentException("하나의 상영에 대해 한 사람당 최대 5개의 좌석만 예매 가능합니다."); + } + + if (isAbusing(reservationSeats, limit)) { + throw new IllegalArgumentException("하나의 상영에 대해 5개의 표를 예매하는 경우 좌석은 붙어있어야 합니다."); + } + } + + private boolean isReservationOverLimit(List reservationSeats, int limit) { + return reservationSeats.size() > limit; + } + + private boolean isTotalReservationOverLimit( + Reservation reservation, + List reservationSeats, + int limit + ) { + List reservations = reservationRepository.findReservationByMemberIdAndScheduleId( + reservation.getMemberId(), + reservation.getScheduleId() + ).orElse(new ArrayList<>()); + + if (reservations.isEmpty()) { + return false; + } + + if (reservations.size() == 2) { + throw new IllegalArgumentException("하나의 상영에 대해 최대 2개까지 예약할 수 있습니다."); + } + + int count = reservations.getFirst().getReservationSeats().size(); + return count + reservationSeats.size() > limit; + } + + private boolean isAbusing(List reservationSeats, int limit) { + if (reservationSeats.size() == limit) { + return !isConsecutiveSeats(reservationSeats, limit); + } return false; + } + + private boolean isConsecutiveSeats(List reservationSeats, int limit) { + List seatNames = getSeatNames(reservationSeats); + return isSameRow(seatNames); + } + + private List getSeatNames(List reservationSeats) { + return reservationSeats.stream() + .map(reservationSeat -> reservationSeat.getSeat().getSeatName()) + .sorted() + .toList(); + } + + private boolean isSameRow(List seatNames) { + char row = seatNames.getFirst().charAt(0); + + return seatNames.stream().allMatch(seatName -> row == seatName.charAt(0)); + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/Member.java b/domain/src/main/java/hanghae/domain/entity/Member.java index 33a31d0e4..199224083 100644 --- a/domain/src/main/java/hanghae/domain/entity/Member.java +++ b/domain/src/main/java/hanghae/domain/entity/Member.java @@ -1,6 +1,7 @@ package hanghae.domain.entity; import jakarta.persistence.*; +import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -11,6 +12,7 @@ public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Getter private Long memberId; @Setter diff --git a/domain/src/main/java/hanghae/domain/entity/Movie.java b/domain/src/main/java/hanghae/domain/entity/Movie.java index 2de48c53a..36a1b5bdf 100644 --- a/domain/src/main/java/hanghae/domain/entity/Movie.java +++ b/domain/src/main/java/hanghae/domain/entity/Movie.java @@ -16,34 +16,36 @@ @Index(name = "idx_title_genre", columnList = "title, genre") } ) -@NoArgsConstructor + + @NoArgsConstructor @AllArgsConstructor -@Getter @Builder -public class Movie extends Base{ + @Getter +@Builder + public class Movie extends Base{ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long movieId; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long movieId; - private String title; + private String title; - @Enumerated(EnumType.STRING) - private AgeRating ageRating; + @Enumerated(EnumType.STRING) + private AgeRating ageRating; - private LocalDate releaseDate; + private LocalDate releaseDate; - private String thumbnailUrl; + private String thumbnailUrl; - private int runningTime; + private int runningTime; - @Enumerated(EnumType.STRING) - private Genre genre; + @Enumerated(EnumType.STRING) + private Genre genre; - @Setter - @OneToMany( - mappedBy = "movie", - cascade = CascadeType.ALL, - orphanRemoval = true - ) - private List schedules; + @Setter + @OneToMany( + mappedBy = "movie", + cascade = CascadeType.ALL, + orphanRemoval = true +) +private List schedules; } diff --git a/domain/src/main/java/hanghae/domain/entity/Reservation.java b/domain/src/main/java/hanghae/domain/entity/Reservation.java new file mode 100644 index 000000000..c9d5783d3 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/Reservation.java @@ -0,0 +1,73 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import static jakarta.persistence.FetchType.LAZY; + +@Entity +@Table( + name = "reservations", + indexes = { + @Index(name = "idx_schedule_id_member_id", columnList = "schedule_id, member_id") + } +) +@NoArgsConstructor +public class Reservation extends Base { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long reservationId; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "member_id") + private Member member; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "schedule_id") + private Schedule schedule; + + @Getter + @Setter + @OneToMany( + mappedBy = "reservation", + cascade = CascadeType.ALL, + orphanRemoval = true + ) + private List reservationSeats; + + @Version + private Long version; + + public static Reservation of(Member member, Schedule schedule) { + Reservation reservation = new Reservation(); + reservation.member = member; + reservation.schedule = schedule; + reservation.reservationSeats = new ArrayList<>(); + reservation.version = 1L; + + return reservation; + } + + public LocalDateTime getStartDateTime() { + return schedule.getStartDateTime(); + } + + public LocalDateTime getEndDateTime() { + return schedule.getEndDateTime(); + } + + public Long getMemberId() { + return member.getMemberId(); + } + + public Long getScheduleId() { + return schedule.getScheduleId(); + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java b/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java new file mode 100644 index 000000000..fc9acaa55 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java @@ -0,0 +1,39 @@ +package hanghae.domain.entity; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import static jakarta.persistence.FetchType.*; + +@Entity +@Table(name = "reservation_seat") +@NoArgsConstructor +public class ReservationSeat { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long reservationSeatId; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "reservation_id") + private Reservation reservation; + + @Getter + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "seat_id") + private Seat seat; + + @Getter @Setter + private boolean isReserved; + + public static ReservationSeat of(Reservation reservation, Seat seat) { + ReservationSeat reservationSeat = new ReservationSeat(); + + reservationSeat.reservation = reservation; + reservationSeat.seat = seat; + + return reservationSeat; + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/Schedule.java b/domain/src/main/java/hanghae/domain/entity/Schedule.java index fbb5b1803..129fe5983 100644 --- a/domain/src/main/java/hanghae/domain/entity/Schedule.java +++ b/domain/src/main/java/hanghae/domain/entity/Schedule.java @@ -9,6 +9,7 @@ import java.util.HashSet; import java.util.Set; +@Getter @Entity @Table(name = "schedules") @NoArgsConstructor @@ -18,7 +19,6 @@ public class Schedule extends Base { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long scheduleId; - @Getter @OneToMany( mappedBy = "schedule", cascade = CascadeType.ALL, @@ -31,10 +31,8 @@ public class Schedule extends Base { @JoinColumn(name = "movie_id") private Movie movie; - @Getter private LocalDateTime startDateTime; - @Getter private LocalDateTime endDateTime; public void setStartDateTimeAndEndDateTime( diff --git a/domain/src/main/java/hanghae/domain/port/ReservationRepository.java b/domain/src/main/java/hanghae/domain/port/ReservationRepository.java new file mode 100644 index 000000000..37c0f0b98 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/ReservationRepository.java @@ -0,0 +1,14 @@ +package hanghae.domain.port; + +import hanghae.domain.entity.Reservation; + +import java.util.List; +import java.util.Optional; + +public interface ReservationRepository { + Reservation reserve(Reservation reservation); + + Optional> findReservationByScheduleId(Long scheduleId); + + Optional> findReservationByMemberIdAndScheduleId(Long memberId, Long scheduleId); +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaReservationRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaReservationRepositoryAdapter.java new file mode 100644 index 000000000..d8c3adc62 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaReservationRepositoryAdapter.java @@ -0,0 +1,32 @@ +package hanghae.infrastructure.adapter; + +import hanghae.domain.entity.Reservation; +import hanghae.domain.port.ReservationRepository; +import hanghae.infrastructure.repository.JpaReservationRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +@RequiredArgsConstructor +public class JpaReservationRepositoryAdapter implements ReservationRepository { + + private final JpaReservationRepository jpaReservationRepository; + + @Override + public Reservation reserve(Reservation reservation) { + return jpaReservationRepository.save(reservation); + } + + @Override + public Optional> findReservationByScheduleId(Long scheduleId) { + return jpaReservationRepository.findReservationsByScheduleScheduleId(scheduleId); + } + + @Override + public Optional> findReservationByMemberIdAndScheduleId(Long memberId, Long scheduleId) { + return jpaReservationRepository.findReservationByMemberMemberIdAndScheduleScheduleId(memberId, scheduleId); + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaReservationRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaReservationRepository.java new file mode 100644 index 000000000..6a3fa95b3 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaReservationRepository.java @@ -0,0 +1,13 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.Reservation; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface JpaReservationRepository extends JpaRepository { + Optional> findReservationsByScheduleScheduleId(Long scheduleId); + + Optional> findReservationByMemberMemberIdAndScheduleScheduleId(Long memberId, Long scheduleId); +} From 9519af2bf7045636e4bd84dbeb21de227a9a12a0 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 01:08:22 +0900 Subject: [PATCH 19/29] chore: update dummy-data generator and entity field --- .../hanghae/domain/entity/ReservationSeat.java | 14 +++++--------- .../main/java/hanghae/domain/entity/Seat.java | 2 +- .../hanghae/domain/type/ReservationSeatId.java | 17 +++++++++++++++++ .../common/generater/DummyDataInitializer.java | 15 ++++++++++++++- 4 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 domain/src/main/java/hanghae/domain/type/ReservationSeatId.java diff --git a/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java b/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java index fc9acaa55..2b27a685d 100644 --- a/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java +++ b/domain/src/main/java/hanghae/domain/entity/ReservationSeat.java @@ -1,9 +1,9 @@ package hanghae.domain.entity; +import hanghae.domain.type.ReservationSeatId; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.Setter; import static jakarta.persistence.FetchType.*; @@ -12,22 +12,18 @@ @NoArgsConstructor public class ReservationSeat { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long reservationSeatId; + @EmbeddedId + private ReservationSeatId reservationSeatId = new ReservationSeatId(); @ManyToOne(fetch = LAZY) - @JoinColumn(name = "reservation_id") + @MapsId("reservationId") private Reservation reservation; @Getter @ManyToOne(fetch = LAZY) - @JoinColumn(name = "seat_id") + @MapsId("seatId") private Seat seat; - @Getter @Setter - private boolean isReserved; - public static ReservationSeat of(Reservation reservation, Seat seat) { ReservationSeat reservationSeat = new ReservationSeat(); diff --git a/domain/src/main/java/hanghae/domain/entity/Seat.java b/domain/src/main/java/hanghae/domain/entity/Seat.java index d4f48f063..7d4b98902 100644 --- a/domain/src/main/java/hanghae/domain/entity/Seat.java +++ b/domain/src/main/java/hanghae/domain/entity/Seat.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import lombok.*; +@Getter @Entity @Table( name = "seats", @@ -15,7 +16,6 @@ public class Seat { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long seatId; - @Getter private String seatName; @ManyToOne diff --git a/domain/src/main/java/hanghae/domain/type/ReservationSeatId.java b/domain/src/main/java/hanghae/domain/type/ReservationSeatId.java new file mode 100644 index 000000000..fa6ceee61 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/type/ReservationSeatId.java @@ -0,0 +1,17 @@ +package hanghae.domain.type; + +import jakarta.persistence.Embeddable; +import lombok.*; + +import java.io.Serializable; + +@Embeddable +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +public class ReservationSeatId implements Serializable { + + private Long reservationId; + + private Long seatId; +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java index 4e074cd54..fc49eddfc 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java @@ -24,17 +24,18 @@ // private final JpaScreenRepository screenRepository; // private final JpaScreenScheduleRepository screenScheduleRepository; // private final JpaSeatRepository seatRepository; +// private final JpaScheduleSeatRepository scheduleSeatRepository; // // private final Random random = new Random(); // // @Override -// @Transactional // public void run(ApplicationArguments args) throws Exception { // createMembers(10); // List allScreens = createScreensAndSeats(50); // List allMovies = createMovies(500); // List allSchedules = createSchedules(10000, allMovies); // +// createScheduleSeats(allSchedules); // createScreenSchedules(allSchedules, allScreens); // } // @@ -131,6 +132,18 @@ // return schedules; // } // +// private void createScheduleSeats(List schedules) { +// List seats = seatRepository.findAll(); +// +// for (Schedule schedule : schedules) { +// for (Seat seat : seats) { +// ScheduleSeat scheduleSeat = new ScheduleSeat(schedule, seat); +// +// scheduleSeatRepository.save(scheduleSeat); +// } +// } +// } +// // private void createScreenSchedules(List allSchedules, List allScreens) { // int screenSize = allScreens.size(); // From e8ed6e5eacb474b173728bf8d606041e6e37a7a3 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 03:14:12 +0900 Subject: [PATCH 20/29] =?UTF-8?q?feat:=20=E2=9C=85pessimistic=20lock=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/port/ScheduleSeatService.java | 8 ++++ .../service/ReservationServiceImpl.java | 38 ++++++++----------- .../service/ScheduleSeatServiceImpl.java | 25 ++++++++++++ .../hanghae/domain/entity/ScheduleSeat.java | 35 +++++++++++++++++ .../domain/port/ScheduleSeatRepository.java | 10 +++++ .../hanghae/domain/type/ScheduleSeatId.java | 17 +++++++++ .../JpaScheduleSeatRepositoryAdapter.java | 21 ++++++++++ .../repository/JpaScheduleSeatRepository.java | 25 ++++++++++++ 8 files changed, 157 insertions(+), 22 deletions(-) create mode 100644 application/src/main/java/hanghae/application/port/ScheduleSeatService.java create mode 100644 application/src/main/java/hanghae/application/service/ScheduleSeatServiceImpl.java create mode 100644 domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java create mode 100644 domain/src/main/java/hanghae/domain/port/ScheduleSeatRepository.java create mode 100644 domain/src/main/java/hanghae/domain/type/ScheduleSeatId.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleSeatRepositoryAdapter.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java diff --git a/application/src/main/java/hanghae/application/port/ScheduleSeatService.java b/application/src/main/java/hanghae/application/port/ScheduleSeatService.java new file mode 100644 index 000000000..90a17152e --- /dev/null +++ b/application/src/main/java/hanghae/application/port/ScheduleSeatService.java @@ -0,0 +1,8 @@ +package hanghae.application.port; + +import hanghae.domain.entity.ScheduleSeat; + +public interface ScheduleSeatService { + + ScheduleSeat findScheduleSeatByIds(Long scheduleId, Long seatId); +} diff --git a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java index d80ad77b8..f9690f107 100644 --- a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java +++ b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java @@ -2,10 +2,7 @@ import hanghae.application.dto.request.ReservationRequest; import hanghae.application.dto.response.ReservationResponse; -import hanghae.application.port.MemberService; -import hanghae.application.port.ReservationService; -import hanghae.application.port.ScheduleService; -import hanghae.application.port.SeatService; +import hanghae.application.port.*; import hanghae.domain.entity.*; import hanghae.domain.port.ReservationRepository; import jakarta.transaction.Transactional; @@ -22,6 +19,8 @@ public class ReservationServiceImpl implements ReservationService { private final MemberService memberService; private final ScheduleService scheduleService; private final SeatService seatService; + private final ScheduleSeatService scheduleSeatService; + private final ReservationRepository reservationRepository; @Override @@ -29,13 +28,15 @@ public class ReservationServiceImpl implements ReservationService { public ReservationResponse reserveSeat(ReservationRequest request) { Reservation reservation = initReservation(request); List seats = getSeats(request); - List reservationSeats = toReservationSeats(reservation, seats); - checkDoubleBooking(request); + List scheduleSeats = getScheduleSeats(request, seats); + checkDoubleBooking(scheduleSeats); + + List reservationSeats = toReservationSeats(reservation, seats); checkReservationPolicy(reservation, reservationSeats, 5); reservation.setReservationSeats(reservationSeats); - reservationSeats.forEach(reservationSeat -> reservationSeat.setReserved(true)); + scheduleSeats.forEach(scheduleSeat -> scheduleSeat.setReserved(true)); return ReservationResponse.from(reservationRepository.reserve(reservation)); } @@ -54,31 +55,24 @@ private List getSeats(ReservationRequest request) { .toList(); } + private List getScheduleSeats(ReservationRequest request, List seats) { + return seats.stream() + .map(seat -> scheduleSeatService.findScheduleSeatByIds(request.scheduleId(), seat.getSeatId())) + .toList(); + } + private List toReservationSeats(Reservation reservation, List seats) { return seats.stream() .map(seat -> ReservationSeat.of(reservation, seat)) .toList(); } - private void checkDoubleBooking(ReservationRequest request) { - List reservations = reservationRepository.findReservationByScheduleId(request.scheduleId()) - .orElse(new ArrayList<>()); - - if (reservations.isEmpty()) { - return; - } - - if (isReserved(reservations)) { + private void checkDoubleBooking(List scheduleSeats) { + if (scheduleSeats.stream().anyMatch(ScheduleSeat::isReserved)) { throw new IllegalArgumentException("이미 예매된 좌석입니다."); } } - private boolean isReserved(List reservations) { - return reservations.stream() - .flatMap(reservation -> reservation.getReservationSeats().stream()) - .anyMatch(ReservationSeat::isReserved); - } - private void checkReservationPolicy(Reservation reservation, List reservationSeats, int limit) { if (isReservationOverLimit(reservationSeats, limit) || isTotalReservationOverLimit(reservation, reservationSeats, limit) diff --git a/application/src/main/java/hanghae/application/service/ScheduleSeatServiceImpl.java b/application/src/main/java/hanghae/application/service/ScheduleSeatServiceImpl.java new file mode 100644 index 000000000..c78e09202 --- /dev/null +++ b/application/src/main/java/hanghae/application/service/ScheduleSeatServiceImpl.java @@ -0,0 +1,25 @@ +package hanghae.application.service; + +import hanghae.application.port.ScheduleSeatService; +import hanghae.domain.entity.ScheduleSeat; +import hanghae.domain.port.ScheduleSeatRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class ScheduleSeatServiceImpl implements ScheduleSeatService { + + private final ScheduleSeatRepository scheduleSeatRepository; + + @Override + @Transactional + public ScheduleSeat findScheduleSeatByIds(Long scheduleId, Long seatId) { + return scheduleSeatRepository.findScheduleSeatByIds(scheduleId, seatId) + .orElseThrow(() -> new IllegalArgumentException( + "No ScheduleSeat found with ids: " + scheduleId + ", " + seatId + ) + ); + } +} diff --git a/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java b/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java new file mode 100644 index 000000000..d34bb783d --- /dev/null +++ b/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java @@ -0,0 +1,35 @@ +package hanghae.domain.entity; + +import hanghae.domain.type.ScheduleSeatId; +import jakarta.persistence.*; +import lombok.*; + +@Entity +@Table(name = "schedule_seat") +@NoArgsConstructor +public class ScheduleSeat { + + // 장점: 락 대상을 관라하기 깔끔함 + // 단점: 스케줄 * 상영관 수 * 25개의 데이터 삽입 + + @Setter + @EmbeddedId + private ScheduleSeatId id = new ScheduleSeatId(); + + @ManyToOne + @MapsId("scheduleId") + private Schedule schedule; + + @ManyToOne + @MapsId("seatId") + private Seat seat; + + @Getter @Setter + private boolean reserved; + + public ScheduleSeat(Schedule schedule, Seat seat) { + this.schedule = schedule; + this.seat = seat; + this.reserved = false; + } +} diff --git a/domain/src/main/java/hanghae/domain/port/ScheduleSeatRepository.java b/domain/src/main/java/hanghae/domain/port/ScheduleSeatRepository.java new file mode 100644 index 000000000..f7e096a30 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/port/ScheduleSeatRepository.java @@ -0,0 +1,10 @@ +package hanghae.domain.port; + +import hanghae.domain.entity.ScheduleSeat; + +import java.util.Optional; + +public interface ScheduleSeatRepository { + + Optional findScheduleSeatByIds(Long scheduleId, Long seatId); +} diff --git a/domain/src/main/java/hanghae/domain/type/ScheduleSeatId.java b/domain/src/main/java/hanghae/domain/type/ScheduleSeatId.java new file mode 100644 index 000000000..1bfdf5933 --- /dev/null +++ b/domain/src/main/java/hanghae/domain/type/ScheduleSeatId.java @@ -0,0 +1,17 @@ +package hanghae.domain.type; + +import jakarta.persistence.Embeddable; +import lombok.*; + +import java.io.Serializable; + +@Embeddable +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +public class ScheduleSeatId implements Serializable { + + private Long scheduleId; + + private Long seatId; +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleSeatRepositoryAdapter.java b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleSeatRepositoryAdapter.java new file mode 100644 index 000000000..9e9657a3b --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/adapter/JpaScheduleSeatRepositoryAdapter.java @@ -0,0 +1,21 @@ +package hanghae.infrastructure.adapter; + +import hanghae.domain.entity.ScheduleSeat; +import hanghae.domain.port.ScheduleSeatRepository; +import hanghae.infrastructure.repository.JpaScheduleSeatRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +@RequiredArgsConstructor +public class JpaScheduleSeatRepositoryAdapter implements ScheduleSeatRepository { + + private final JpaScheduleSeatRepository jpaScheduleSeatRepository; + + @Override + public Optional findScheduleSeatByIds(Long scheduleId, Long seatId) { + return jpaScheduleSeatRepository.findScheduleSeatByScheduleIdAndSeatId(scheduleId, seatId); + } +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java new file mode 100644 index 000000000..e07cf28c4 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java @@ -0,0 +1,25 @@ +package hanghae.infrastructure.repository; + +import hanghae.domain.entity.ScheduleSeat; +import hanghae.domain.type.ScheduleSeatId; +import jakarta.persistence.LockModeType; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.Optional; + +public interface JpaScheduleSeatRepository extends JpaRepository { + + // 비관적 락 적용 + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query( + "select ss from ScheduleSeat ss " + + "where ss.schedule.scheduleId = :scheduleId " + + "and ss.seat.seatId = :seatId" + ) + Optional findScheduleSeatByScheduleIdAndSeatId( + @Param("scheduleId") Long scheduleId, + @Param("seatId") Long seatId); +} From db7ba074696bec72b9f919037850f1ad749fc929 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 05:21:17 +0900 Subject: [PATCH 21/29] feat: add test logic for pessimistic-lock --- api/build.gradle | 2 + .../api/http/ReservationController.http | 16 ++--- .../api/ReservationConcurrencyTest.java | 71 +++++++++++++++++++ .../adapter/ReservationControllerTest.java | 6 +- .../dto/request/ReservationRequest.java | 1 + .../service/ReservationServiceImpl.java | 2 +- 6 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 api/src/test/java/hanghae/api/ReservationConcurrencyTest.java diff --git a/api/build.gradle b/api/build.gradle index 5653ccc13..a3f564f59 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -10,4 +10,6 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' + + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' } \ No newline at end of file diff --git a/api/src/main/java/hanghae/api/http/ReservationController.http b/api/src/main/java/hanghae/api/http/ReservationController.http index 641021918..c0861dac5 100644 --- a/api/src/main/java/hanghae/api/http/ReservationController.http +++ b/api/src/main/java/hanghae/api/http/ReservationController.http @@ -1,4 +1,4 @@ -### +### 성공 POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -8,7 +8,7 @@ Content-Type: application/json "seatNames": ["A1", "A2", "A3"] } -### +### 하나의 상영에 대해 한 사람당 최대 5개의 좌석만 예매 가능합니다. POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -19,7 +19,7 @@ Content-Type: application/json } -### +### 성공 POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -29,7 +29,7 @@ Content-Type: application/json "seatNames": ["A1"] } -### +### 성공 POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -39,7 +39,7 @@ Content-Type: application/json "seatNames": ["A2"] } -### +### 하나의 상영에 대해 최대 2개까지 예약할 수 있습니다. POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -49,7 +49,7 @@ Content-Type: application/json "seatNames": ["A3"] } -### +### 하나의 상영에 대해 5개의 표를 예매하는 경우 좌석은 붙어있어야 합니다. POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -59,7 +59,7 @@ Content-Type: application/json "seatNames": ["A1", "B1", "C1", "D1", "E1"] } -### +### 성공 POST http://localhost:8081/api/v1/reservation Content-Type: application/json @@ -69,7 +69,7 @@ Content-Type: application/json "seatNames": ["A1"] } -### +### 이미 예매된 좌석입니다. POST http://localhost:8081/api/v1/reservation Content-Type: application/json diff --git a/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java b/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java new file mode 100644 index 000000000..767937e90 --- /dev/null +++ b/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java @@ -0,0 +1,71 @@ +package hanghae.api; + +import hanghae.application.dto.request.ReservationRequest; +import hanghae.application.port.ReservationService; +import hanghae.infrastructure.repository.JpaReservationRepository; +import jakarta.transaction.Transactional; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.util.List; +import java.util.concurrent.CountDownLatch; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@ActiveProfiles("dev") +class ReservationConcurrencyTest { + + @Autowired private ReservationService reservationService; + @Autowired private JpaReservationRepository jpaReservationRepository; + + @AfterEach + void clean() { + jpaReservationRepository.deleteAll(); + } + + @Test + @Transactional + // 이거 롤백 어떻게 하지..? + void reservePessimisticLockTest() throws InterruptedException { + Long memberId = 5L; + Long screenId = 50L; + Long scheduleId = 500L; + String seatName = "A1"; + + int threads = 10; + CountDownLatch startLatch = new CountDownLatch(1); + CountDownLatch endLatch = new CountDownLatch(threads); + + for (int i = 0; i < threads; i++) { + new Thread(() -> { + try { + startLatch.await(); + + ReservationRequest request = new ReservationRequest( + memberId, + screenId, + scheduleId, + List.of(seatName) + ); + + reservationService.reserveSeat(request); + System.out.println("Reserved seat " + seatName); + } catch (Exception e) { + System.out.println("Thread Exception: " + e.getMessage()); + } finally { + endLatch.countDown(); + } + }).start(); + } + + startLatch.countDown(); + endLatch.await(); + + Assertions.assertThat(jpaReservationRepository.findAll()).hasSize(1); + } +} \ No newline at end of file diff --git a/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java b/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java index be3870290..b8b571000 100644 --- a/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java +++ b/api/src/test/java/hanghae/api/adapter/ReservationControllerTest.java @@ -2,7 +2,6 @@ import hanghae.application.dto.request.ReservationRequest; import hanghae.application.dto.response.ReservationResponse; -import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestClient; @@ -10,15 +9,14 @@ import static org.junit.jupiter.api.Assertions.*; -@Slf4j class ReservationControllerTest { RestClient restClient = RestClient.create("http://localhost:8081"); - @Test + // @Test void reserveSeatTest() { ReservationResponse response = - reserve(new ReservationRequest(5L, 30L, List.of("B1", "B2", "B3"))); + reserve(new ReservationRequest(5L, 5L, 30L, List.of("B1", "B2", "B3"))); System.out.println("Reservation response: " + response); } diff --git a/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java b/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java index 8159edfbc..6bb8e7f93 100644 --- a/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java +++ b/application/src/main/java/hanghae/application/dto/request/ReservationRequest.java @@ -4,6 +4,7 @@ public record ReservationRequest( Long memberId, + Long screenId, Long scheduleId, List seatNames ) {} diff --git a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java index f9690f107..1d5ab6720 100644 --- a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java +++ b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java @@ -51,7 +51,7 @@ private Reservation initReservation(ReservationRequest request) { private List getSeats(ReservationRequest request) { return request.seatNames() .stream() - .map(seatName -> seatService.findSeatBySeatNameAndScreenId(seatName, request.scheduleId())) + .map(seatName -> seatService.findSeatBySeatNameAndScreenId(seatName, request.screenId())) .toList(); } From d256a83726685bbfeb1b8043fca478e300fe7fd5 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 07:44:07 +0900 Subject: [PATCH 22/29] =?UTF-8?q?feat:=20=E2=9C=85optimistic=20lock=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/ReservationConcurrencyTest.java | 50 +++++++++++++++++-- .../hanghae/domain/entity/Reservation.java | 3 -- .../hanghae/domain/entity/ScheduleSeat.java | 4 ++ .../generater/DummyDataInitializer.java | 6 ++- .../repository/JpaScheduleSeatRepository.java | 11 ++++ 5 files changed, 66 insertions(+), 8 deletions(-) diff --git a/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java b/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java index 767937e90..2c9018383 100644 --- a/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java +++ b/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java @@ -3,9 +3,11 @@ import hanghae.application.dto.request.ReservationRequest; import hanghae.application.port.ReservationService; import hanghae.infrastructure.repository.JpaReservationRepository; +import jakarta.persistence.OptimisticLockException; import jakarta.transaction.Transactional; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -28,9 +30,9 @@ void clean() { jpaReservationRepository.deleteAll(); } - @Test - @Transactional - // 이거 롤백 어떻게 하지..? + // @Test + @DisplayName("pessimistic lock test") + // 이거 멀티 스레드라 트랜젝션 관리 안되는데 롤백 어떻게 하지..? void reservePessimisticLockTest() throws InterruptedException { Long memberId = 5L; Long screenId = 50L; @@ -68,4 +70,46 @@ void reservePessimisticLockTest() throws InterruptedException { Assertions.assertThat(jpaReservationRepository.findAll()).hasSize(1); } + + @Test + @DisplayName("optimistic lock test") + void reserveOptimisticLockTest() throws InterruptedException { + Long memberId = 5L; + Long screenId = 50L; + Long scheduleId = 500L; + String seatName = "A1"; + + int threads = 10; + CountDownLatch startLatch = new CountDownLatch(1); + CountDownLatch endLatch = new CountDownLatch(threads); + + for (int i = 0; i < threads; i++) { + new Thread(() -> { + try { + startLatch.await(); + + ReservationRequest request = new ReservationRequest( + memberId, + screenId, + scheduleId, + List.of(seatName) + ); + + reservationService.reserveSeat(request); + System.out.println("Reserved seat " + seatName); + } catch (OptimisticLockException e) { + System.out.println("Optimistic lock exception: " + e.getMessage()); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } finally { + endLatch.countDown(); + } + }).start(); + } + + startLatch.countDown(); + endLatch.await(); + + Assertions.assertThat(jpaReservationRepository.findAll()).hasSize(1); + } } \ No newline at end of file diff --git a/domain/src/main/java/hanghae/domain/entity/Reservation.java b/domain/src/main/java/hanghae/domain/entity/Reservation.java index c9d5783d3..d41a64f39 100644 --- a/domain/src/main/java/hanghae/domain/entity/Reservation.java +++ b/domain/src/main/java/hanghae/domain/entity/Reservation.java @@ -42,15 +42,12 @@ public class Reservation extends Base { ) private List reservationSeats; - @Version - private Long version; public static Reservation of(Member member, Schedule schedule) { Reservation reservation = new Reservation(); reservation.member = member; reservation.schedule = schedule; reservation.reservationSeats = new ArrayList<>(); - reservation.version = 1L; return reservation; } diff --git a/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java b/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java index d34bb783d..c6893712a 100644 --- a/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java +++ b/domain/src/main/java/hanghae/domain/entity/ScheduleSeat.java @@ -27,6 +27,10 @@ public class ScheduleSeat { @Getter @Setter private boolean reserved; + @Version + @Column(nullable = false) + private Long version; + public ScheduleSeat(Schedule schedule, Seat seat) { this.schedule = schedule; this.seat = seat; diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java index fc49eddfc..4eb5bddc7 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/generater/DummyDataInitializer.java @@ -29,11 +29,12 @@ // private final Random random = new Random(); // // @Override +// @Transactional // public void run(ApplicationArguments args) throws Exception { // createMembers(10); // List allScreens = createScreensAndSeats(50); -// List allMovies = createMovies(500); -// List allSchedules = createSchedules(10000, allMovies); +// List allMovies = createMovies(100); +// List allSchedules = createSchedules(500, allMovies); // // createScheduleSeats(allSchedules); // createScreenSchedules(allSchedules, allScreens); @@ -107,6 +108,7 @@ // } // // private List createSchedules(int scheduleCount, List allMovies) { +// List seats = seatRepository.findAll(); // List schedules = new ArrayList<>(); // int movieSize = allMovies.size(); // diff --git a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java index e07cf28c4..518089b90 100644 --- a/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java +++ b/infrastructure/src/main/java/hanghae/infrastructure/repository/JpaScheduleSeatRepository.java @@ -19,6 +19,17 @@ public interface JpaScheduleSeatRepository extends JpaRepository findScheduleSeatByScheduleIdAndSeatIdWithPessimisticLock( + @Param("scheduleId") Long scheduleId, + @Param("seatId") Long seatId); + + // 낙관적 락 적용 + @Lock(LockModeType.OPTIMISTIC) + @Query( + "select ss from ScheduleSeat ss " + + "where ss.schedule.scheduleId = :scheduleId " + + "and ss.seat.seatId = :seatId" + ) Optional findScheduleSeatByScheduleIdAndSeatId( @Param("scheduleId") Long scheduleId, @Param("seatId") Long seatId); From f6ce71f560b7e5d92bd6d5482d3a03b8c9a08716 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 10:26:57 +0900 Subject: [PATCH 23/29] =?UTF-8?q?feat:=20=E2=9C=85distributed=20lock=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/ReservationConcurrencyTest.java | 45 +++++++++++++++++-- .../service/ReservationServiceImpl.java | 6 +++ infrastructure/build.gradle | 2 + .../common/annotation/DistributedLock.java | 17 +++++++ .../common/aop/DistributedLockAspect.java | 40 +++++++++++++++++ 5 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/common/annotation/DistributedLock.java create mode 100644 infrastructure/src/main/java/hanghae/infrastructure/common/aop/DistributedLockAspect.java diff --git a/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java b/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java index 2c9018383..73bc6891b 100644 --- a/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java +++ b/api/src/test/java/hanghae/api/ReservationConcurrencyTest.java @@ -30,7 +30,7 @@ void clean() { jpaReservationRepository.deleteAll(); } - // @Test +// @Test @DisplayName("pessimistic lock test") // 이거 멀티 스레드라 트랜젝션 관리 안되는데 롤백 어떻게 하지..? void reservePessimisticLockTest() throws InterruptedException { @@ -71,7 +71,7 @@ void reservePessimisticLockTest() throws InterruptedException { Assertions.assertThat(jpaReservationRepository.findAll()).hasSize(1); } - @Test +// @Test @DisplayName("optimistic lock test") void reserveOptimisticLockTest() throws InterruptedException { Long memberId = 5L; @@ -112,4 +112,43 @@ void reserveOptimisticLockTest() throws InterruptedException { Assertions.assertThat(jpaReservationRepository.findAll()).hasSize(1); } -} \ No newline at end of file + + @Test + void reserveDistributedLockTest() throws InterruptedException { + Long memberId = 3L; + Long screenId = 22L; + Long scheduleId = 132L; + String seatName = "A1"; + + int threads = 10; + CountDownLatch startLatch = new CountDownLatch(1); + CountDownLatch endLatch = new CountDownLatch(threads); + + for(int i = 0; i < threads; i++){ + new Thread(() -> { + try { + startLatch.await(); + + ReservationRequest req = new ReservationRequest( + memberId, + screenId, + scheduleId, + List.of(seatName) + ); + + reservationService.reserveSeat(req); + System.out.println("Reserved seat " + seatName); + } catch(Exception e){ + System.out.println("Exception: " + e.getMessage()); + } finally { + endLatch.countDown(); + } + }).start(); + } + + startLatch.countDown(); + endLatch.await(); + + // Assertions.assertThat(jpaReservationRepository.findAll()).hasSize(1); + } +} diff --git a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java index 1d5ab6720..e45f5c219 100644 --- a/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java +++ b/application/src/main/java/hanghae/application/service/ReservationServiceImpl.java @@ -5,6 +5,7 @@ import hanghae.application.port.*; import hanghae.domain.entity.*; import hanghae.domain.port.ReservationRepository; +import hanghae.infrastructure.common.annotation.DistributedLock; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -25,6 +26,11 @@ public class ReservationServiceImpl implements ReservationService { @Override @Transactional + @DistributedLock( + key = "#{#request.scheduleId}", + waitTime = 1, // second + leaseTime = 2 // second + ) public ReservationResponse reserveSeat(ReservationRequest request) { Reservation reservation = initReservation(request); List seats = getSeats(request); diff --git a/infrastructure/build.gradle b/infrastructure/build.gradle index 15e17a6ad..7f7417c84 100644 --- a/infrastructure/build.gradle +++ b/infrastructure/build.gradle @@ -10,6 +10,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' + implementation 'org.redisson:redisson-spring-boot-starter:3.43.0' + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/annotation/DistributedLock.java b/infrastructure/src/main/java/hanghae/infrastructure/common/annotation/DistributedLock.java new file mode 100644 index 000000000..7a8542950 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/annotation/DistributedLock.java @@ -0,0 +1,17 @@ +package hanghae.infrastructure.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface DistributedLock { + + String key(); + + long waitTime() default 5; + + long leaseTime() default 10; +} diff --git a/infrastructure/src/main/java/hanghae/infrastructure/common/aop/DistributedLockAspect.java b/infrastructure/src/main/java/hanghae/infrastructure/common/aop/DistributedLockAspect.java new file mode 100644 index 000000000..9510048a4 --- /dev/null +++ b/infrastructure/src/main/java/hanghae/infrastructure/common/aop/DistributedLockAspect.java @@ -0,0 +1,40 @@ +package hanghae.infrastructure.common.aop; + +import hanghae.infrastructure.common.annotation.DistributedLock; +import lombok.RequiredArgsConstructor; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +@Aspect +@Component +@RequiredArgsConstructor +public class DistributedLockAspect { + + private final RedissonClient redissonClient; + + @Around("@annotation(distributedLock)") + public Object around(ProceedingJoinPoint point, DistributedLock distributedLock) throws Throwable { + String key = distributedLock.key(); + long waitTime = distributedLock.waitTime(); + long leaseTime = distributedLock.leaseTime(); + + RLock lock = redissonClient.getLock(key); + + if (lock.tryLock(waitTime, leaseTime, TimeUnit.SECONDS)) { + try { + return point.proceed(); + } finally { + lock.unlock(); + } + } else { + throw new IllegalArgumentException("Failed to acquire lock: " + key); + } + } + +} From d89b94c2261cd5cb79498ff4a05d4ea8ce386cc4 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 10:27:49 +0900 Subject: [PATCH 24/29] chore: update minor changes --- .../main/java/hanghae/api/http/ReservationController.http | 8 ++++++++ domain/src/main/java/hanghae/domain/entity/Screen.java | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/hanghae/api/http/ReservationController.http b/api/src/main/java/hanghae/api/http/ReservationController.http index c0861dac5..bc4b72dd7 100644 --- a/api/src/main/java/hanghae/api/http/ReservationController.http +++ b/api/src/main/java/hanghae/api/http/ReservationController.http @@ -4,6 +4,7 @@ Content-Type: application/json { "memberId": 1, + "screenId": 10, "scheduleId": 10, "seatNames": ["A1", "A2", "A3"] } @@ -14,6 +15,7 @@ Content-Type: application/json { "memberId": 2, +"screenId": 10, "scheduleId": 20, "seatNames": ["A1", "A2", "A3", "B1", "B2", "B3"] } @@ -25,6 +27,7 @@ Content-Type: application/json { "memberId": 3, + "screenId": 10, "scheduleId": 30, "seatNames": ["A1"] } @@ -35,6 +38,7 @@ Content-Type: application/json { "memberId": 3, + "screenId": 10, "scheduleId": 30, "seatNames": ["A2"] } @@ -45,6 +49,7 @@ Content-Type: application/json { "memberId": 3, + "screenId": 10, "scheduleId": 30, "seatNames": ["A3"] } @@ -55,6 +60,7 @@ Content-Type: application/json { "memberId": 4, + "screenId": 10, "scheduleId": 40, "seatNames": ["A1", "B1", "C1", "D1", "E1"] } @@ -65,6 +71,7 @@ Content-Type: application/json { "memberId": 5, + "screenId": 10, "scheduleId": 50, "seatNames": ["A1"] } @@ -75,6 +82,7 @@ Content-Type: application/json { "memberId": 6, + "screenId": 10, "scheduleId": 50, "seatNames": ["A1"] } \ No newline at end of file diff --git a/domain/src/main/java/hanghae/domain/entity/Screen.java b/domain/src/main/java/hanghae/domain/entity/Screen.java index f124d2bf5..f6b7bfb31 100644 --- a/domain/src/main/java/hanghae/domain/entity/Screen.java +++ b/domain/src/main/java/hanghae/domain/entity/Screen.java @@ -27,6 +27,9 @@ public class Screen extends Base { ) private List screenSchedules = new ArrayList<>(); - @OneToMany(mappedBy = "screen", cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany( + mappedBy = "screen", + cascade = CascadeType.ALL, + orphanRemoval = true) private List seats = new ArrayList<>(); } From ea78d73f8650d8c9168ab71928fa06f49dbbcba1 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 10:28:06 +0900 Subject: [PATCH 25/29] chore: add k6 test script and result --- reserve-distributed-lock.png | Bin 0 -> 284002 bytes reserve-k6.js | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 reserve-distributed-lock.png create mode 100644 reserve-k6.js diff --git a/reserve-distributed-lock.png b/reserve-distributed-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..4e745022711a9335714b506d97e8fc6b45d2689b GIT binary patch literal 284002 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 r.status === 200 || r.status === 400 + }); + + sleep(1); +} \ No newline at end of file From 8a90778deb8abf75be32fb2f69de3bec029e2623 Mon Sep 17 00:00:00 2001 From: zun Date: Fri, 31 Jan 2025 10:36:19 +0900 Subject: [PATCH 26/29] chore: update erd image and remove unused test dir in modules --- .../hanghae/application/ApplicationTests.java | 13 ------------- .../hanghae/domain/DomainApplicationTests.java | 13 ------------- .../InfrastructureApplicationTests.java | 13 ------------- movie_app_erd.png | Bin 0 -> 285592 bytes 4 files changed, 39 deletions(-) delete mode 100644 application/src/test/java/hanghae/application/ApplicationTests.java delete mode 100644 domain/src/test/java/hanghae/domain/DomainApplicationTests.java delete mode 100644 infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java create mode 100644 movie_app_erd.png diff --git a/application/src/test/java/hanghae/application/ApplicationTests.java b/application/src/test/java/hanghae/application/ApplicationTests.java deleted file mode 100644 index 1158065d5..000000000 --- a/application/src/test/java/hanghae/application/ApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package hanghae.application; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class ApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/domain/src/test/java/hanghae/domain/DomainApplicationTests.java b/domain/src/test/java/hanghae/domain/DomainApplicationTests.java deleted file mode 100644 index 3475ab502..000000000 --- a/domain/src/test/java/hanghae/domain/DomainApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package hanghae.domain; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class DomainApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java b/infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java deleted file mode 100644 index ded6565bd..000000000 --- a/infrastructure/src/test/java/hanghae/infrastructure/InfrastructureApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package hanghae.infrastructure; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class InfrastructureApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/movie_app_erd.png b/movie_app_erd.png new file mode 100644 index 0000000000000000000000000000000000000000..21268d78c1fa823f6d0389e1d5d30935c7eb2a48 GIT binary patch literal 285592 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%0Aq?W_6vY35(K=;9GUdYe5DrAKw&=W{~ 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⋙{Fh($OBpdw;IDi*xPeE+kblm5`>)Y&MQPQ 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%0D9n+sAUt$!4c|17b_d*_pw?mFon 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 literal 0 HcmV?d00001 From 4db4fea021a9df1b205842a4696f1955f1a8f65f Mon Sep 17 00:00:00 2001 From: coZ Date: Fri, 31 Jan 2025 10:58:30 +0900 Subject: [PATCH 27/29] Create README.md --- README.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..6d784425f --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# redis-movie_app project +
+ + + +## 1. API 모듈 +### **목적** +- 외부 세계와의 직접적인 통신을 담당함. + +### **역할** +- **실행 모듈** +- HTTP 요청 처리 +- REST API 엔드포인트 제공 +- Spring Boot 애플리케이션 시작점 + +--- + +## 2. Application 모듈 +### **목적** +- 비즈니스 로직을 처리하는 서비스 레이어. + +### **역할** +- 비즈니스 서비스 구현 +- 포트(Port) 인터페이스 정의 +- 도메인 객체와 외부 인터페이스 간 데이터 변환 및 조율 + +--- + +## 3. Domain 모듈 +### **목적** +- 애플리케이션의 주요 비즈니스 규칙을 정의. + +### **역할** +- 엔티티 정의 +- 레포지토리 정의 +- 엔티티 객체 관계 설정 + +--- + +## 4. Infrastructure 모듈 +### **목적** +- 외부 시스템과 상호작용 관리. + +### **역할** +- 더미 데이터 생성 +- JPA 레포지토리 인터페이스 정의 및 구현 +- 데이터베이스 설정 +- 외부 시스템 통합 + +--- + +## 모듈 구조 요약 + +```plaintext +project-movie/ +├── api/ +├── application/ +├── domain/ +└── infrastructure/ +``` +--- + +## ERD +[movie_app-erd](https://github.com/user-attachments/assets/aa4d568c-948c-4334-bae1-d29ca2602efa) + + + +## 분산 락 성능 테스트 +[reserve-distributed-test](https://github.com/orkrj/redis-movie_app/blob/ea78d73f8650d8c9168ab71928fa06f49dbbcba1/reserve-distributed-lock.png) + +#### waitTime, leaseTime +- waitTime = 1s : 영화 예매는 대체 선택지가 많기 때문에 대기 시간을 짧게 줌으로써 쾌적한 환경 제공을 우선. +- leaseTime = 2s : 분산 락 테스트 결과 응답에 평균 63ms, 최대 515ms 가 소요되어 최대 응답의 4배를 지정. +--- From 157f44940785fd58cee7c0c9bf5cb54fb9784b0b Mon Sep 17 00:00:00 2001 From: zun Date: Sat, 1 Feb 2025 02:57:27 +0900 Subject: [PATCH 28/29] chore: rename root project and erd file --- movie_app_erd.png => project-movie.png | Bin settings.gradle | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename movie_app_erd.png => project-movie.png (100%) diff --git a/movie_app_erd.png b/project-movie.png similarity index 100% rename from movie_app_erd.png rename to project-movie.png diff --git a/settings.gradle b/settings.gradle index 2ee4708de..d9ae7b73a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ -rootProject.name = 'movie-app' +rootProject.name = 'project-movie' include 'api' include 'domain' From 75ff8dc835b180e9231545539d901fc35723818c Mon Sep 17 00:00:00 2001 From: zun Date: Sat, 1 Feb 2025 03:12:46 +0900 Subject: [PATCH 29/29] chore: update project settings to match root project name --- compose.yml | 2 +- infrastructure/src/main/resources/infra-application-dev.yml | 2 +- infrastructure/src/main/resources/infra-application.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compose.yml b/compose.yml index ffbd7e4f4..da63125f6 100644 --- a/compose.yml +++ b/compose.yml @@ -24,7 +24,7 @@ services: MYSQL_ROOT_PASSWORD: root-password MYSQL_USER: master MYSQL_PASSWORD: password - MYSQL_DATABASE: movie_app + MYSQL_DATABASE: project-movie volumes: - ./database:/var/lib/mysql ports: diff --git a/infrastructure/src/main/resources/infra-application-dev.yml b/infrastructure/src/main/resources/infra-application-dev.yml index b362e6fff..6991b166d 100644 --- a/infrastructure/src/main/resources/infra-application-dev.yml +++ b/infrastructure/src/main/resources/infra-application-dev.yml @@ -6,7 +6,7 @@ spring: port: 6379 datasource: - url: jdbc:mysql://localhost:3306/movie_app + url: jdbc:mysql://localhost:3306/project-movie username: master password: password hikari: diff --git a/infrastructure/src/main/resources/infra-application.yml b/infrastructure/src/main/resources/infra-application.yml index 5a1f12c99..a97edbfbd 100644 --- a/infrastructure/src/main/resources/infra-application.yml +++ b/infrastructure/src/main/resources/infra-application.yml @@ -6,7 +6,7 @@ spring: port: 6379 datasource: - url: jdbc:mysql://mysql-db:3306/movie_app + url: jdbc:mysql://mysql-db:3306/project-movie username: master password: password hikari: