代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。