瀏覽代碼

ticket.Message

- add more boilerplate code
Alexey Kim 1 年之前
父節點
當前提交
7c3b96f552
共有 1 個文件被更改,包括 24 次插入1 次删除
  1. 24 1
      ticket.go

+ 24 - 1
ticket.go

@@ -31,6 +31,27 @@ func (t *Ticket) Marshal() ([]byte, error) {
 	return protojson.Marshal(t)
 }
 
+func (t *Ticket) AddMessage(m *Message) error {
+	if m == nil {
+		return fmt.Errorf("illegal argument: Message must not be a nil")
+	}
+
+	if m.TicketId == "" {
+		m.TicketId = t.Id
+	}
+
+	if m.Id == "" {
+		m.Id = uuid.NewString()
+	}
+
+	if m.Date == 0 {
+		m.Date = time.Now().UnixMilli()
+	}
+
+	t.Thread = append(t.Thread, m)
+	return nil
+}
+
 func (t *Ticket) AddGPTResponseMessage(src *openai.ChatCompletionChoice) (*Message, error) {
 	var (
 		message = &Message{
@@ -49,7 +70,9 @@ func (t *Ticket) AddGPTResponseMessage(src *openai.ChatCompletionChoice) (*Messa
 	}
 
 	message.Raw = string(buf)
-	t.Thread = append(t.Thread, message)
+	if err = t.AddMessage(message); err != nil {
+		return nil, err
+	}
 
 	return message, nil
 }