/
updatelogic.go
66 lines (61 loc) · 1.64 KB
/
updatelogic.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package logic
import (
"context"
apiErrors "github.com/castbox/go-guru/pkg/goguru/error"
"github.com/castbox/go-guru/pkg/util/appinfo"
"github.com/go-kratos/kratos/v2/log"
p "github.com/wesleywu/ri-service-provider/api/video_collection/v1"
"github.com/wesleywu/ri-service-provider/gworm"
"github.com/wesleywu/ri-service-provider/gwwrapper"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
type UpdateLogic struct {
metadata *appinfo.AppMetadata
helper *log.Helper
collection *mongo.Collection
}
func NewUpdateLogic(metadata *appinfo.AppMetadata, helper *log.Helper, collection *mongo.Collection) *UpdateLogic {
return &UpdateLogic{
metadata: metadata,
helper: helper,
collection: collection,
}
}
func (s *UpdateLogic) Update(ctx context.Context, req *p.VideoCollectionUpdateReq) (*p.VideoCollectionUpdateRes, error) {
var (
filterRequest gworm.FilterRequest
filters *bson.D
updateResult *mongo.UpdateResult
err error
)
if req.Id == "" {
return nil, apiErrors.ErrorIdValueMissing("主键ID字段的值为空")
}
filterRequest = gworm.FilterRequest{
PropertyFilters: []*gworm.PropertyFilter{
{
Property: "_id",
Value: req.Id,
},
},
}
filters, err = filterRequest.GetFilters()
if err != nil {
// todo parameter error
return nil, err
}
update := bson.D{
{
"$set", req,
},
}
updateResult, err = s.collection.UpdateOne(ctx, filters, update, nil)
if err != nil {
return nil, err
}
return &p.VideoCollectionUpdateRes{
Message: gwwrapper.WrapString("更新记录成功"),
RowsAffected: gwwrapper.WrapInt64(updateResult.ModifiedCount),
}, err
}