60 lines
1.4 KiB
Go
Raw Normal View History

2025-03-02 17:41:18 +08:00
package impl
import (
"context"
"gitlab.com/go-course-project/go17/devcloud-mini/cmdb/apps/resource"
2025-03-09 10:05:28 +08:00
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
2025-03-02 17:41:18 +08:00
)
2025-03-09 10:05:28 +08:00
func (s *ResourceServiceImpl) Search(ctx context.Context, in *resource.SearchRequest) (*resource.ResourceSet, error) {
set := resource.NewResourceSet()
filter := bson.M{}
if in.Keywords != "" {
filter["name"] = bson.M{"$regex": in.Keywords, "$options": "im"}
}
if in.Type != nil {
filter["type"] = *in.Type
}
for k, v := range in.Tag {
filter[k] = v
}
// mongodb query
result, err := s.col.Find(ctx, filter, options.Find().SetLimit(in.PageSize).SetSkip(in.Skip()))
if err != nil {
return nil, err
}
for result.Next(ctx) {
res := &resource.Resource{}
if err := result.Decode(res); err != nil {
return nil, err
}
set.Items = append(set.Items, res)
}
return set, nil
2025-03-02 17:41:18 +08:00
}
func (s *ResourceServiceImpl) Save(ctx context.Context, in *resource.Resource) (*resource.Resource, error) {
if err := in.Validate(); err != nil {
return nil, err
}
// 保持数据, 需要从ioc里面获取一个mongodb实例
_, err := s.col.InsertOne(ctx, in)
if err != nil {
return nil, err
}
return in, nil
}
2025-03-09 10:05:28 +08:00
// $in
func (s *ResourceServiceImpl) DeleteResource(ctx context.Context, in *resource.DeleteResourceRequest) error {
_, err := s.col.DeleteMany(ctx, bson.M{"_id": bson.M{"$in": in.ResourceIds}})
return err
2025-03-02 17:41:18 +08:00
}