package system

import "time"

// ExportTemplateInfo 导出模板信息
type ExportTemplateInfo struct {
	ID           uint                      `json:"ID"`
	Name         string                    `json:"name"`
	TableName    string                    `json:"tableName"`
	TemplateID   string                    `json:"templateID"`
	TemplateInfo string                    `json:"templateInfo"`
	Limit        int                       `json:"limit"`
	Order        string                    `json:"order"`
	Conditions   []ExportTemplateCondition `json:"conditions,omitempty"`
	JoinTemplate []ExportTemplateJoin      `json:"joinTemplate,omitempty"`
	CreatedAt    time.Time                 `json:"createdAt"`
}

// ExportTemplateCondition 导出模板条件
type ExportTemplateCondition struct {
	ID       uint   `json:"ID"`
	Column   string `json:"column"`
	Operator string `json:"operator"`
	From     string `json:"from"`
}

// ExportTemplateJoin 导出模板关联
type ExportTemplateJoin struct {
	ID        uint   `json:"ID"`
	TableName string `json:"tableName"`
	JoinType  string `json:"joinType"`
	On        string `json:"on"`
}

// CreateExportTemplateRequest 创建导出模板请求
type CreateExportTemplateRequest struct {
	Name         string                    `json:"name" binding:"required"`
	TableName    string                    `json:"tableName" binding:"required"`
	TemplateID   string                    `json:"templateID"`
	TemplateInfo string                    `json:"templateInfo"`
	Limit        int                       `json:"limit"`
	Order        string                    `json:"order"`
	Conditions   []ExportTemplateCondition `json:"conditions,omitempty"`
	JoinTemplate []ExportTemplateJoin      `json:"joinTemplate,omitempty"`
}

// UpdateExportTemplateRequest 更新导出模板请求
type UpdateExportTemplateRequest struct {
	ID           uint                      `json:"ID" binding:"required"`
	Name         string                    `json:"name"`
	TableName    string                    `json:"tableName"`
	TemplateID   string                    `json:"templateID"`
	TemplateInfo string                    `json:"templateInfo"`
	Limit        int                       `json:"limit"`
	Order        string                    `json:"order"`
	Conditions   []ExportTemplateCondition `json:"conditions,omitempty"`
	JoinTemplate []ExportTemplateJoin      `json:"joinTemplate,omitempty"`
}

// GetExportTemplateListRequest 获取导出模板列表请求
type GetExportTemplateListRequest struct {
	Page           int        `json:"page" form:"page"`
	PageSize       int        `json:"pageSize" form:"pageSize"`
	Name           string     `json:"name" form:"name"`
	TableName      string     `json:"tableName" form:"tableName"`
	StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"`
	EndCreatedAt   *time.Time `json:"endCreatedAt" form:"endCreatedAt"`
}

// GetExportTemplateListReply 获取导出模板列表响应
type GetExportTemplateListReply struct {
	List     []ExportTemplateInfo `json:"list"`
	Total    int64                `json:"total"`
	Page     int                  `json:"page"`
	PageSize int                  `json:"pageSize"`
}

// ExportExcelRequest 导出Excel请求
type ExportExcelRequest struct {
	TemplateID string                 `json:"templateID" form:"templateID" binding:"required"`
	Values     map[string]interface{} `json:"values" form:"values"`
}
