diff --git a/internal/httpapi/handlers_calendar.go b/internal/httpapi/handlers_calendar.go index 91b38fe..ec8e72e 100644 --- a/internal/httpapi/handlers_calendar.go +++ b/internal/httpapi/handlers_calendar.go @@ -1,11 +1,13 @@ package httpapi import ( + "encoding/json" "net/http" "spin/internal/models" "github.com/go-chi/chi/v5" + "gorm.io/datatypes" ) // 개인 캘린더 — 각자 본인 이벤트만 보고 관리(분류: 프로젝트/기타/개인 + 색). @@ -47,6 +49,11 @@ func (s *Server) handlePatchEvent(w http.ResponseWriter, r *http.Request) { } delete(patch, "id") delete(patch, "ownerEmail") + if v, ok := patch["participants"]; ok { + if b, err := json.Marshal(v); err == nil { + patch["participants"] = datatypes.JSON(b) + } + } s.db.Model(&e).Updates(snakeKeys(patch)) s.db.First(&e, "id = ?", e.ID) writeJSON(w, http.StatusOK, e) diff --git a/internal/models/project.go b/internal/models/project.go index 19b8701..dd832c7 100644 --- a/internal/models/project.go +++ b/internal/models/project.go @@ -176,17 +176,18 @@ type ProjectMailState struct { // with a color. Owned by one member. type CalendarEvent struct { Base - OwnerEmail string `gorm:"index" json:"ownerEmail"` - Title string `json:"title"` - Category string `json:"category"` // project | etc | personal (분류 키) - ProjectID string `json:"projectId"` // category=project일 때 연결 - Color string `json:"color"` // 표시 색 - Start string `json:"start"` // YYYY-MM-DD - End string `json:"end"` // YYYY-MM-DD (빈값=하루) - AllDay bool `json:"allDay"` - Memo string `json:"memo"` - CreatedAt time.Time `json:"createdAt"` - UpdatedAt time.Time `json:"updatedAt"` + OwnerEmail string `gorm:"index" json:"ownerEmail"` + Title string `json:"title"` + Category string `json:"category"` // project | etc | personal (분류 키) + ProjectID string `json:"projectId"` // category=project일 때 연결 + Color string `json:"color"` // 표시 색 + Start string `json:"start"` // YYYY-MM-DD + End string `json:"end"` // YYYY-MM-DD (빈값=하루) + AllDay bool `json:"allDay"` + Memo string `json:"memo"` + Participants datatypes.JSONSlice[string] `json:"participants"` // 참여자 이메일 — 그들 캘린더에도 표시 + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` } func (m *CalendarEvent) BeforeCreate(*gorm.DB) error { m.ensureID(); return nil }