package dto

import "time"

type ExportConditionRequest struct {
	ID         uint      `json:"ID"`
	CreatedAt  time.Time `json:"CreatedAt"`
	UpdatedAt  time.Time `json:"UpdatedAt"`
	TemplateID string    `json:"templateID"`
	From       string    `json:"from"`
	Column     string    `json:"column"`
	Operator   string    `json:"operator"`
}
type ExportJoinRequest struct {
	ID         uint      `json:"ID"`
	CreatedAt  time.Time `json:"CreatedAt"`
	UpdatedAt  time.Time `json:"UpdatedAt"`
	TemplateID string    `json:"templateID"`
	Join       string    `json:"joins"`
	Table      string    `json:"table"`
	On         string    `json:"on"`
}
type ExportTemplateRequest struct {
	ID           uint                     `json:"ID"`
	DBName       string                   `json:"dbName"`
	Name         string                   `json:"name"`
	TableName    string                   `json:"tableName"`
	TemplateID   string                   `json:"templateID"`
	TemplateInfo string                   `json:"templateInfo"`
	SQL          string                   `json:"sql"`
	ImportSQL    string                   `json:"importSql"`
	Limit        *int                     `json:"limit"`
	Order        string                   `json:"order"`
	Conditions   []ExportConditionRequest `json:"conditions"`
	Joins        []ExportJoinRequest      `json:"joinTemplate"`
}

type ExportConditionResponse struct {
	ID         uint      `json:"ID"`
	CreatedAt  time.Time `json:"CreatedAt"`
	UpdatedAt  time.Time `json:"UpdatedAt"`
	TemplateID string    `json:"templateID"`
	From       string    `json:"from"`
	Column     string    `json:"column"`
	Operator   string    `json:"operator"`
}

type ExportJoinResponse struct {
	ID         uint      `json:"ID"`
	CreatedAt  time.Time `json:"CreatedAt"`
	UpdatedAt  time.Time `json:"UpdatedAt"`
	TemplateID string    `json:"templateID"`
	Join       string    `json:"joins"`
	Table      string    `json:"table"`
	On         string    `json:"on"`
}

type ExportTemplateResponse struct {
	ID        uint      `json:"ID"`
	CreatedAt time.Time `json:"CreatedAt"`
	UpdatedAt time.Time `json:"UpdatedAt"`
	// The compatible embedded gorm.DeletedAt field is json:"-".
	DeletedAt    any                       `json:"-"`
	DBName       string                    `json:"dbName"`
	Name         string                    `json:"name"`
	TableName    string                    `json:"tableName"`
	TemplateID   string                    `json:"templateID"`
	TemplateInfo string                    `json:"templateInfo"`
	SQL          string                    `json:"sql"`
	ImportSQL    string                    `json:"importSql"`
	Limit        *int                      `json:"limit"`
	Order        string                    `json:"order"`
	Conditions   []ExportConditionResponse `json:"conditions"`
	Joins        []ExportJoinResponse      `json:"joinTemplate"`
}
