spark-server/internal/module/message/entity/payload.go
zhr ae9a71034d feat: implement Spark IM V3 modular monolith
Add HTTP /v1 MVC, TCP send path, groups with server-side member-avatar collage, object-storage upload, and friends/favorites around the architecture-v3 layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 19:52:11 +08:00

72 lines
1.9 KiB
Go

package entity
// Text is a plain-text body. Stored as JSON bytes, never as a raw SQL string column.
type Text struct {
Body string `json:"body"`
}
// Image references an uploaded object. Bytes themselves are not stored in messages.content.
type Image struct {
Key string `json:"key"`
Mime string `json:"mime,omitempty"`
Width int `json:"w,omitempty"`
Height int `json:"h,omitempty"`
Size int64 `json:"size,omitempty"`
ThumbKey string `json:"thumb_key,omitempty"`
}
// Voice is an audio clip in object storage.
type Voice struct {
Key string `json:"key"`
DurationMS int `json:"duration_ms"`
Size int64 `json:"size,omitempty"`
}
// Video is a video clip in object storage.
type Video struct {
Key string `json:"key"`
Mime string `json:"mime,omitempty"`
Width int `json:"w,omitempty"`
Height int `json:"h,omitempty"`
DurationMS int `json:"duration_ms,omitempty"`
Size int64 `json:"size,omitempty"`
CoverKey string `json:"cover_key,omitempty"`
}
// Emoji is a sticker from a pack (not an image file in content).
type Emoji struct {
Pack string `json:"pack"`
ID string `json:"id"`
}
// GIF is an animated image in object storage.
type GIF struct {
Key string `json:"key"`
Mime string `json:"mime,omitempty"`
Width int `json:"w,omitempty"`
Height int `json:"h,omitempty"`
Size int64 `json:"size,omitempty"`
}
// File is a generic attachment in object storage.
type File struct {
Key string `json:"key"`
Name string `json:"name"`
Size int64 `json:"size"`
Mime string `json:"mime,omitempty"`
}
// Location is a geographic pin.
type Location struct {
Lat float64 `json:"lat"`
Lng float64 `json:"lng"`
Name string `json:"name,omitempty"`
Address string `json:"address,omitempty"`
}
// System is a server-generated notice (member join, recall hint, etc.).
type System struct {
Kind string `json:"kind"`
Body string `json:"body,omitempty"`
}