[Spring Boot] Discord Bot(๋์ค์ฝ๋ ๋ด) ๋ง๋ค๊ธฐ - ๋์ค์ฝ๋ ๋ด์ ์ด์ฉํ์ฌ API ํธ์ถ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ ๋ชฉ์ฐจ
1. [Spring Boot] Discord Bot(๋์ค์ฝ๋ ๋ด) ๋ง๋ค๊ธฐ
2. [Spring Boot] Discord Bot(๋์ค์ฝ๋ ๋ด) ๋ง๋ค๊ธฐ - Spring Boot(์คํ๋ง ๋ถํธ)๋ฅผ ์ด์ฉํ ๊ฐ๋จํ API ๋ง๋ค๊ธฐ feat.Mybatis(๋ง์ด๋ฐํฐ์ค)
3. [Spring Boot] Discord Bot(๋์ค์ฝ๋ ๋ด) ๋ง๋ค๊ธฐ - JAVA๋ฅผ ์ด์ฉํ API ํธ์ถ
๐ ์์ํ๊ธฐ ์ ์
๐ฝ ๊ฐ์
์๋ ํ์ธ์? ์ฃผ๋์ ๋๋ค.
์ด๋ฒ ๊ธ์์๋ ์ง๋๋ฒ์ JAVA(์๋ฐ)๋ฅผ ํตํด API ํธ์ถ์ด ๊ฐ๋ฅํ๊ฒ ๋ง๋ ์ฝ๋์ ๋๋ถ์ด ๋ณธ๊ฒฉ์ ์ผ๋ก ๋์ค์ฝ๋ ๋ด์ ํตํด ํด๋น API๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํด์.
์ด ๊ธฐ๋ฅ์ ํตํด Data Base(๋ฐ์ดํฐ ๋ฒ ์ด์ค)์ ์๋ ๊ฐ์ ์น ํ์ด์ง๋ฅผ ํตํด ๋ณผ์๋ ์๊ฒ ์ง๋ง, ๋์ค์ฝ๋์์ ๋ณด๋ค ๊ฐํธํ๊ฒ ๋ณผ ์ ์๋ค๋ฉด ์ผ๋ง๋ ์ข์๊น? ๋ผ๋ ์๋ฌธ๊ณผ ํ์์ ์ํด ๋ง๋ค์ด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ฝ Discord Bot ๋ง๋ค๊ธฐ
์ต์ด JDA์ ListenerAdapter๋ฅผ ์์ํ์ฌ onMessageReceived()๋ฅผ ์ฌ ์ ์(Override) ํด ์ฃผ์์ด์.
29๋ฒ์งธ ์ค์ MessageReceivedEvent ๊ฐ์ฒด์์ getAuthor()๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ๋์ค์ฝ๋์์ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ User ๊ฐ์ฒด๋ฅผ ํตํด ์ป์ ์ ์์ด์.
๊ทธ๋ฆฌ๊ณ , MessageReceivedEvent ๊ฐ์ฒด์์ getMessage()๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ๋ณด๋ธ Message(๋ฉ์์ง) ๊ฐ์ ๋ฉ์์ง ๊ฐ์ฒด๋ฅผ ํตํด ์ป์ ์ ์๋ต๋๋ค.
34๋ฒ์งธ ๋ถ๊ธฐ๋ฌธ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ ์ฃผ์ฒด๊ฐ Bot(๋ด)์ธ์ง ํ์ธ์ ํ๊ณ ์์ด์.
๋ง์ฝ ๋ด์ด ๋ณด๋ธ ๋ฉ์์ง๊น์ง ๋ต์ฅ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋, ์์ฒญ๋ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ด์ด ๋ณด๋ธ ๋ฉ์์ง๋ ๋ฌด์ํ๋๋ก ํ๊ณ , 36๋ฒ์งธ ๋ถ๊ธฐ๋ฌธ์ ๋์ค์ฝ๋์์ ๋ณด๋ด์จ ๋ฉ์์ง ๊ฐ์ด ๊ณต๋ฐฑ์ผ ๊ฒฝ์ฐ ๊ณต๋ฐฑ์ด๋ผ๋ ๋ด์ฉ์ ์๋ฒ์์ ํ์ธํ๊ธฐ ์ํด Log(๋ก๊ทธ)๋ฅผ ์ฐ์ด์ฃผ๋ ๋ถ๋ถ์ด์์.
40๋ฒ์งธ ์ค์ CheckDicordCommand ๊ฐ์ฒด์ Static Method(๋ฉ์๋) checkCommand()๋ฅผ ํธ์ถํ๋๋ฐ, ์ด ๋, ๋ฉ์์ง Event(์ด๋ฒคํธ)๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ MessageReceivedEvent์ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๋ฉ์์ง ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๋ถํ ํ์ฌ String[] (๋ฌธ์์ด ๋ฐฐ์ด)๋ก ๋ง๋ค์ด์ ธ์ ๋ณด๋ด์ง๊ฒ ํด ์ฃผ์์ด์.
CheckDiscordCommand ๊ฐ์ฒด๋ ์ค์ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ํ์ธํ์ฌ ๊ทธ์ ๋ง๋ ๋ต๋ณ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋์ค์ฝ๋ ๋ด์ ํต์ฌ ๊ฐ์ฒด ์ค ํ๋์์.
์์์ ํธ์ถํ checkCommand()๋ ๋ฉ์์ง Event(์ด๋ฒคํธ)๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ MessageReceivedEvent์ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๋ฉ์์ง ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๋ถํ ํ์ฌ String[] (๋ฌธ์์ด ๋ฐฐ์ด)์ ๋ฐ๊ฒ ๋๊ณ , ํด๋น ๋ฌธ์์ด ๋ฐฐ์ด 0๋ฒ์งธ์ ์ฃผ๋์ผ ํน์ ๋ฐฐ์ด 1๋ฒ์งธ์ ํฌ๋ฃจ์ ์ฒด์กฐํ๊ฐ AND ์ฐ์ฐ (๋ชจ๋ ์ฐธ์ด์ฌ์ผ ์ฐธ) ์ธ์ง๋ฅผ ํ์ธํ๊ณ ์์ด์.
์๋ํ๋ฉด ์ฃผ๋๋ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ช
๋ น์ด๋ฅผ ๋ฐ๊ณ ์ฒ๋ฆฌํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ด์์.
๋ง์ฝ 33๋ฒ์งธ ์ค์ด ์ฐธ์ด๋ผ๋ฉด
์์ ๊ฐ์ ๋ต๋ณ์ ๋จ๊ธธ ๋, Embed๊ฐ ์๋ ๋ด์ฉ์ ์ต์ด result List์ ๋ฃ์ด์ฃผ๊ฒ ๋์.
๊ทธ๋ฐ ๋ค ์์ธ ๋ด์ฉ์ Embed์ ๋ค์ด๊ฐ๊ฒ ํ๊ธฐ ์ํด ๋ค์ List์ ๋ฃ์ด์ฃผ๊ฒ ํด ์ฃผ์์ด์.
checkBodyCommandForAPICall()์ ํธ์ถํ๋ฉด์ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๋ฉ์์ง ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๋ถํ ํ์ฌ String[] (๋ฌธ์์ด ๋ฐฐ์ด)์ ๋ณด๋ด์ฃผ๊ณ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋ฉ๋๋ค.
com/junyss/discordbottest/command/CheckDiscordCommand.java 45 ~ 72๋ฒ์งธ ์ค
checkBodyCommandForAPICall์ ์ค์ API ํธ์ถ์ ๋ด๋นํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ญํ ์ ๋งก๊ณ ์์ด์.
์ด ๋, ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ํตํด ์ฌ๋ฌ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ํ์ธํ๊ณ , ๊ทธ์ ๋ง๋ API ํธ์ถ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๊ฐ์ ์ฒ๋ฆฌํ๊ฒ ๋๋๋ฐ, ์ต์ด 57๋ฒ์งธ ์ค์ commandOption()์ ๋ํด ์์๋ณผ๊ฒ์.
com/junyss/discordbottest/command/CheckDiscordCommand.java 118 ~ 127๋ฒ์งธ ์ค
์ ๋ฉ์๋๋ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๋ฉ์์ง์ - ๋ฌธ์๊ฐ ์๋์ง๋ฅผ ํ์ธํ๊ณ , ์๋ค๋ฉด True, ์๋ค๋ฉด False๋ฅผ ๋ฐํํ๋ ์ญํ ์ ๋งก๊ณ ์์ด์.
์์ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋์ ๋, ๊ฒ์ ์กฐ๊ฑด์ ํ์ธํ๊ธฐ ์ํด -๋ฅผ ๋ณด๋ด๊ฒ ํ ๊ฒ์ด๊ณ , ์ด -๋ฅผ ํตํด ๋์ค์ฝ๋ ๋ด์ด ๊ฒ์ ์กฐ๊ฑด์ด๋ผ๋ ๊ฒ์ ํ๋จํ๊ฒ ํ๊ธฐ ์ํจ์ด์์.
com/junyss/discordbottest/command/CheckDiscordCommand.java 45 ~ 72๋ฒ์งธ ์ค
๊ทธ๋ ๋ค๋ฉด 57๋ฒ์งธ ์ค์ ๊ฒ์ ์กฐ๊ฑด์ด ์๋ค๋ ๊ฒ์ด ํ์ธ์ด ๋๋ฉด 58 ~ 64๋ฒ์งธ ๊น์ง ๋ด์ฉ์ด ๋์ํ๊ฒ ๋ ๊ฑฐ์์.
์ด๋ฒ์๋ 58๋ฒ์งธ ์ค์ checkCommandOption()์ ๋ํด ์์๋ณผ๊ฒ์.
com/junyss/discordbottest/command/CheckDiscordCommand.java 128 ~ 154๋ฒ์งธ ์ค
์ ๋ฉ์๋๋ ๊ฒ์์ด์ ๋ํ ๊ฒ์ ํ์
๊ณผ ๊ฒ์์ด๋ฅผ ๋ถ๋ฆฌํ์ฌ Map์ Key์ Value๋ก ๋ด๊ธฐ ์ํ ์ญํ ์ ํ๊ณ ์์ด์.
๊ฒ์ ์กฐ๊ฑด์ =์ ํตํด ๊ฒ์ ํ์
๊ณผ ๊ฒ์์ด๋ฅผ ์
๋ ฅํ๊ฒ ๋๋๋ฐ, ์ด๋ฅผ ํตํด =์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ฆฌํ์ฌ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ์ฃผ๊ณ , ํด๋น ๋ฌธ์์ด ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 2 ์ด์์ด๋ผ๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก ์์
์ ํ๊ฒ ๋ฉ๋๋ค.
์ต์ด ๋ฐ๋ณต๋ฌธ์ ํตํด ํด๋น ๋ฐฐ์ด ํฌ๊ธฐ๋ณด๋ค 1 ์์ ํ์๋งํผ ๋๊ฒ ๋๋๋ฐ, ์ด๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 2์ผ ๋, 0๋ถํฐ ์์ํ์ฌ 1๊น์ง ๋๊ฒ ๋๋ฉด ์ด ๋๋ฒ์ ๋๊ฒ ๋์.
๊ทผ๋ฐ, 144๋ฒ์งธ ์ค์ ๋ฐฐ์ด์ ๊ฐ์ ์ ์๋ก ๋ช
์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ArrayOutOfBound Exception์ด ํฐ์ง๊ฒ ๋ ๊ฑฐ์์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ํฌ๊ธฐ๋ณด๋ค 1 ์์ ํ์๋ก ๋๊ฒ ๋ง๋ค์ด ์ฃผ์์ด์.
๋ํ 140๋ฒ์งธ ์ค์ ๋ณด๋ฉด ํด๋น ๋ฐฐ์ด์ ๋ฐ๋ณต๋ฌธ ํ์์์ ๋ฌธ์์ด์ -๋ก ๋ถ๋ฆฌํ๋๋ฐ, ๊ฒ์ ํ์
์๋ง -๊ฐ ์์ด์. ์ฆ, ๊ฒ์ ํ์
๋ง ํด๋น ๋ด์ฉ์ ์ฒ๋ฆฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ํฌ๊ธฐ๋ณด๋ค 1 ์์ ํ์๋ก ๋๋๋ก ํด ์ค ์ด์ ๋ ์์ด์.
๊ฒ์ ์กฐ๊ฑด์ -๊ฒ์ํ์
=๊ฒ์์ด๋ก ๋ค์ด์ค๊ฒ ๋์. ์ต์ด =๋ง ๊ธฐ์ค์ผ๋ก ํด์ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ฃ์ด์คฌ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ํ์
์ ๋ถํ์ํ -๋ผ๋ ํน์๋ฌธ์๊ฐ ๋ค์ด ์์ด์. ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ค์ - ๊ธฐ์ค์ผ๋ก ๊ฒ์ ํ์
์ ๋ฌธ์์ด์ ๋ถ๋ฆฌ ์์ผ ๋ฌธ์์ด ๋ฐฐ์ด searchTypeArray๋ฅผ ๋ง๋ค์ด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ๊ฒ์ ํ์
๋ง์ ๋ฐ์ ๋ฌธ์์ด ๋ณ์ searchType์ Null๋ก ์ด๊ธฐํ ํ๊ณ , searchTypeArray ์ฆ, ๊ฒ์ ํ์
์ ๋ฐ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 0๋ณด๋ค ํฐ์ง ํ์ธ์ ํ๊ณ ์์ด์.
-์ ๋ฌธ์์ด๋ก ๋๋์ด์ ๋ฐฐ์ด์ ๋ด๊ฒจ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ searchType ๋ณ์์๋ ๋ฐฐ์ด ๋๋ฒ์งธ์ ์์นํ๊ณ ์์ ๊ฒ์ ํ์
๋ฌธ์์ด์ ๋ด์ ์ค๋๋ค.
๊ทธ๋ฐ ๋ค 147๋ฒ์งธ ์ค์ ์ด ๋ฌธ์์ด์ด ์ ์์ ์ผ๋ก ๋ด๊ฒผ๋์ง๋ฅผ ํ์ธํ๊ณ ์์ด์. ๋ฌธ์์ด์ด ์ ์์ ์ผ๋ก ๋ด๊ฒผ๋ค๋ฉด Map์ ๊ฒ์ ํ์
์ Key ๊ฐ์ผ๋ก ๊ฒ์์ด๋ฅผ Value๊ฐ์ผ๋ก ๋ด์์ฃผ๊ฒ ๋๊ณ , ๊ฒ์ ํ์
์ด Null์ด๋ผ๋ฉด ์ผ๋จ ์ด ๊ณณ์์๋ Map์ ๊ฐ์ด ๋ด๊ธฐ๊ฒ ํ๊ธฐ ์ํด commandOptionArray์ 0๋ฒ์งธ ๋ฐฐ์ด๊ฐ๊ณผ 1๋ฒ์งธ ๋ฐฐ์ด๊ฐ์ด ๋ด๊ธฐ๋๋ก ํ์ฌ ์ฃผ์์ด์.
checkCommandOption()์ ๋ค๋
์ค๊ฒ ๋๋ฉด 53๋ฒ์งธ ์ค์ ๋ง๋ค์ด์ค Map์ ๊ฒ์ ํ์
๊ณผ ๊ฒ์์ด๊ฐ ๋ด๊ฒจ์์ ๊ฑฐ์์.
๊ทธ Map์ commandOptionValidate()๋ฅผ ํธ์ถํด์ ๊ฒ์ ์กฐ๊ฑด์ด ๋ด๊ฒจ ์๋์ง๋ฅผ ํ์ธํ๊ฒ ๋๊ณ , ๊ฒ์ ์กฐ๊ฑด์ด ์๋ค๋ฉด URL Parameter์ ๊ฐ ์์ด API๋ฅผ ํธ์ถํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ํด ์ฃผ์์ด์.
commandOptionValidate()๋ ๊ฒ์ ํ์
๊ณผ ๊ฒ์์ด๊ฐ ๋ด๊ธด Map์ ๋ฐ์ ํด๋น Key ์ฆ, ๊ฒ์ ํ์
์ด Enum์ผ๋ก ์ ์๋ ๊ฒ์ ํ์
๊ณผ ์ผ์นํ๋์ง ํ์ธํ๊ณ ์์ด์.
๋ง์ฝ ์ผ์นํ๋ค๋ฉด ๊ฒ์์ ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ True(์ฐธ)์ ๋ฐํํ ๊ฑฐ๊ณ , ์ผ์นํ์ง ์๋๋ค๋ฉด ๊ฒ์ ์กฐ๊ฑด์ ์๋ชป ์
๋ ฅํ๊ฑฐ๋, ๊ฒ์ ์กฐ๊ฑด ์์ด ๊ฒ์์ ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ False(๊ฑฐ์ง)์ ๋ฐํํด ์ฃผ๊ฒ ํ์ฌ ์ฃผ์์ด์.
61๋ฒ์งธ ์ค์ ์์์ ๊ฑฐ์ง์ผ๋ก ๋ฐํ๊ฐ์ด ์๋ค๋ฉด API๋ฅผ ํธ์ถํ ๋, URL Parameter ์์ด ์ฆ, DTO ์์ด ํธ์ถํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํด ์ค๋๋ค.
ํ์ง๋ง, ๊ฒ์ ์กฐ๊ฑด์ด ์๋ค๊ณ ํ๋จ์ด ๋๋ฉด 63๋ฒ์งธ makeUriParam()์ ํธ์ถํ์ฌ Map์ ๋์ ธ์ฃผ๊ฒ ํด ์ฃผ์์ด์.
makeParam()์ ๋์ค์ฝ๋๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ API ํธ์ถ ๊ด๋ จ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ ๋, ๊ฒ์ ์กฐ๊ฑด์ ํ์ธํ๊ธฐ ์ํ ๋ฉ์๋๋ก Map์ผ๋ก ๋ค์ด์จ ๊ฒ์ ํ์
๊ณผ ๊ฒ์์ด๋ฅผ ๋ถ๋ฆฌํด์ ๊ฐ๊ฐ DTO์ ๋ฃ์ด์ฃผ๊ธฐ ์ํ ์์
์ ํด์ฃผ๊ธฐ ์ํ ๋ฉ์๋์์.
165๋ฒ์งธ ์ค์ Map์ entrySet()์ ํตํด Map์ ์ ์ฒด Key์ Value๋ฅผ ํ๋ํ๋ ๊บผ๋ด์ด entry ๋ณ์์ ๋ฃ์ด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค Key ๋ฌธ์์ด ๋ณ์์๋ Key ๋ฌธ์์ด์ value์๋ value ๋ฌธ์์ด ๊ฐ์ ๋ฃ์ด์ง๊ฒ ํ๊ณ , Switch ๋ฌธ์ ํตํด key์ ๊ฐ์ด ๊ฒ์ ํ์
์ ์ ์ํ ๋ด์ฉ๊ณผ ์ผ์นํ๊ฒ ๊ฒ์ ํ์
์ ๋ณด๋๋์ง ํ์ธํ๊ณ , ๋ง๋ค๋ฉด ํ๊ธ๋ก ์
๋ ฅ๋์ด ์ ์ก๋ ๊ฒ์ ํ์
์ ์์ด๋ก ๋ฐ๊ฟ์ฃผ๋๋ก ํ์์ด์.
๊ทธ๋ ๊ฒ ๋ฐ๋ณต๋ฌธ์ด ๋๋๋ฉด setCrewSearchDTO()๋ฅผ ํธ์ถํ์ฌ ๋ณธ๊ฒฉ์ ์ผ๋ก DTO ๋ง๋ค๊ธฐ ์์
์ ๋์
ํ๊ฒ ๋ฉ๋๋ค.
setCrewSearchDTO()๋ ์ ๋ฉ์๋์์ ์ ๋ฌ๋ฐ์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ด์ฉํด์ DTO์ Setter(์ธํฐ)๋ฅผ ์ด์ฉํด์ ๊ฒ์ ์กฐ๊ฑด์ ๋ฃ์ด์ฃผ๋ ์ญํ ์ ๋ด๋นํ๊ณ ์์ด์.
์ต์ด ๊ฒ์ ์กฐ๊ฑด์ ๋ ์ง ๋ฒ์ ๊ฒ์ ์กฐ๊ฑด์ด ์์ด ์๋์ง๋ฅผ ํ์ธํฉ๋๋ค.
์๋ค๋ฉด ๋ ์ง ๋ฒ์ ์กฐ๊ฑด์ -๋ ์ง=2023.03.10~2023.03.15 ์ด๋ ๊ฒ ์
๋ ฅ์ ๋ฐ๊ฒ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ~์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋๋๊ณ , ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ค์ด๊ฐ๋๋ก ํด ์ฃผ์์ด์.
๊ทธ๋ฆฌ๊ณ , ๋ ์ง ๊ฒ์ ์กฐ๊ฑด์ ์์ ๋ ์ง์ ๋ ๋ ์ง๋ฅผ ์ฒ๋ฆฌํ ๋ฌธ์์ด ๋ณ์๋ฅผ ๊ฐ๊ฐ Null๋ก ์กฐ๊ธฐํ ํ๊ณ , For-Each ๋ฌธ์์ ๋ฐ๋ณต ํ์๋ฅผ ํ๋จํ๊ธฐ ์ํ loopCount ๋ณ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํ ํด ์ฃผ์์ด์.
๋ฐ๋ณต๋ฌธ์์ ๋ ์ง ๊ฒ์์ด๋ฅผ ๋๋์ด ๋ด์ ๋ฐฐ์ด์ ๊ฐ์ ํ๋ํ๋ ๊บผ๋ด์ isValidSearchDate ๋ฌธ์์ด ๋ณ์์ ๋ฃ์ด์ฃผ๊ณ , loopCount์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ ์์ผ ์ค๋๋ค.
๋ง์ฝ loopCount์ ๊ฐ์ด 1๋ณด๋ค ํฌ๋ค๋ฉด ์ด๋ ๋ ์ง ๊ฒ์ ์์์ ๊ฐ์ด ์๋ ๋์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ endDate์ ํด๋น ๊ฐ์ ๋ฃ๊ฒ ํด ์ฃผ์๊ณ , 1๋ณด๋ค ์๋ค๋ฉด ์์ ๊ฒ์์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ startDate๋ฅผ ๋ด๊ฒ ํด ์ฃผ์์ด์.
๋ ์ง ๋ณ์์ ๊ฐ์ ๋ด์ ๋ ์ ๋ฉ์๋๊ฐ ํธ์ถ ๋๋๋ฐ, ์ด๋ ๊ฒ์์ด๊ฐ ์ ์์ ์ผ๋ก ์์ฑ๋์ ๋ค์ด์๋์ง์ API๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์กฐํ๋ฅผ ํ ๋, SQL ๋ฌธ์ ๋ง๊ฒ ๋ณํ์ ์์ผ์ฃผ๊ธฐ ์ํด ๋ฌธ์์ด Format(ํฌ๋งท)์ ํ์ธํ๊ณ , ๋ง์ถฐ์ฃผ๋ ์ญํ ์ ํ๋ ๋ฉ์๋์์.
SimpleDateFomat ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ํ์์ ๋ง์ถฐ์ค ๋, parse()๋ฅผ ํตํด ๋ฌธ์์ด๋ก ์
๋ ฅ๋ ๋ ์ง ๊ฐ์ Parsing(ํ์ฑ)ํ์ฌ SimpleDateFormat ๊ฐ์ฒด๋ก ๋ณํํ๊ฒ ๋๋๋ฐ, ์ด ๋, ํ์ฑ์ด ์ ๋๋ก ๋์ง ์์ผ๋ฉด ParseException์ด ํฐ์ง๊ธฐ ๋๋ฌธ์ Catch ๋ฌธ์ ํตํด ์ด๋ฅผ ์ฒ๋ฆฌํ๊ฒ ํด ์ฃผ์์ด์.
237๋ฒ์งธ ์ค์ ๋ฌธ์์ด์ ๊ฐ์ฒด๋ก ๋ฐ๊พผ ๊ฐ์ "yyyy.MM.dd" ํํ๋ก ๋ฐ๊ฟ์ค ๋ค ๋ฌธ์์ด๋ก ๋ฐํํ๊ฒ ํด ์ฃผ์๊ณ , try ๋ฌธ์์ ๋ฌธ์ ๊ฐ ์๊ฒจ ์ฒ๋ฆฌ ๋์ง ๋ชปํ๋ฉด Null์ด ๋ฐํ๋๊ฒ ํด ์ฃผ์์ด์.
217 ~ 218๊น์ง Start Date์ End Date์ ํ๋จ์ด ์๋ฃ ๋์์ผ๋ DTO Setter(์ธํฐ)๋ฅผ ํตํด ๊ฐ์ด ๋ค์ด๊ฐ๋๋ก ํด ์ฃผ์๊ณ , ๊ฒ์ ์กฐ๊ฑด์ด ๋ ์ง ๊ฒ์์ด ์๋๋ผ๋ฉด ๊ฒ์ ํ์
์ Key ๊ฐ์ธ ๊ฒ์ ํ์
๋ฌธ์์ด์ด ๊ฒ์์ด์ Value์ธ ๊ฒ์์ด ๋ฌธ์์ด์ด ๋ค์ด๊ฐ๋๋ก ํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค DTO๋ฅผ ๋ฐํํ์ฌ API ํธ์ถ ๋ ์ฌ์ฉํ ์ ์๋๋ก ์ฒ๋ฆฌํด ์ฃผ์์ด์.
67๋ฒ์งธ ์ค์ DTO๊ฐ Null์ธ์ง ํ์ธํ๊ณ , Null์ด ์๋๋ผ๋ฉด ๊ฒ์ ์กฐ๊ฑด์ด ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ URL ํ๋ผ๋ฏธํฐ๋ฅผ ๋ง๋๋ API ํธ์ถ์ฉ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ํ๋ฉด์ DTO์ HTTP Method Type์ ๋์ ธ ์ฃผ๊ฒ ํ์๊ณ ,
DTO๊ฐ Null์ด๋ผ๋ฉด ๊ฒ์ ์กฐ๊ฑด์ด ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์กฐ๊ฑด ์์ด API๋ฅผ ํธ์ถํ๋ Method๋ฅผ ํธ์ถํ๋ฉด์ HTTP Method Type์ ๋์ ธ์ฃผ๊ฒ ํ์์ด์.
35๋ฒ์งธ ์ค์ API๋ฅผ ํธ์ถํด์ ๋ฐ์ ๋ฌธ์์ด ๊ฐ์ด ๋ฐํ๋๊ฒ ๋ ๊ฑฐ๊ณ , ์ด๋ฅผ List์ ๋ด์ ์ค ๋ค ๋ฐํํ๊ฒ ํด ์ฃผ์์ด์.
๋ง์ฝ ๊ฒ์ ์กฐ๊ฑด ์์ด ๋์ค์ฝ๋ ๋ด๋ง ๋ถ๋ ๋ค๋ฉด ๊ทธ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํด ์ค ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๊ทธ ๊ฐ๋ค์ ๋ฆฌ์คํธ์ ๋ด๊ฒ ํ๊ณ , ๋ฐํํด ์ค๋๋ค.
API๋ฅผ ํตํด ๊ฐ์ ํธ์ถํ๋ ๋ช
๋ น์ด๊ฐ ์๋ ๋จ์ํ ๋์ค์ฝ๋ ๋ด๊ณผ ๊ฐ๋จํ ๋ํ๋ฅผ ํด ๋ณผ ์ ์๋ ๋ช
๋ น์ด์ ๋ํด ์๋ต ๋ฉ์์ง๋ฅผ ๋ง๋ค ๋ฉ์๋์์.
์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ช
๋ น์ด๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๋๋์ด ๋ด์ ๋ฐฐ์ด์๋ ๋์ค์ฝ๋ ๋ด(์ฃผ๋์ผ)๋ฅผ ๋ถ๋ฅธ ๋ค ์ด๋ค ๋ด์ฉ์ด ๋ด๊ฒจ ์์ ๊ฑฐ์์.
๊ทธ ๋ด์ฉ์ ๋ฐฐ์ด์ 1๋ฒ์งธ์ ์์นํด ์์ ๊ฒ์ด๊ณ , ๊ทธ ๋ด์ฉ์ switch๋ฌธ์ ํตํด ํ์ธํ๋๋ฐ, case ๋ฌธ์ ์
๋ ฅ๋ ๋ฌธ์์ด์ ํ์ธํ๊ณ , ๊ทธ์ ๋ง๋ ๋๋ต์ ํด ์ค ์ ์๊ฒ ํด ์ฃผ์์ด์.
๊ทธ๋ฐ๋ฐ, ๋ง์ฝ ํฌ๋ฃจ์ ์ฒด์กฐํ ๋ผ๋ ๋ช
๋ น์ด๊ฐ ๋ค์ด์ค๊ฒ ๋๋ค๋ฉด ๋ค์ checkBodyCommandForAPICall()์ ํธ์ถํ์ฌ ๋ช
๋ น์ด ๋ฐฐ์ด์ ์ ๋ฌํ๊ฒ ํด ์ฃผ์์ด์.
์ด๋ ๊ฒ ๋๋ฉด ๊ฒ์ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ URL Parameter๊ฐ ์๋ API ํธ์ถ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋ ๊ฑฐ๊ณ , ๊ทธ์ ๋ง๋ ์ ์ฒด ๋ชฉ๋ก ์กฐํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๊ฒ ๋ ๊ฑฐ์์.
์ด๋ ๊ฒ ๋์ค์ฝ๋ ๋ด์ ์๋ต ๋ฉ์์ง๋ฅผ ๋ด์ ๋ฌธ์์ด ๋ณ์ result๋ฅผ ๋ฐํํ๊ฒ ๋ฉ๋๋ค.
checkCommand()๋ฅผ ํตํด ๋ณต์กํ๊ณ , ๊ธฐ๋๊ธด ์ฌํ์ ํ๊ณ , ๋์ค์ฝ๋ ๋ด์ ์๋ต ๋ฉ์์ง๋ฅผ ๋ฐ๊ฒ ๋๋ฉด ์ด๋ฅผ resultList๊ฐ ๋ฐ๊ฒ ๋์.
๊ทธ๋ฆฌ๊ณ , ๊ทธ List๊ฐ Null์ธ์ง๋ฅผ ํ์ธํ๊ฒ ๋๊ณ , Null์ด ์๋๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก ์๋ต ๋ฉ์์ง๋ฅผ ์์๊ฒ ๊พธ๋ฉฐ์ค createSendMessage()๋ฅผ ํธ์ถํ๋๋ฐ, MessageReceivedEvent ๊ฐ์ฒด์ ์ผ๋ฐ ์๋ต ๋ฉ์์ง๋ฅผ ๋ด์ List 0๋ฒ์งธ ๋ฌธ์์ด, Embed๋ก ๊พธ๋ฉฐ์ค ์๋ต ๋ฉ์์ง๋ฅผ ๋ด์ 1๋ฒ์งธ ๋ฌธ์์ด์ Null ์ฒดํฌ๋ฅผ ํ๊ณ ๋ณด๋ด์ฃผ๊ฒ ๋ฉ๋๋ค.
createSendMessage()๋ ๋์ค์ฝ๋ ๋ด์ ์๋ต ๋ฉ์์ง๋ฅผ ์์๊ฒ, ์๋ง๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ญํ ์ ํ๊ณ ์์ด์.
์ต์ด 56๋ฒ์งธ ๋ณ์์ 1950 ์ ์๋ฅผ ๋ฃ์ ์ด์ ๋ ๋์ค์ฝ๋๋ ํ๋ฒ์ 2000์ ์ดํ์ ๋ฉ์์ง๋ง ๋ณด๋ผ ์ ์์ด์.
๊ทธ๋์ ํน์ ๋ชจ๋ฅผ ๋์นจ์ ์๋ฐฉํ๊ธฐ ์ํด 1950๊น์ง ๋ฌธ์์ด ๊ฐ์ ํ์ธํ ์ํ ๋ณ์๋ฅผ ๋ง๋ค์ด ์ฃผ์๊ณ ,
resultMessageSize ๋ณ์์ Embed๋ก ๋ณด๋ผ ๋ฌธ์์ด ํฌ๊ธฐ๋ฅผ ๋ด์ ์ฃผ์์ด์.
59๋ฒ์งธ ์ค์ ๊ฐ์ฒด๋ ๋์ค์ฝ๋์ Embed ๋ฉ์์ง๋ฅผ ๊พธ๋ฉฐ์ฃผ๊ณ , ๋ณด๋ผ ์ ์๋ ๊ฐ์ฒด์์.
60๋ฒ์งธ ์ค์ Embed์ ํ์๋ ์ ๋ชฉ์ ๋ฃ์ด์ฃผ๊ณ , Embed์ ์์์ ๊พธ๋ฉฐ์ฃผ์์ด์. ๊ทธ๋ฐ ๋ค์ Fotter(ํธํฐ)์ ์ฃผ๋๊ฐ ๋ณด๋ด๊ณ ์ถ์ ๋ด์ฉ์ ์ ์ด ์ฃผ์์ด์.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ช
๋ น์ด๋ฅผ ์ ๋ชป ์
๋ ฅํ๊ฑฐ๋, ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ returnEmbedMessage ๋ณ์์ "๋ช
๋ น์ด๋ฅผ ํ์ธํด ์ฃผ์ธ์." ๋ผ๋ ๊ฐ์ด ๋ด๊ฒจ ์๋ค๋ฉด embed ์์์ ๋นจ๊ฐ์์ผ๋ก ํ์ ๋๊ฒ ํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ๋ฉ์์ง ํฌ๊ธฐ๋ฅผ ํ์ธํ๊ธฐ ์ํด 68๋ฒ์งธ ์ค์์ ํ์ธ์ ํ๊ณ , 1950๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด ์ผ๋จ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค ์ค๋๋ค.
์ฌ๊ธฐ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ์ด์ ๋ ํฌ๊ธฐ์ ๋ง์ถฐ ์ฌ๋ฌ๋ฒ ๋ณด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ด์์.
๋ฐ๋ณต๋ฌธ์์ ์๋ต ๋ฉ์์ง ํฌ๊ธฐ๋ฅผ 1950์ผ๋ก ๋๋ ๋ค 1์ ๋ํด์ฃผ๋๋ฐ, ์๋ฅผ ๋ค์ด 1951์ ๋๊ฐ๋ค๋ฉด ๋๋ ๊ฐ์ 0.xxx๊ฐ ๋ ๊ฑฐ์์. ๊ทธ๋ฌ๋ฉด ๋ฐ๋ณต๋ฌธ์ด ํ๋ฒ๋ง ๋๊ฒ ๋๊ณ , ์ด๋ ๊ฒ ๋๋ฉด 1950 ์ดํ์ ๋ฌธ์์ด์ ์ ์ก์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ 1์ ๋ํด ์ฃผ์ด ๋ฐ๋ณต๋๊ฒ ํด ์ฃผ์์ด์.
setDescription()์ Embed์ ๋ณธ๋ฌธ ๋ด์ฉ์ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฉ์๋ ์ด๊ณ , ์ด ๊ณณ์ ์๋ต ๋ฉ์์ง๋ฅผ 0๋ถํฐ 1950๊น์ง ์งค๋ผ์ ๋ฃ๊ฒ ํด์ฃผ๊ณ , ๋ฐ๋ก sendMessage()๋ฅผ ํธ์ถํ์ฌ ๋์ค์ฝ๋์ ์๋ต์ด ๊ฐ ์ ์๊ฒ ํด ์ฃผ์์ด์.
๋ง์ฝ 1950๋ณด๋ค ์๋ต ๋ฉ์์ง๊ฐ ์๋ค๋ฉด ๊ทธ๋ฅ ๋ณด๋ด๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก sendMessage()๋ก ๋ณด๋ด์ฃผ๋๋ก ํ๊ณ , ๋ง์ง๋ง์ผ๋ก Embed๋ฅผ ์ ๋ฆฌํด ์ฃผ๋ clear()๋ฅผ ํธ์ถํ๊ณ ๋๋ด๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ก ์ด ๋ฉ์๋๊ฐ ์ต์ข
์ ์ผ๋ก ๋์ค์ฝ๋์ ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ฃผ๋ ๋ฉ์๋์์.
MessageReceivedEvent ๊ฐ์ฒด์์ getChannel()์ ๋์ค์ฝ๋์ ์๋ตํ ์ฑ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ํด ์ฃผ๊ณ , asTextChannel()์ ์์ฑ ๋ฐ ํ์ ํ์๊ฐ ๊ฐ๋ฅํ ์ฑ๋์ด ์๋ ๋ฌธ์๋ง ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ์ฑ๋์ ์ ํํด ์ฃผ๋ฉฐ, ์ด๋ฅผ TextChannel ๊ฐ์ฒด๋ก ๋ฐ์์ฃผ๊ณ , ๊ทธ ๊ฐ์ฒด์์ sendMessage()๋ฅผ ํตํด ์ผ๋จ ๋ฉ์์ง ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ , setEmbeds()๋ฅผ ํตํด Embed์ ๋ฃ์ ๋ด์ฉ์ด ๋ด๊ธด EmbedBuilder ๊ฐ์ฒด๋ฅผ build()๋ฅผ ํธ์ถํ์ฌ ๋ฃ์ด์ฃผ๊ณ , queue()๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ๋์ค์ฝ๋์ ์ ์์ ์ผ๋ก ๋ฉ์์ง๊ฐ ์ ๋ฌ์ด ๋๋ต๋๋ค!
๐ฝ ๊ฒฐ๊ณผ๋ฌผ
// Spring Boot Console Log
2023-03-17 16:07:37.210 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ฃผ๋์ผ ํฌ๋ฃจ์ ์ฒด์กฐํ
2023-03-17 16:07:37.287 INFO 4331 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-03-17 16:07:37.287 INFO 4331 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-03-17 16:07:37.288 INFO 4331 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2023-03-17 16:07:37.307 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.isValid(5) returned true
2023-03-17 16:07:37.308 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setReadOnly(true) returned
2023-03-17 16:07:37.308 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned true
2023-03-17 16:07:37.308 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setAutoCommit(false) returned
2023-03-17 16:07:37.337 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned false
2023-03-17 16:07:37.343 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.new PreparedStatement returned
2023-03-17 16:07:37.343 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.prepareStatement(select *
from crew) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@79eaa2dc
2023-03-17 16:07:37.346 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. select * from crew {executed in 2 ms}
2023-03-17 16:07:37.346 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.execute() returned true
2023-03-17 16:07:37.347 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.new ResultSet returned
2023-03-17 16:07:37.347 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.getResultSet() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@1d56f127
2023-03-17 16:07:37.350 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getMetaData() returned rsMeta0: columns=5
2023-03-17 16:07:37.353 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getType() returned 1003
2023-03-17 16:07:37.353 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.353 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 1
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345678
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned hong1234@gmail.com
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 2
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345679
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ๊น๊ธธ๋
2023-03-17 16:07:37.355 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned kim2393@gmail.com
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 3
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345671
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned tak2934@gmail.com
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 4
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345672
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ด๊ธธ๋
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned lee9038@gmail.com
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 5
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345680
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-10 00:00:00.0
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ต๊ธธ๋
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned kim2393@gmail.com
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 6
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345681
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-11 00:00:00.0
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ๋ฐ๊ธธ๋
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned tak2934@gmail.com
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 7
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345682
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-12 00:00:00.0
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ ๊ธธ๋
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned lee9038@gmail.com
2023-03-17 16:07:37.356 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:07:37.357 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 :
|----|----------|----------------------|-----|-------------------|
|idx |id |join_date |name |email |
|----|----------|----------------------|-----|-------------------|
|1 |u12345678 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |hong1234@gmail.com |
|2 |u12345679 |2023-03-17 00:00:00.0 |๊น๊ธธ๋ |kim2393@gmail.com |
|3 |u12345671 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |tak2934@gmail.com |
|4 |u12345672 |2023-03-17 00:00:00.0 |์ด๊ธธ๋ |lee9038@gmail.com |
|5 |u12345680 |2023-03-10 00:00:00.0 |์ต๊ธธ๋ |kim2393@gmail.com |
|6 |u12345681 |2023-03-11 00:00:00.0 |๋ฐ๊ธธ๋ |tak2934@gmail.com |
|7 |u12345682 |2023-03-12 00:00:00.0 |์ ๊ธธ๋ |lee9038@gmail.com |
|----|----------|----------------------|-----|-------------------|
2023-03-17 16:07:37.357 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned false
2023-03-17 16:07:37.357 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.close() returned void
2023-03-17 16:07:37.357 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.getMetaData() returned dbMeta1: conn0: url=jdbc:h2:~/giggal-discord-bot?serverTimezone=UTC&characterEncoding=UTF-8 user=SA
2023-03-17 16:07:37.357 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.close() returned
2023-03-17 16:07:37.358 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.commit() returned
2023-03-17 16:07:37.358 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setAutoCommit(true) returned
2023-03-17 16:07:37.358 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setReadOnly(false) returned
2023-03-17 16:07:37.359 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.clearWarnings() returned
2023-03-17 16:07:37.729 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ค์ด๋ ํฌ๋ฃจ๋ค์ ์ ๋ณด๋ ์๋์ ๊ฐ์์!
// Spring Boot Console Log
2023-03-17 16:09:26.478 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ฃผ๋์ผ ํฌ๋ฃจ์ ์ฒด์กฐํ -์ด๋ฆ=ํ๊ธธ๋
2023-03-17 16:09:26.495 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.isValid(5) returned true
2023-03-17 16:09:26.496 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.setReadOnly(true) returned
2023-03-17 16:09:26.496 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned true
2023-03-17 16:09:26.497 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.setAutoCommit(false) returned
2023-03-17 16:09:26.504 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned false
2023-03-17 16:09:26.508 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. PreparedStatement.new PreparedStatement returned
2023-03-17 16:09:26.508 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.prepareStatement(select *
from crew
where name like CONCAT('%', ?, '%')) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@6abf3c13
2023-03-17 16:09:26.508 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. PreparedStatement.setString(1, "ํ๊ธธ๋") returned
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. select * from crew where name like CONCAT('%', 'ํ๊ธธ๋', '%') {executed in 1 ms}
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. PreparedStatement.execute() returned true
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.new ResultSet returned
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. PreparedStatement.getResultSet() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@6cdcbc6e
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getMetaData() returned rsMeta2: columns=5
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getType() returned 1003
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 1
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345678
2023-03-17 16:09:26.509 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned hong1234@gmail.com
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 :
|----|----------|----------------------|-----|-------------------|
|idx |id |join_date |name |email |
|----|----------|----------------------|-----|-------------------|
|1 |u12345678 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |hong1234@gmail.com |
|----|----------|----------------------|-----|-------------------|
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.next() returned false
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. ResultSet.close() returned void
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.getMetaData() returned dbMeta2: conn0: url=jdbc:h2:~/giggal-discord-bot?serverTimezone=UTC&characterEncoding=UTF-8 user=SA
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. PreparedStatement.close() returned
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.commit() returned
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.setAutoCommit(true) returned
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.setReadOnly(false) returned
2023-03-17 16:09:26.510 INFO 4331 --- [nio-8080-exec-3] log4jdbc.log4j2 : 1. Connection.clearWarnings() returned
2023-03-17 16:09:26.858 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ค์ด๋ ํฌ๋ฃจ๋ค์ ์ ๋ณด๋ ์๋์ ๊ฐ์์!
// Spring Boot Console Log
2023-03-17 16:10:49.518 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ฃผ๋์ผ ํฌ๋ฃจ์ ์ฒด์กฐํ -๊ณ์ =u1234567
2023-03-17 16:10:49.523 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.isValid(5) returned true
2023-03-17 16:10:49.523 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.setReadOnly(true) returned
2023-03-17 16:10:49.523 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned true
2023-03-17 16:10:49.523 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.setAutoCommit(false) returned
2023-03-17 16:10:49.525 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned false
2023-03-17 16:10:49.525 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. PreparedStatement.new PreparedStatement returned
2023-03-17 16:10:49.525 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.prepareStatement(select *
from crew
where id like CONCAT('%', ?, '%')) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@4a524e3e
2023-03-17 16:10:49.526 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. PreparedStatement.setString(1, "u1234567") returned
2023-03-17 16:10:49.526 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. select * from crew where id like CONCAT('%', 'u1234567', '%') {executed in 0 ms}
2023-03-17 16:10:49.526 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. PreparedStatement.execute() returned true
2023-03-17 16:10:49.526 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.new ResultSet returned
2023-03-17 16:10:49.526 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. PreparedStatement.getResultSet() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@a6c930e
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getMetaData() returned rsMeta4: columns=5
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getType() returned 1003
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 1
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345678
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:10:49.527 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned hong1234@gmail.com
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 2
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345679
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ๊น๊ธธ๋
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned kim2393@gmail.com
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:10:49.528 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 3
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345671
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned tak2934@gmail.com
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 4
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345672
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ด๊ธธ๋
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned lee9038@gmail.com
2023-03-17 16:10:49.529 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:10:49.530 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 :
|----|----------|----------------------|-----|-------------------|
|idx |id |join_date |name |email |
|----|----------|----------------------|-----|-------------------|
|1 |u12345678 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |hong1234@gmail.com |
|2 |u12345679 |2023-03-17 00:00:00.0 |๊น๊ธธ๋ |kim2393@gmail.com |
|3 |u12345671 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |tak2934@gmail.com |
|4 |u12345672 |2023-03-17 00:00:00.0 |์ด๊ธธ๋ |lee9038@gmail.com |
|----|----------|----------------------|-----|-------------------|
2023-03-17 16:10:49.530 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.next() returned false
2023-03-17 16:10:49.530 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. ResultSet.close() returned void
2023-03-17 16:10:49.530 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.getMetaData() returned dbMeta3: conn0: url=jdbc:h2:~/giggal-discord-bot?serverTimezone=UTC&characterEncoding=UTF-8 user=SA
2023-03-17 16:10:49.530 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. PreparedStatement.close() returned
2023-03-17 16:10:49.531 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.commit() returned
2023-03-17 16:10:49.531 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.setAutoCommit(true) returned
2023-03-17 16:10:49.531 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.setReadOnly(false) returned
2023-03-17 16:10:49.531 INFO 4331 --- [nio-8080-exec-5] log4jdbc.log4j2 : 1. Connection.clearWarnings() returned
2023-03-17 16:10:49.856 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ค์ด๋ ํฌ๋ฃจ๋ค์ ์ ๋ณด๋ ์๋์ ๊ฐ์์!
// Spring Boot Console Log
2023-03-17 16:11:58.540 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ฃผ๋์ผ ํฌ๋ฃจ์ ์ฒด์กฐํ -๋ ์ง=2023.03.10~2023.03.14
2023-03-17 16:11:58.555 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.isValid(5) returned true
2023-03-17 16:11:58.555 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.setReadOnly(true) returned
2023-03-17 16:11:58.555 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned true
2023-03-17 16:11:58.555 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.setAutoCommit(false) returned
2023-03-17 16:11:58.556 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned false
2023-03-17 16:11:58.561 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. PreparedStatement.new PreparedStatement returned
2023-03-17 16:11:58.562 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.prepareStatement(select *
from crew
where join_date BETWEEN PARSEDATETIME(?, 'yyyy.MM.dd') AND PARSEDATETIME(?, 'yyyy.MM.dd')) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@47fd043d
2023-03-17 16:11:58.562 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. PreparedStatement.setString(1, "2023.03.10") returned
2023-03-17 16:11:58.562 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. PreparedStatement.setString(2, "2023.03.14") returned
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. select * from crew where join_date BETWEEN PARSEDATETIME('2023.03.10', 'yyyy.MM.dd') AND PARSEDATETIME('2023.03.14',
'yyyy.MM.dd') {executed in 1 ms}
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. PreparedStatement.execute() returned true
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.new ResultSet returned
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. PreparedStatement.getResultSet() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@2a76a14f
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getMetaData() returned rsMeta6: columns=5
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getType() returned 1003
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 5
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345680
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-10 00:00:00.0
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ต๊ธธ๋
2023-03-17 16:11:58.563 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned kim2393@gmail.com
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 6
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345681
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-11 00:00:00.0
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ๋ฐ๊ธธ๋
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned tak2934@gmail.com
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 7
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345682
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-12 00:00:00.0
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ ๊ธธ๋
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned lee9038@gmail.com
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 :
|----|----------|----------------------|-----|------------------|
|idx |id |join_date |name |email |
|----|----------|----------------------|-----|------------------|
|5 |u12345680 |2023-03-10 00:00:00.0 |์ต๊ธธ๋ |kim2393@gmail.com |
|6 |u12345681 |2023-03-11 00:00:00.0 |๋ฐ๊ธธ๋ |tak2934@gmail.com |
|7 |u12345682 |2023-03-12 00:00:00.0 |์ ๊ธธ๋ |lee9038@gmail.com |
|----|----------|----------------------|-----|------------------|
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.next() returned false
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. ResultSet.close() returned void
2023-03-17 16:11:58.564 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.getMetaData() returned dbMeta4: conn0: url=jdbc:h2:~/giggal-discord-bot?serverTimezone=UTC&characterEncoding=UTF-8 user=SA
2023-03-17 16:11:58.565 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. PreparedStatement.close() returned
2023-03-17 16:11:58.565 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.commit() returned
2023-03-17 16:11:58.565 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.setAutoCommit(true) returned
2023-03-17 16:11:58.565 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.setReadOnly(false) returned
2023-03-17 16:11:58.565 INFO 4331 --- [nio-8080-exec-7] log4jdbc.log4j2 : 1. Connection.clearWarnings() returned
2023-03-17 16:11:58.947 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ค์ด๋ ํฌ๋ฃจ๋ค์ ์ ๋ณด๋ ์๋์ ๊ฐ์์!
// Spring Boot Console Log
2023-03-17 16:13:57.018 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ฃผ๋์ผ ํฌ๋ฃจ์ ์ฒด์กฐํ -๊ณ์ =u1234567 -๋ ์ง=2023.03.10~2023.03.17
2023-03-17 16:13:57.023 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.isValid(5) returned true
2023-03-17 16:13:57.023 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setReadOnly(true) returned
2023-03-17 16:13:57.023 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned true
2023-03-17 16:13:57.023 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setAutoCommit(false) returned
2023-03-17 16:13:57.024 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.getAutoCommit() returned false
2023-03-17 16:13:57.024 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.new PreparedStatement returned
2023-03-17 16:13:57.024 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.prepareStatement(select *
from crew
where id like CONCAT('%', ?, '%')
and join_date BETWEEN PARSEDATETIME(?, 'yyyy.MM.dd') AND PARSEDATETIME(?, 'yyyy.MM.dd')) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@4111448b
2023-03-17 16:13:57.025 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.setString(1, "u1234567") returned
2023-03-17 16:13:57.025 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.setString(2, "2023.03.10") returned
2023-03-17 16:13:57.025 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.setString(3, "2023.03.17") returned
2023-03-17 16:13:57.026 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. select * from crew where id like CONCAT('%', 'u1234567', '%') and join_date BETWEEN PARSEDATETIME('2023.03.10',
'yyyy.MM.dd') AND PARSEDATETIME('2023.03.17', 'yyyy.MM.dd') {executed in 1 ms}
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.execute() returned true
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.new ResultSet returned
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.getResultSet() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@57fba032
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getMetaData() returned rsMeta12: columns=5
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getType() returned 1003
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:13:57.027 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:13:57.028 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 1
2023-03-17 16:13:57.029 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345678
2023-03-17 16:13:57.032 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:13:57.032 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned hong1234@gmail.com
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 2
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345679
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ๊น๊ธธ๋
2023-03-17 16:13:57.033 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned kim2393@gmail.com
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 3
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345671
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ํ๊ธธ๋
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned tak2934@gmail.com
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned true
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getLong(IDX) returned 4
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(ID) returned u12345672
2023-03-17 16:13:57.034 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getTimestamp(JOIN_DATE) returned 2023-03-17 00:00:00.0
2023-03-17 16:13:57.035 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(NAME) returned ์ด๊ธธ๋
2023-03-17 16:13:57.035 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.getString(EMAIL) returned lee9038@gmail.com
2023-03-17 16:13:57.035 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.isClosed() returned false
2023-03-17 16:13:57.035 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 :
|----|----------|----------------------|-----|-------------------|
|idx |id |join_date |name |email |
|----|----------|----------------------|-----|-------------------|
|1 |u12345678 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |hong1234@gmail.com |
|2 |u12345679 |2023-03-17 00:00:00.0 |๊น๊ธธ๋ |kim2393@gmail.com |
|3 |u12345671 |2023-03-17 00:00:00.0 |ํ๊ธธ๋ |tak2934@gmail.com |
|4 |u12345672 |2023-03-17 00:00:00.0 |์ด๊ธธ๋ |lee9038@gmail.com |
|----|----------|----------------------|-----|-------------------|
2023-03-17 16:13:57.035 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.next() returned false
2023-03-17 16:13:57.035 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. ResultSet.close() returned void
2023-03-17 16:13:57.036 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.getMetaData() returned dbMeta7: conn0: url=jdbc:h2:~/giggal-discord-bot?serverTimezone=UTC&characterEncoding=UTF-8 user=SA
2023-03-17 16:13:57.036 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. PreparedStatement.close() returned
2023-03-17 16:13:57.036 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.commit() returned
2023-03-17 16:13:57.036 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setAutoCommit(true) returned
2023-03-17 16:13:57.036 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.setReadOnly(false) returned
2023-03-17 16:13:57.036 INFO 4331 --- [nio-8080-exec-1] log4jdbc.log4j2 : 1. Connection.clearWarnings() returned
2023-03-17 16:13:57.430 INFO 4331 --- [inWS-ReadThread] c.j.d.listener.JunyssDiscordListener : get message : ์ค์ด๋ ํฌ๋ฃจ๋ค์ ์ ๋ณด๋ ์๋์ ๊ฐ์์!
์ด๋ ๊ฒ ๋์ค์ฝ๋ ๋ด์ด ์ํ๋๋๋ก ๋์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์ด๋ฒ์๋ ์ ๋ง ์ฌ๋ฐ๊ฒ ๋ ๊ฑฐ ๊ฐ์๋ฐ? ๋ผ๋ ์๋ฌธ์ ํ์์ด์!
๋ค์์๋ ์ข์ ๋ด์ฉ์ผ๋ก ์์ฑํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
๋์ค์ฝ๋ ๋ด์ ์ด์ฉํ์ฌ ๋ณด๋ค ํธ๋ฆฌํ ์
๋ฌด ํ์๊ธฐ ๋ฐ๋๊ฒ์!
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."