๊น๋ํ | Style ํํธ ๊ตฌํ, ์ด๋ฏธ์ง ์ ๋ก๋ ๊ตฌํ, ๋ฐฐํฌ ์งํ |
---|---|
์ค์ฐ์ง | curation ํํธ ๊ตฌํ, Cloudinary ์ด๋ฏธ์ง ์ ๋ก๋ ๊ตฌํ |
๋ฐ๋ค์ฌ | comment ํํธ ๊ตฌํ, ์ค๊ฐ ๋ฐํ ์งํ |
ํ๋ก ํธ์์ ์ธ๊ธฐ ํ๊ทธ ๋ชฉ๋ก์ ํ๊ทธ์ ์ง์ ์ง์ ํ ๊ฒ์ ๊ธฐ์ค ๋ฐ ๊ฒ์ ํค์๋์ ์กฐํฉ์ผ๋ก ํ๋ฒ์ ์ฌ๋ฌ ์กฐ๊ฑด์ผ๋ก ํ๋ฒ์ ๊ฒ์ ์์ฒญ์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
// ํ๋ก ํธ -> ๋ฐฑ์๋ ๋ชฉ๋ก ์กฐํ ์์ฒญ url
// ํค์๋ ๊ฒ์๋ง ํ๋ ๊ฒฝ์ฐ
GET /styles?sortBy=latest&searchBy=title&keyword=%E3%85%87%E3%84%B4%E3%84%B4%E3%85%87&tag=&page=1&pageSize=12
// ํค์๋ ๊ฒ์, ํ๊ทธ ๊ฒ์ ๋์์ ํ๋ ๊ฒฝ์ฐ
GET /styles?sortBy=latest&searchBy=title&keyword=%E3%85%87%E3%84%B4%E3%84%B4%E3%85%87&tag=test3&page=1&pageSize=12
๋ช ์ธ์๋ฅผ ๋ณด๊ณ ๊ทธ๋ฅ ์ดํดํด์ ๊ตฌํํ ์ฝ๋์์๋ ํ๊ทธ๋ชฉ๋ก์ผ๋ก ๊ฒ์ํ๋ ค๋ฉด ๊ฒ์ ์กฐ๊ฑด์ ํ๊ทธ๋ง ๋ฃ๊ณ ์๋๊ฒฝ์ฐ์ ๊ฒ์ ์กฐ๊ฑด์ ๊ฒ์ ๊ธฐ์ค๊ณผ ํค์๋๋ฅผ ๋ฃ๋๋ก ๊ตฌํํ๋ ํ๋ก ํธ ์ฝ๋์ ์ฐ๊ฒฐ ์ ์ค๋ฅ ๋ฐ์
์ด์ ์ฌํญ ๋ถ์ ํ ๋ฌธ์ ํด๊ฒฐ
ํด๊ฒฐ๋ ์ฝ๋
// db ์คํค๋ง์ ํ๋ก ํธ์ ์์ฒญ ์์ฑ ์ด๋ฆ์ด ๋ค๋ฅธ ๋ฌธ์ ํด๊ฒฐ
const searchByKeyword = searchBy === 'tag' ? 'tags' : searchBy;
const where = {
AND: [ // ํ๊ทธ์ ํค์๋ ๋ชจ๋ ๊ณ ๋ คํ์ฌ ๊ฒ์
tag ? { tags: { has: tag } } : undefined,
keyword
? { // searchBy๋ก tag๊ฐ ๋ค์ด์ค๋ ๊ฒฝ์ฐ has๋ก ๊ฒ์, ๊ทธ ์ธ์ contains
[searchByKeyword]:
searchByKeyword === 'tags'
? { has: keyword }
: { contains: keyword },
}
: undefined,
].filter(Boolean), // ๊ฒ์ ๊ธฐ์ค์ด undefined๋ฉด ์ญ์
};