/
server_get_related.go
63 lines (55 loc) 路 1.38 KB
/
server_get_related.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
package orgimpl
import (
"context"
safeerr "github.com/leaq-ru/lib-safeerr"
"github.com/leaq-ru/org/org"
pbOrg "github.com/leaq-ru/proto/codegen/go/org"
"go.mongodb.org/mongo-driver/bson/primitive"
"time"
)
func (s *server) GetRelated(ctx context.Context, req *pbOrg.GetRelatedRequest) (res *pbOrg.GetResponse, err error) {
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
limit := uint32(20)
if req.GetOpts().GetLimit() > 100 {
err = safeerr.LimitOutOfRange
return
}
if req.GetOpts().GetLimit() != 0 {
limit = req.GetOpts().GetLimit()
}
var ids []org.ID
areaID, e := primitive.ObjectIDFromHex(req.GetAreaId())
if e == nil {
ids = append(ids, org.ID{
Val: areaID,
Kind: org.IDKind_areaID,
})
}
okvedID, e := primitive.ObjectIDFromHex(req.GetOkvedId())
if e == nil {
ids = append(ids, org.ID{
Val: okvedID,
Kind: org.IDKind_okvedID,
})
}
excludeOrgID, e := primitive.ObjectIDFromHex(req.GetExcludeOrgId())
if e == nil {
ids = append(ids, org.ID{
Val: excludeOrgID,
Kind: org.IDKind_excludeOrgID,
})
}
orgs, err := s.orgModel.GetByIDs(ctx, ids, false, req.GetOpts().GetSkip(), limit)
if err != nil {
s.logger.Error().Err(err).Send()
err = safeerr.InternalServerError
return
}
res, err = s.fetchShortOrgs(ctx, orgs)
if err != nil {
s.logger.Error().Err(err).Send()
err = safeerr.InternalServerError
}
return
}