forked from goadesign/examples
/
sommelier.go
29 lines (24 loc) · 845 Bytes
/
sommelier.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
package cellar
import (
"context"
"log"
sommelier "github.com/ikawaha/examples/cellar/gen/sommelier"
)
// sommelier service example implementation.
// The example methods log the requests and return zero values.
type sommelierSvc struct {
logger *log.Logger
}
// NewSommelier returns the sommelier service implementation.
func NewSommelier(logger *log.Logger) sommelier.Service {
return &sommelierSvc{logger}
}
// Pick implements pick.
func (s *sommelierSvc) Pick(ctx context.Context, p *sommelier.Criteria) (res sommelier.StoredBottleCollection, err error) {
if p.Name == nil && len(p.Varietal) == 0 && p.Winery == nil {
return nil, sommelier.NoCriteria("must specify a name or one or more varietals or a winery")
}
// TBD: implement lookup return sommeliner.NoMatch if empty
s.logger.Print("sommelier.pick")
return res, nil
}