package schema

import "time"

// DatasetFile DatasetFile对象
type DatasetFile struct {
	RecordID    string    `json:"record_id"`    // 记录id
	Name        string    `json:"name"`         // 名称
	DatasetId   string    `json:"dataset_id"`   // 知识库id
	Url         string    `json:"url"`          // 文件地址
	Size        int64     `json:"size"`         // 文件大小
	MD5         string    `json:"md5"`          // md5
	Type        string    `json:"type"`         // 文件类型
	Enabled     bool      `json:"enabled"`      // 是否启用
	RagFileId   string    `json:"rag_file_id"`  // rag平台文件id
	ParseStatus int       `json:"parse_status"` // 解析状态 0 未解析 1 解析中 2 解析完成 3解析失败
	CreatorId   string    `json:"creator_id"`   // 创建人id
	CreatorName string    `json:"creator_name"` // 创建人姓名
	CreatedAt   time.Time `json:"created_at"`   // 创建时间
}

// DatasetFileQueryParam 查询条件
type DatasetFileQueryParam struct {
	DatasetId  string
	DatasetIds []string
	RecordIDs  []string
}

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

type DatasetFiles []*DatasetFile

// DatasetFileQueryResult DatasetFile对象查询结果
type DatasetFileQueryResult struct {
	Data       DatasetFiles
	PageResult *PaginationResult
}

type DeleteIds struct {
	Ids []string `json:"ids"`
}

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

func (a DatasetFiles) ToRagFileIds() []string {
	Ids := make([]string, len(a))
	for k, v := range a {
		Ids[k] = v.RagFileId
	}
	return Ids
}

// UpdateFileParam 文件上传参数
type UpdateFileParam struct {
	FileName  string // 文件名（含扩展名）
	FileData  []byte // 文件二进制内容
	FileSize  int64  // 文件大小（字节）
	DatasetId string // 知识库ID
	CreatorId string // 创建人ID
}
