๋ณธ ํ๋ก์ ํธ๋ Node.js ์๋ฒ๋ฅผ DDD ์ํคํ ์ฒด๋ก ์์ฑํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ CRUD ๋ฅผ ์ํ repository ๋ฐ router ๋ฅผ auto generate ํ๊ธฐ ์ํ cli application ์ด๋ค.
๋ํ ๋ชจ๋ ๋ก์ง์ mysql sequelize๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ /bin/dddgen ํ์ผ์ ์์ ํ์ฌ์ผ ํ๋ค.
๋จผ์ ์์ฑํ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ฝ์ด๋ค์ด๊ธฐ ์ํด ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ค.
export PATH=/Users/namhoonlee/Desktop/git/ddd-api-generator/bin:$PATH
์ ๋ช ๋ น์ด๋ ํน์ ๋๋ ํ ๋ฆฌ์ ๋ก์ปฌ ํ๊ฒฝ๋ณ์ ์ด๋ฏ๋ก ์ ์ญ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋
/.bash_profile ํ์ผ์ ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ค.
dddgen generate <component>
component์ ์ข
๋ฅ
repo
repository interface ๋ฅผ ์์ฑํด ์ค๋ค.
repoimpl
repository ๊ตฌํ์ฒด๋ฅผ ์์ฑํด ์ค๋ค.
route
route๋ฅผ ์์ฑํด ์ค๋ค.
all
ํน์ ๋๋ฉ์ธ์ ๋ํด ์ ๋ชจ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํด ์ค๋ค.
์ ๋ช ๋ น์ด๋ DDD ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ ๋ช ๋ น์ด์ด๋ฉฐ ๋ค์์ ํ์ ์ต์ ์ ๊ฐ์ง๋ค.
-n <domain>
์ฌ๊ธฐ์ domain ๋ช ์ ๋จ์์ด๋ฉฐ, ๋ ๋จ์ด ์ด์์ธ ๊ฒฝ์ฐ sales-proposal ์ ๊ฐ์ด ๊ฐ์ด๋ฐ ๋ฐ(-) ๋ก ๊ตฌ๋ถํด ์ค๋ค.
example
dddgen generate repository -n user
dddgen generate all -n user
๊ฐ ์ปดํฌ๋ํธ๋ค์ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค.
repository: ./src/domain/[๋๋ฉ์ธ ๋ช
]/[๋๋ฉ์ธ ๋ช
].repository.ts
repository implementation: ./src/infra/sequelize/mysql/repositories/[๋๋ฉ์ธ ๋ช
].repository.impl.ts
route: ./src/interfaces/http/[๋๋ฉ์ธ ๋ช
].route.ts
ํด๋น ๊ฒฝ๋ก๋ฅผ ์ํ ๋๋ ํ ๋ฆฌ๋ค์ด ๋ชจ๋ ์์ฑ๋์ด ์์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์์ ํ๊ณ ์ ํ๋ค๋ฉด dddgen
ํ์ผ์ repoPath, repoImplPath, routePath๋ฅผ ์์ ํด ์ฃผ๋ฉด ๋๋ค.