Skip to content

refactor: ํŒจํ„ด ๋ถ„์„ ์ฝ”๋ฉ˜ํŠธ๋„ ํ•™์Šต ํ˜„ํ™ฉ์ฒ˜๋Ÿผ upsert(PATCH) ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ย #23

@sounmind

Description

@sounmind

๋ฐฐ๊ฒฝ

ํ˜„์žฌ ํŒจํ„ด ๋ถ„์„ ์ฝ”๋ฉ˜ํŠธ (handlers/tag-patterns.js)๋Š” ๋งค push๋งˆ๋‹ค
๊ธฐ์กด ๋ด‡ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ „๋ถ€ DELETEํ•œ ๋’ค ์ƒˆ๋กœ POSTํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐฑ์‹ ๋จ.

๋ฐ˜๋ฉด ํ•™์Šต ํ˜„ํ™ฉ ์ฝ”๋ฉ˜ํŠธ (utils/learningComment.js upsertLearningStatusComment)๋Š”
marker๋กœ ๊ธฐ์กด ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ฐพ์•„ PATCH๋กœ body๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋Š” upsert ํŒจํ„ด์„ ์‚ฌ์šฉ ์ค‘.

#20 ์—์„œ synchronize ์ตœ์ ํ™”๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด์„œ,
๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์— ํ•œ์ •ํ•ด์„œ๋Š” "๊ธฐ์กด ์ฝ”๋ฉ˜ํŠธ๋ฅผ edit"ํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ์ž์—ฐ์Šค๋Ÿฌ์›€.

์ œ์•ˆ

๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์˜ ํŒจํ„ด ๋ถ„์„ ์ฝ”๋ฉ˜ํŠธ๋ฅผ delete + repost โ†’ PATCH (edit in place) ๋กœ ์ „ํ™˜.

  • PR review ์ฝ”๋ฉ˜ํŠธ๋„ PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}๋กœ body ์ˆ˜์ • ๊ฐ€๋Šฅ
  • ํŒŒ์ผ๋ช…(comment.path)์„ ํ‚ค๋กœ ๊ธฐ์กด ๋ด‡ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ฐพ์•„ upsert
    • ์กด์žฌํ•˜๋ฉด PATCH body
    • ์—†์œผ๋ฉด POST (์‹ ๊ทœ ํŒŒ์ผ)

๊ธฐ๋Œ€ ํšจ๊ณผ

  • delete โ†’ create๋กœ ์ธํ•œ ์•Œ๋ฆผ/์›นํ›… ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ
  • ํ•™์Šต ํ˜„ํ™ฉ ์ฝ”๋ฉ˜ํŠธ์™€ ์ผ๊ด€๋œ upsert ํŒจํ„ด์œผ๋กœ ์ฝ”๋“œ ๋‹จ์ˆœํ™”
  • ์ฝ”๋ฉ˜ํŠธ ID๊ฐ€ push ๊ฐ„์— ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€๋จ (์˜๊ตฌ ๋งํฌ ๊ฐ€๋Šฅ)

์ฐธ๊ณ 

Trade-off (์ž‘์€ ์ด์Šˆ, blocker ์•„๋‹˜)

PATCH๋Š” commit_id๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์›๋ณธ ์ปค๋ฐ‹์ด history์—์„œ ๋ฉ€์–ด์ง€๋ฉด
GitHub UI๊ฐ€ "Outdated" ๋ฐฐ์ง€๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ์Œ. subject_type: "file" ์ฝ”๋ฉ˜ํŠธ๋Š”
๋ผ์ธ ์ฝ”๋ฉ˜ํŠธ๋ณด๋‹ค ๋œ aggressiveํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” ํŽธ์ด๋ผ ์‹ค์‚ฌ์šฉ์ƒ ํฐ ๋ฌธ์ œ ์—†์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions