package system

import "time"

// VersionInfo 版本信息
type VersionInfo struct {
	ID          uint      `json:"ID"`
	VersionName string    `json:"versionName"`
	VersionCode string    `json:"versionCode"`
	Description string    `json:"description"`
	CreatedAt   time.Time `json:"createdAt"`
}

// CreateVersionRequest 创建版本请求
type CreateVersionRequest struct {
	VersionName string `json:"versionName" binding:"required"`
	VersionCode string `json:"versionCode" binding:"required"`
	Description string `json:"description"`
}

// UpdateVersionRequest 更新版本请求
type UpdateVersionRequest struct {
	ID          uint   `json:"ID" binding:"required"`
	VersionName string `json:"versionName"`
	VersionCode string `json:"versionCode"`
	Description string `json:"description"`
}

// GetVersionListRequest 获取版本列表请求
type GetVersionListRequest struct {
	Page           int         `json:"page" form:"page"`
	PageSize       int         `json:"pageSize" form:"pageSize"`
	VersionName    *string     `json:"versionName" form:"versionName"`
	VersionCode    *string     `json:"versionCode" form:"versionCode"`
	CreatedAtRange []time.Time `json:"createdAtRange" form:"createdAtRange[]"`
}

// GetVersionListReply 获取版本列表响应
type GetVersionListReply struct {
	List     []VersionInfo `json:"list"`
	Total    int64         `json:"total"`
	Page     int           `json:"page"`
	PageSize int           `json:"pageSize"`
}

// ExportVersionRequest 导出版本请求
type ExportVersionRequest struct {
	VersionName string `json:"versionName" binding:"required"`
	VersionCode string `json:"versionCode" binding:"required"`
	Description string `json:"description"`
	MenuIds     []uint `json:"menuIds"`
	ApiIds      []uint `json:"apiIds"`
	DictIds     []uint `json:"dictIds"`
}

// ImportVersionRequest 导入版本请求
type ImportVersionRequest struct {
	VersionInfo      ExportVersionInfo `json:"version" binding:"required"`
	ExportMenu       []BaseMenuInfo    `json:"menus"`
	ExportApi        []ApiInfo         `json:"apis"`
	ExportDictionary []DictionaryInfo  `json:"dictionaries"`
}

// ExportVersionInfo 导出版本信息
type ExportVersionInfo struct {
	Name        string `json:"name" binding:"required"`
	Code        string `json:"code" binding:"required"`
	Description string `json:"description"`
	ExportTime  string `json:"exportTime"`
}

// ExportVersionResponse 导出版本响应
type ExportVersionResponse struct {
	Version      ExportVersionInfo `json:"version"`
	Menus        []BaseMenuInfo    `json:"menus"`
	Apis         []ApiInfo         `json:"apis"`
	Dictionaries []DictionaryInfo  `json:"dictionaries"`
}
