28 lines
885 B
Go
28 lines
885 B
Go
package domain
|
|
|
|
import "time"
|
|
|
|
// MediaObjectID is a typed media object identifier with prefix "med_".
|
|
type MediaObjectID string
|
|
|
|
// MediaObject tracks a stored media file with ownership and metadata.
|
|
// The actual file is stored in GCS (production) or MemoryStore (dev).
|
|
// This record enables querying, soft deletes, and provenance tracking.
|
|
type MediaObject struct {
|
|
ID MediaObjectID
|
|
UserID UserID
|
|
Path string // Storage path (e.g., "media/usr_123/uuid/photo.png")
|
|
Filename string // Original filename
|
|
ContentType string
|
|
Size int64
|
|
GenerationJobID string // Non-empty if created by AI generation
|
|
DeletedAt *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
// IsDeleted returns true if the media object has been soft-deleted.
|
|
func (m *MediaObject) IsDeleted() bool {
|
|
return m.DeletedAt != nil
|
|
}
|