v2_paging - 100-hours-a-week/KTB4-8th-BE GitHub Wiki

ํŽ˜์ด์ง•

์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•

  1. cursor๋ฅผ ๋‹ด์•„ ์กฐํšŒ ์š”์ฒญ (๊ธฐ๋ณธ size ์กด์žฌ, ex: 50)

    • ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€ ํ•„์š” (ex: ์ƒ์„ฑ ์‹œ๊ฐ„(create_date))
  2. select ... 
    from ... 
    where (create_date, id) < (:cursorCreateDate, :cursorId)
    order by create_date desc, id desc
    limit 51
    
    • ํŠœํ”Œ ๋น„๊ต

    • ๋ณตํ•ฉ ์ธ๋ฑ์Šค

    • ์‘๋‹ต์— nextCursor ์ •๋ณด๋ฅผ ์ค˜์•ผ ํ•˜๋ฏ€๋กœ size + 1๋งŒํผ ์กฐํšŒ

  3. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

    • ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๊ฐ€ size๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ๋” ์ž‘๋‹ค๋ฉด ๋” ์กฐํšŒํ•  ์ˆ˜ ์—†์—ˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ, hasNext๋Š” false๊ฐ€ ๋จ

    • ์• ์‹œ๋‹น์ดˆ size + 1๋งŒํผ ์กฐํšŒํ–ˆ์œผ๋ฏ€๋กœ ๋ฐ˜ํ™˜ํ•  ๊ฒฐ๊ณผ์—์„œ ๋งˆ์ง€๋ง‰ ๋ ˆ์ฝ”๋“œ๋Š” ๋น ์ ธ์•ผ ํ•จ

    • ๊ฒฐ๊ณผ๋ฅผ DTO๋กœ ์‹ธ๋˜ ๋ง๋˜ ํ•˜๊ธฐ