package model import ( "time" ) // ConversationLabel represents a label/tag applied to a conversation. // Reference: Chatwoot tag join model + P2B M3 spec // This is the join table between Conversation and Tag, replacing the // old comma-separated Labels string field on Conversation. type ConversationLabel struct { ID uint `gorm:"primaryKey;autoIncrement" json:"id"` ConversationID uint `gorm:"not null;uniqueIndex:idx_conv_label_tag;index" json:"conversation_id"` TagID uint `gorm:"not null;uniqueIndex:idx_conv_label_tag;index" json:"tag_id"` AccountID uint `gorm:"not null;index" json:"account_id"` CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` Conversation Conversation `gorm:"foreignKey:ConversationID" json:"conversation,omitempty"` Tag Tag `gorm:"foreignKey:TagID" json:"tag,omitempty"` Account Account `gorm:"foreignKey:AccountID" json:"account,omitempty"` } func (ConversationLabel) TableName() string { return "conversation_labels" }