Files
gochat/internal/model/conversation_label.go
T
2026-06-04 15:44:48 +08:00

23 lines
1.0 KiB
Go

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" }