-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
40 lines (33 loc) · 1.14 KB
/
server.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
package server
import (
"context"
"github.com/go-park-mail-ru/2023_1_PracticalDev/internal/pkg/errors"
"github.com/go-park-mail-ru/2023_1_PracticalDev/internal/shortener"
"github.com/go-park-mail-ru/2023_1_PracticalDev/internal/shortener/delivery/grpc/models"
proto "github.com/go-park-mail-ru/2023_1_PracticalDev/internal/shortener/delivery/grpc/proto"
)
type server struct {
proto.UnimplementedShortenerServer
rep shortener.ShortenerRepository
}
func NewShortenerServer(rep shortener.ShortenerRepository) proto.ShortenerServer {
return &server{
rep: rep,
}
}
func (s *server) Get(ctx context.Context, url *proto.StringMessage) (*proto.StringMessage, error) {
hash := models.NewStringMessage(url)
res, err := s.rep.Get(hash)
if err != nil {
return &proto.StringMessage{}, errors.GRPCWrapper(err)
}
return models.NewProtoStringMessage(res), err
}
func (s *server) Create(ctx context.Context, url *proto.StringMessage) (*proto.StringMessage, error) {
msg := models.NewStringMessage(url)
hash, err := s.rep.Create(msg)
if err != nil {
return &proto.StringMessage{}, errors.GRPCWrapper(err)
}
return models.NewProtoStringMessage(hash), err
}