[TypeORM] ์ฟผ๋ฆฌ๋น๋: select
์ด๋ฒ์ select ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฒ์ ๋ค๋ค๋ณด๊ฒ ๋ค.
ํ ์คํธ์ ์ฌ์ฉํ ํ ์ด๋ธ ์ํฐํฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.

๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋นํ ๋ค์ด์๋ค.

์ ์ฒด ์กฐํํ๊ธฐ
์ ์ฒด๋ชฉ๋ก์ ์กฐํํ๋๊ฑด ๊ฐ๋จํ๋ค.
์ฟผ๋ฆฌ ๋น๋ ์์ฑ ํ, select ๋ฉ์๋๋ก select์์ ์๋ฆฌ๊ณ .
from์ ์์๋๋ก ํ
์ด๋ธ ์ํฐํฐ ํด๋์ค์ ํ
์ด๋ธ alias๋ฅผ ์์๋๋ก ๋ฃ์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ execute๋ฅผ ํ๋ฉด ๋์ด๋ค.
๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ด ์คํ๋๊ณ , ๊ฒฐ๊ณผ๊ฐ์ด ๋์ฌ ๊ฒ์ด๋ค.

from์ ์ฌ์ฉํ์ง ์๊ณ ํ ์ด๋ธ ์ง์ ์ ๋น๋ ์์ฑ์์ ํ ์๋ ์๋ค.

๊ทธ๋ฌ๋ฉด ๋ชจ๋ ์ปฌ๋ผ์ * ์์ด ๋ช
์ํด์ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๊ฐ ๋๋๋ผ.
์ผ๋จ ๋์์๋ ์ฐจ์ด๊ฐ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์์์๋ execute๋ก ๊ฐ์ ๊ฐ์ ธ์์ง๋ง, ์ด์ธ์๋ ๋ช๊ฐ์ง ํจ์๊ฐ ๋ ์ ๊ณต๋๋ค.
ํ๋๋ง ๊ฐ์ ธ์ค๋ getOne, ์ฌ๋ฌ๊ฐ๋ฅผ ๊ฐ์ ธ์ค๋ getMany ๋ฑ์ด ์๋๋ฐ, ์ ๋ถ ์ฟผ๋ฆฌ๋น๋ ์์ฑ ์์ ์ํฐํฐ๋ฅผ ์ค ๊ฒฝ์ฐ์๋ง ์ผ๋ฐ์ ์ผ๋ก ๋์ํ๋ค.
getOne


getMany

๋ฑ๋ฑ...
์ผ๋ถ ์ปฌ๋ผ๋ง ๊ฐ์ ธ์ค๊ธฐ
select์ ์ธ์๋ฅผ ์ฃผ์ง ์์ผ๋ฉด ๋ํดํธ๋ก select *๋ฅผ ๋๋ ค๋ฒ๋ฆฐ๋ค.
ํน์ ์ปฌ๋ผ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋๋ค.
์์๋๋ก ๊ฐ์ ธ์ฌ ์ปฌ๋ผ๋ช
๊ณผ alias๋ค.

ํ๊ฐ ์ด์์ ์ปฌ๋ผ์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด addSelect๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.


์ ์ปฌ๋ผ ํ ์คํธ์ ์ฐ์ฐ์ ์ถ๊ฐ๋ก ์ ์ผ๋ฉด ์ปฌ๋ผ์ ๊ฐ๊ณตํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.


์กฐ๊ฑด ๊ฑธ๊ธฐ
์กฐ๊ฑด์ where ๋ฉ์๋๋ก ๋ถ์ฌํ ์ ์๋ค.
๋ฌธ์์ด๋ก ์กฐ๊ฑด์ ํ
์คํธ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๊ณ , ๋๋ฒ์งธ ์ธ์๋ก ๊ฐ์ ๋ํ replacement๋ฅผ ์ํํ ์ ์๋ค.
์ฟผ๋ฆฌ๊ฐ ํฐ์ง์ง ์๊ฒ escapeํด์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด๋ค.

๊ทธ๋ผ ์๋์ ๊ฐ์ด ์ ๋์ํ ๊ฒ์ด๋ค.

์ฌ๋ฌ๊ฐ์ ์กฐ๊ฑด์ ๊ฑธ๊ณ ์ถ๋ค๋ฉด addWhere๋ก ์กฐ๊ฑด์ ์ ์ถ๊ฐํ ์ ์๋ค.
๋จ, replacement ๊ฐ์ ๋ฉ์๋๋ณ๋ก ๋ฐ๋ก ์กด์ฌํ๋ ๊ฒ์ด ์๋์ ๊ธฐ์ตํ์.
๋ง์ฝ ์ ๊ธฐ ๋๋ฒ์งธ addWhere์์ ๋๋ฒ์งธ ์ธ์ ๊ฐ์ฒด์ id๋ฅผ ํ๋ ๋ ์ด๋ค๋ฉด ์ด์ ์ id์ ๋ฎ์ด์จ๋ฒ๋ฆด ๊ฒ์ด๋ค.
์๋ฌดํผ, ์ ๋์ํ ๊ฒ์ด๋ค.

์ ๋ ฌํ๊ธฐ
์ ๋ ฌ์ orderby์ addOrderby ๋ฉ์๋๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ ฌ๊ธฐ์ค๊ฐ์, ๋๋ฒ์งธ ์ธ์๋ก 'ASC'๋ 'DESC' ํ
์คํธ๋ฅผ ๋๋ฌธ์๋ก ์ค์ผ ํ๋ค.
๋ฉํํ๋ก๊ทธ๋๋ฐ์ ์ข ํด๋๋์ง ๋๋ฌธ์๊ฐ ์๋๋ฉด ๋นจ๊ฐ์ค์ ๊ธ๋๋ผ
๊ทธ๋ผ ์ด๋ ๊ฒ ๋์๊ฐ ๊ฒ์ด๋ค.

addOrderby๋ ๋ง์ฐฌ๊ฐ์ง๋ค.

offset & limit
๋ณดํต ํ์ด์ง๋ค์ด์
๋ฑ์ ์ฒ๋ฆฌํ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด๋ค.
offset์ ์ด๋๋ถํฐ ์ฝ์ด ๊ฐ์ ธ์ฌ์ง, limit๋ ๋ช๊ฐ๊น์ง ๊ฐ์ ธ์ฌ์ง๋ฅผ ์ง์ ํ๋ค.


๊ทธ๋ฃน
๊ทธ๋ฃน์ groupBy์ addGroupBy๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทธ๋ฅ ๋ฌธ์์ด๋ก groupbyํ ์ปฌ๋ผ๋ช ์ ์จ์ฃผ๋ฉด ๋๋ค. ์ฌ๋ฌ๊ฐ๋ฉด addGroupBy๋ฅผ ์ฐ๋ฉด ๋๋ค.
groupy๋ก ํจ์ค์๋๊ฐ ๊ฐ์ ์ ์ ๊ฐ ๋ช๋ช ์ธ์ง๋ฅผ ํ์ธํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ง ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์งค ์ ์๋ค.


join๊ณผ ๊ด๊ณ ์ค์ ์ ๋ณ๋ ํฌ์คํธ๋ก ๋ค๋ค๋ณผ ๊ฒ์ด๋ค.