package schema

import "time"

// ChatSession ChatSession对象
type ChatSession struct {
	RecordID     string       `json:"record_id"`      // 记录id
	Name         string       `json:"name"`           // 名称
	AssistantId  string       `json:"assistant_id"`   // 助手id
	RagChatId    string       `json:"rag_chat_id"`    // rag_chat_id
	RagSessionId string       `json:"rag_session_id"` // rag_session_id
	Source       int          `json:"source"`         // 来源 1 h5 2 钉钉机器人
	CreatedAt    time.Time    `json:"created_at"`     // 创建时间
	CreatorId    string       `json:"creator_id"`     // 创建人id
	CreatorName  string       `json:"creator_name"`   // 创建人名称
	Messages     ChatMessages `json:"messages"`       // 聊天记录
}

// ChatSessionQueryParam 查询条件
type ChatSessionQueryParam struct {
	AssistantId string
	RecordIDs   []string
	UserId      string
	Source      int
}

// ChatSessionQueryOptions ChatSession对象查询可选参数项
type ChatSessionQueryOptions struct {
	PageParam *PaginationParam // 分页参数
}

type ChatSessions []*ChatSession

// ChatSessionQueryResult ChatSession对象查询结果
type ChatSessionQueryResult struct {
	Data       ChatSessions
	PageResult *PaginationResult
}

// FillCreator 填充创建者信息
func (a ChatSessions) FillCreator(users Users) {
	for _, v := range a {
		for _, u := range users {
			if v.CreatorId == u.RecordID {
				v.CreatorName = u.RealName
				continue
			}
		}
	}
}

// FillMessages 填充聊天记录
func (a ChatSessions) FillMessages(Messages ChatMessages) {
	for _, v := range a {
		for _, m := range Messages {
			if v.RecordID == m.SessionId {
				v.Messages = append(v.Messages, m)
				continue
			}
		}
	}
}
