veza/veza-backend-api/internal/models/chat_message.go

29 lines
1.4 KiB
Go

package models
import (
"time"
"github.com/google/uuid"
)
type ChatMessage struct {
ID uuid.UUID `gorm:"type:uuid;primaryKey" json:"id"`
ConversationID uuid.UUID `gorm:"column:room_id;type:uuid;not null" json:"conversation_id"`
SenderID uuid.UUID `gorm:"type:uuid;not null" json:"sender_id"`
Content string `gorm:"type:text;not null" json:"content"`
MessageType string `gorm:"type:varchar(50);not null" json:"message_type"` // text, image, audio, etc.
ParentMessageID *uuid.UUID `gorm:"type:uuid" json:"parent_message_id,omitempty"`
ReplyToID *uuid.UUID `gorm:"type:uuid" json:"reply_to_id,omitempty"`
IsPinned bool `gorm:"default:false;not null" json:"is_pinned"`
IsEdited bool `gorm:"default:false;not null" json:"is_edited"`
IsDeleted bool `gorm:"default:false;not null" json:"is_deleted"`
EditedAt *time.Time `json:"edited_at,omitempty"`
Status string `gorm:"type:varchar(50);not null" json:"status"` // sent, delivered, read
Metadata []byte `gorm:"type:jsonb" json:"metadata,omitempty"` // JSONB for additional data
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
}
func (ChatMessage) TableName() string {
return "messages" // Rust uses 'messages' table
}