Jelajahi Sumber

feat(session): add location info fields to timeline events

bob.yuxinyang 1 bulan lalu
induk
melakukan
4b8c1cae08
2 mengubah file dengan 32 tambahan dan 14 penghapusan
  1. 6 0
      handlers/session_handler.go
  2. 26 14
      models/session.go

+ 6 - 0
handlers/session_handler.go

@@ -122,6 +122,10 @@ func (h *SessionHandler) CreateSession(c *gin.Context) {
 			event.LocalFilePath = ""
 			event.VoiceStartOffsetMs = input.VoiceStartOffsetMs
 			event.VoiceEndOffsetMs = input.VoiceEndOffsetMs
+			event.LocationName = input.LocationName
+			event.LocationAddress = input.LocationAddress
+			event.Latitude = input.Latitude
+			event.Longitude = input.Longitude
 			if event.ID == "" {
 				if err := tx.Create(&event).Error; err != nil {
 					return err
@@ -226,6 +230,8 @@ func (h *SessionHandler) AddEventToSession(c *gin.Context) {
 		RelativeTimeMs: req.RelativeTimeMs, EventType: req.EventType,
 		TextContent: req.TextContent, VoiceStartOffsetMs: req.VoiceStartOffsetMs,
 		VoiceEndOffsetMs: req.VoiceEndOffsetMs,
+		LocationName:     req.LocationName, LocationAddress: req.LocationAddress,
+		Latitude: req.Latitude, Longitude: req.Longitude,
 	}
 	if err := h.DB.Where("session_id = ? AND client_id = ?", session.ID, req.ClientID).
 		Assign(event).FirstOrCreate(&event).Error; err != nil {

+ 26 - 14
models/session.go

@@ -36,6 +36,10 @@ type TimelineEvent struct {
 	LocalFilePath      string    `gorm:"size:500" json:"localFilePath,omitempty"`
 	VoiceStartOffsetMs *int64    `json:"voiceStartOffsetMs,omitempty"`
 	VoiceEndOffsetMs   *int64    `json:"voiceEndOffsetMs,omitempty"`
+	LocationName       string    `gorm:"size:200" json:"locationName,omitempty"`
+	LocationAddress    string    `gorm:"size:500" json:"locationAddress,omitempty"`
+	Latitude           *float64  `json:"latitude,omitempty"`
+	Longitude          *float64  `json:"longitude,omitempty"`
 	CreatedAt          time.Time `gorm:"autoCreateTime" json:"createdAt"`
 }
 
@@ -68,21 +72,29 @@ type CreateSessionRequest struct {
 }
 
 type CreateEventSubSchema struct {
-	ClientID           string `json:"clientId" binding:"required"`
-	RelativeTimeMs     int64  `json:"relativeTimeMs"`
-	EventType          string `json:"eventType" binding:"required"`
-	TextContent        string `json:"textContent"`
-	LocalFilePath      string `json:"localFilePath"`
-	VoiceStartOffsetMs *int64 `json:"voiceStartOffsetMs"`
-	VoiceEndOffsetMs   *int64 `json:"voiceEndOffsetMs"`
+	ClientID           string   `json:"clientId" binding:"required"`
+	RelativeTimeMs     int64    `json:"relativeTimeMs"`
+	EventType          string   `json:"eventType" binding:"required"`
+	TextContent        string   `json:"textContent"`
+	LocalFilePath      string   `json:"localFilePath"`
+	VoiceStartOffsetMs *int64   `json:"voiceStartOffsetMs"`
+	VoiceEndOffsetMs   *int64   `json:"voiceEndOffsetMs"`
+	LocationName       string   `json:"locationName"`
+	LocationAddress    string   `json:"locationAddress"`
+	Latitude           *float64 `json:"latitude"`
+	Longitude          *float64 `json:"longitude"`
 }
 
 type CreateEventRequest struct {
-	ClientID           string `json:"clientId" binding:"required"`
-	RelativeTimeMs     int64  `json:"relativeTimeMs"`
-	EventType          string `json:"eventType" binding:"required"`
-	TextContent        string `json:"textContent"`
-	LocalFilePath      string `json:"localFilePath"`
-	VoiceStartOffsetMs *int64 `json:"voiceStartOffsetMs"`
-	VoiceEndOffsetMs   *int64 `json:"voiceEndOffsetMs"`
+	ClientID           string   `json:"clientId" binding:"required"`
+	RelativeTimeMs     int64    `json:"relativeTimeMs"`
+	EventType          string   `json:"eventType" binding:"required"`
+	TextContent        string   `json:"textContent"`
+	LocalFilePath      string   `json:"localFilePath"`
+	VoiceStartOffsetMs *int64   `json:"voiceStartOffsetMs"`
+	VoiceEndOffsetMs   *int64   `json:"voiceEndOffsetMs"`
+	LocationName       string   `json:"locationName"`
+	LocationAddress    string   `json:"locationAddress"`
+	Latitude           *float64 `json:"latitude"`
+	Longitude          *float64 `json:"longitude"`
 }