Skip to content

[Feat] ์กฐํšŒ ๋ฐ ๊ฒ€์ƒ‰ API ๊ตฌํ˜„ย #42

@Uzrt

Description

@Uzrt

#๏ธโƒฃ ์š”์ฒญ ์œ ํ˜•

ํ•ด๋‹น๋˜๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • ๊ธฐ์กด ๊ธฐ๋Šฅ ๊ฐœ์„ 
  • ์„ฑ๋Šฅ ๊ฐœ์„ 

#๏ธโƒฃ ๊ธฐ๋Šฅ ๊ฐœ์š” (Summary)

๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ค๋ช… : ๋ฌด์—‡์„, ์™œ ๋งŒ๋“œ๋‚˜์š”?

  • ๊ธฐ๋Šฅ(What): ์ถ•์ œ ์ถ”์ฒœ/๊ฒ€์ƒ‰ ๋ฐ ์ƒ์„ธ ์ •๋ณด(ํƒ€์ž„ํ…Œ์ด๋ธ” ํฌํ•จ) ์กฐํšŒ API ๊ตฌํ˜„
  • ์ด์œ (Why): ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ ์งœ์™€ ์กฐ๊ฑด์— ๋งž๋Š” ์ถ•์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ , ํŠน์ • ์ถ•์ œ์˜ ์„ธ๋ถ€ ์ผ์ •์„ ํ™•์ธํ•˜์—ฌ ๋ฐฉ๋ฌธ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ์ถ•์ œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์„ฑ๋Šฅ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

#๏ธโƒฃ ๊ธฐ์ˆ ์  ์„ค๊ณ„

ํ•ต์‹ฌ ๋กœ์ง์ด๋‚˜ DB ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š” (ํ•„์š”ํ•˜๋‹ค๋ฉด ์ƒ๋žต ๊ฐ€๋Šฅ)

  • ๋Œ€์ƒ API:
    • GET /festivals/recommendations
    • GET /festivals
    • GET /festivals/{festivalId}
    • GET /festivals/{festivalId}/timetables
  • ํ•ต์‹ฌ ๋กœ์ง (Key Logic):
    • Cursor-based Paging: OFFSET ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์ง€๋ง‰ ์กฐํšŒ๋œ festivalId๋ฅผ ์ปค์„œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ ์ตœ์ ํ™”.
    • Join ์ „ ํ•„ํ„ฐ๋ง (Inline View): ์ถ•์ œ ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ Join ์ „ ์ธ๋ผ์ธ ๋ทฐ(์„œ๋ธŒ์ฟผ๋ฆฌ)๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์— ๋งž๋Š” ID๋ฅผ ์šฐ์„  ์ถ”์ถœํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜ ์ตœ์†Œํ™”.
    • ๋™์  ํ•„ํ„ฐ๋ง: ๋‚ ์งœ๋ณ„ ์ถ”์ฒœ ๋ฐ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ์‹œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ๋™์  WHERE ์ ˆ ๊ตฌ์„ฑ.

#๏ธโƒฃ ์ž‘์—… ์ƒ์„ธ ๋‚ด์šฉ (To-Do)

  • GET /festivals/recommendations: ์กฐ๊ฑด/๋‚ ์งœ๋ณ„ ์ถ”์ฒœ ์ถ•์ œ 5๊ฐœ ์กฐํšŒ ๋กœ์ง ๊ตฌํ˜„
  • GET /festivals: ์ปค์„œ ํŽ˜์ด์ง•์ด ์ ์šฉ๋œ ์ถ•์ œ ํ†ตํ•ฉ ๊ฒ€์ƒ‰ API ๊ตฌํ˜„
  • GET /festivals/{festivalId}: ์ถ•์ œ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ API ๊ตฌํ˜„
  • GET /festivals/{festivalId}/timetables: ์ถ•์ œ๋ณ„ ํƒ€์ž„ํ…Œ์ด๋ธ”(์ผ์ •) ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๐Ÿ“Ž ์ฐธ๊ณ ํ• ๋งŒํ•œ ์ž๋ฃŒ (Optional)

์Šคํฌ๋ฆฐ์ƒท, ๊ด€๋ จ ๋ฌธ์„œ, ์ฝ”๋“œ ์˜ˆ์‹œ ๋“ฑ

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions