1 Star 0 Fork 0

Tomsabay/restful-api-demo

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
host.go 2.69 KB
一键复制 编辑 原始数据 按行查看 历史
ZSF_MAC 提交于 2025-03-05 21:12 +08:00 . 添加cratehost的测试用例
package host
import (
"context"
"github.com/go-playground/validator/v10"
"github.com/google/uuid"
)
var validate = validator.New()
type Service interface {
//创建主机
CreateHost(context.Context, *Host) (*Host, error)
//查询主机列表(列表不展示详细信息)
QueryHost(context.Context, *QueryHostRequest) (*Hostset, error)
//查询主机详情
DescribeHost(context.Context, *QueryHostRequest) (*Host, error)
//删除主机,比如前端需要打印删除对象的详细信息
DeleteHost(context.Context, *UpdateHostRequest) (*Host, error)
//更新主机
UpdateHost(context.Context, *DeleteHostRequest) error
}
type Vender int
const (
PrivateIDC Vender = iota
Tencent
AliYun
HuaWei
)
func NewHost() *Host {
return &Host{
Resource: &Resource{},
Describe: &Describe{},
}
}
type Host struct {
*Resource //公共部分
*Describe //独有部分
}
// 校验数据合法性
func (h *Host) Validate() error {
return validate.Struct(h)
}
func (h *Host) InjectDefault() {
if h.Resource.Id == "" {
h.Resource.Id = uuid.New().String()
}
if h.Resource.Region == "" {
h.Resource.Region = "cn-beijing"
}
if h.Resource.Type == "" {
h.Resource.Type = "host"
}
if h.Describe.CPU == 0 {
h.Describe.CPU = 1
}
if h.Describe.Memory == 0 {
h.Describe.Memory = 1
}
}
// 方便扩展,避免修改接口
type Hostset struct {
Items []*Host `json:"items"`
Total int `json:"total"`
}
type Describe struct {
ResourceId string `json:"resource_id" ` //关联的资源ID
CPU int `json:"cpu" validate:"required"` //CPU核数
Memory int `json:"memory" validate:"required"` //内存大小
GPUAmount int `json:"gpu_amount"` //GPU数量
GPUSpec string `json:"gpu_spec"` //GPU规格
OSType string `json:"os_type"` //操作系统类型
OSName string `json:"os_name"`
SerialNumber string `json:"serial_number"` //序列号
}
type Resource struct {
Id string `json:"id" validate:"required"`
Vender Vender `json:"vender" `
Region string `json:"region" validate:"required"`
CreateAt int `json:"create_at"`
ExpireAt int `json:"expire_at"`
Type string `json:"type" validate:"required"`
Name string `json:"name" validate:"required"`
Description string `json:"description"`
Status string `json:"status"`
UpdateAt int `json:"update_at"`
SyncAt int `json:"sync_at"`
Account string `json:"account"`
PublicIP string `json:"public_ip"`
PrivateIP string `json:"private_ip"`
}
type QueryHostRequest struct{}
type UpdateHostRequest struct {
//只允许更新私有部分
*Describe
}
type DeleteHostRequest struct{}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tomsabay/restful-api-demo.git
git@gitee.com:tomsabay/restful-api-demo.git
tomsabay
restful-api-demo
restful-api-demo
5f2002318f3c

搜索帮助