package system

// ApiInfo API信息
type ApiInfo struct {
	ID          uint   `json:"ID"`
	Path        string `json:"path"`
	Description string `json:"description"`
	ApiGroup    string `json:"apiGroup"`
	Method      string `json:"method"`
}

// CreateApiRequest 创建API请求
type CreateApiRequest struct {
	Path        string `json:"path" binding:"required"`
	Description string `json:"description"`
	ApiGroup    string `json:"apiGroup"`
	Method      string `json:"method" binding:"required"`
}

// UpdateApiRequest 更新API请求
type UpdateApiRequest struct {
	ID          uint   `json:"ID" binding:"required"`
	Path        string `json:"path"`
	Description string `json:"description"`
	ApiGroup    string `json:"apiGroup"`
	Method      string `json:"method"`
}

// DeleteApiRequest 删除API请求
type DeleteApiRequest struct {
	ID uint `json:"ID" binding:"required"`
}

// DeleteApisByIdsRequest 批量删除API请求
type DeleteApisByIdsRequest struct {
	Ids []uint `json:"ids" binding:"required"`
}

// GetApiByIdRequest 根据ID获取API请求
type GetApiByIdRequest struct {
	ID uint `json:"ID" binding:"required"`
}

// GetApiByIdReply 根据ID获取API响应
type GetApiByIdReply struct {
	Api ApiInfo `json:"api"`
}

// GetApiListRequest 获取API列表请求
type GetApiListRequest struct {
	Page        int    `json:"page"`
	PageSize    int    `json:"pageSize"`
	Path        string `json:"path"`
	Description string `json:"description"`
	Method      string `json:"method"`
	ApiGroup    string `json:"apiGroup"`
	OrderKey    string `json:"orderKey"`
	Desc        bool   `json:"desc"`
}

// GetApiListReply 获取API列表响应
type GetApiListReply struct {
	List     []ApiInfo `json:"list"`
	Total    int64     `json:"total"`
	Page     int       `json:"page"`
	PageSize int       `json:"pageSize"`
}

// GetAllApisReply 获取所有API响应
type GetAllApisReply struct {
	Apis []ApiInfo `json:"apis"`
}

// GetApiGroupsReply 获取API分组响应
type GetApiGroupsReply struct {
	Groups      []string          `json:"groups"`
	ApiGroupMap map[string]string `json:"apiGroupMap"`
}

// SyncApiReply 同步API响应
type SyncApiReply struct {
	NewApis    []ApiInfo `json:"newApis"`
	DeleteApis []ApiInfo `json:"deleteApis"`
	IgnoreApis []ApiInfo `json:"ignoreApis"`
}

// IgnoreApiRequest 忽略API请求
type IgnoreApiRequest struct {
	Path   string `json:"path" binding:"required"`
	Method string `json:"method" binding:"required"`
	Flag   bool   `json:"flag"`
}

// EnterSyncApiRequest 确认同步API请求
type EnterSyncApiRequest struct {
	NewApis    []ApiInfo `json:"newApis"`
	DeleteApis []ApiInfo `json:"deleteApis"`
}
