/
server_get_by_okved_id.go
47 lines (41 loc) 路 1.06 KB
/
server_get_by_okved_id.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
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) GetByOkvedId(ctx context.Context, req *pbOrg.GetByOkvedIdRequest) (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()
}
id, err := primitive.ObjectIDFromHex(req.GetOkvedId())
if err != nil {
err = safeerr.InvalidParam("okvedId")
return
}
orgs, err := s.orgModel.GetByIDs(ctx, []org.ID{{
Val: id,
Kind: org.IDKind_okvedID,
}}, 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
}