package ticket import ( "encoding/json" "fmt" "github.com/confluentinc/confluent-kafka-go/v2/kafka" "github.com/google/uuid" "github.com/kelindar/bitmap" "github.com/sashabaranov/go-openai" "strings" "time" ) func NewKafkaMessage(src *kafka.Message) *Message { m := &Message{ Id: uuid.NewString(), Provider: MessageProvider_EmailMessageProvider, Body: string(src.Value), Raw: string(src.Value), Date: src.Timestamp.UnixMilli(), Headers: []*Message_Header{}, } for _, h := range src.Headers { m.Headers = append(m.Headers, &Message_Header{ Key: h.Key, Value: string(h.Value), }) } return m } func NewGPTResponseMessage(tid string, src *openai.ChatCompletionChoice) (*Message, error) { tid = strings.TrimSpace(tid) if tid == "" { return nil, fmt.Errorf("illegal argument: ticket id must not be an emptry string") } raw, err := json.Marshal(src) if err != nil { return nil, err } return &Message{ Id: uuid.NewString(), TicketId: tid, Provider: MessageProvider_GptMessageProvider, Body: src.Message.Content, Date: time.Now().UnixMilli(), Raw: string(raw), }, nil } func (m *Message) SetBitmap(flags bitmap.Bitmap) { m.Flags = flags.ToBytes() } func (m *Message) GetBitmap() bitmap.Bitmap { return bitmap.FromBytes(m.Flags) }