7 Star 24 Fork 30

go-course / go8

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
host.go 1.32 KB
一键复制 编辑 原始数据 按行查看 历史
Mr.Yu 提交于 2022-11-05 18:05 . 补充host和resource api
package impl
import (
"context"
"gitee.com/go-course/go8/projects/devcloud/cmdb/apps/host"
"gitee.com/go-course/go8/projects/devcloud/cmdb/apps/resource"
)
func (s *service) CreateHost(ctx context.Context, req *host.Host) (*host.Host, error) {
ins := NewHost(req)
// 保持通用信息
rs, err := s.resource.SaveResource(ctx, req.Resource)
if err != nil {
return nil, err
}
req.Resource = rs
// 保持主机信息
err = s.db.WithContext(ctx).Create(ins).Error
if err != nil {
return nil, err
}
return req, nil
}
func (s *service) QueryHost(ctx context.Context, req *host.QueryHostRequest) (
*host.HostSet, error) {
// 1. 先查询Host信息
temp := NewHostSet()
query := s.db.WithContext(ctx).Model(&Host{})
if len(req.ResourceIds) > 0 {
query = query.Where("resource_id IN (?)", req.ResourceIds)
}
err := query.
Offset(int(req.Page.ComputeOffset())).
Limit(int(req.Page.PageSize)).
Scan(&temp.Items).
Error
if err != nil {
return nil, err
}
err = query.Count(&temp.Total).Error
if err != nil {
return nil, err
}
set := temp.HostSet()
// 2. 为这些Host补充 Resource信息
rReq := resource.NewQueryResourceRequest()
rReq.ResourceIds = req.ResourceIds
rs, err := s.resource.QueryResource(ctx, rReq)
if err != nil {
return nil, err
}
set.UpdateResource(rs.Items...)
return set, nil
}
Go
1
https://gitee.com/go-course/go8.git
git@gitee.com:go-course/go8.git
go-course
go8
go8
6a8978f41a84

搜索帮助

53164aa7 5694891 3bd8fe86 5694891