/
onelogic.go
54 lines (49 loc) · 1.56 KB
/
onelogic.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
package logic
import (
"context"
"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/gwerror"
"github.com/wesleywu/ri-service-provider/gworm"
"github.com/wesleywu/ri-service-provider/provider/internal/service/video_collection/mapping"
"go.mongodb.org/mongo-driver/mongo"
)
type OneLogic struct {
metadata *appinfo.AppMetadata
helper *log.Helper
collection *mongo.Collection
}
func NewOneLogic(metadata *appinfo.AppMetadata, helper *log.Helper, collection *mongo.Collection) *OneLogic {
return &OneLogic{
metadata: metadata,
helper: helper,
collection: collection,
}
}
func (s *OneLogic) One(ctx context.Context, req *p.VideoCollectionOneReq) (*p.VideoCollectionOneRes, error) {
var (
filterRequest gworm.FilterRequest
pageRequest gworm.PageRequest
singleResult *mongo.SingleResult
item *p.VideoCollectionItem
err error
)
filterRequest, err = gworm.ExtractFilters(ctx, req, mapping.VideoCollectionColumnMap)
pageRequest.AddSortByString(req.OrderBy)
singleResult = s.collection.FindOne(ctx, filterRequest.Filters, nil)
if singleResult.Err() != nil {
return nil, singleResult.Err()
}
item = (*p.VideoCollectionItem)(nil)
err = singleResult.Decode(&item)
if err != nil {
s.helper.WithContext(ctx).Error(err)
err = gwerror.WrapServiceErrorf(err, req, "获取单条数据记录失败")
return nil, err
}
return &p.VideoCollectionOneRes{
Found: true,
Item: item,
}, nil
}