Implement produce service
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package produce
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/davidlick/supermarket-api/internal/interfaces"
|
||||
"github.com/davidlick/supermarket-api/pkg/ramdb"
|
||||
)
|
||||
|
||||
type service struct {
|
||||
db interfaces.RamDB
|
||||
}
|
||||
|
||||
// NewService creates a new produce service for storing produce items.
|
||||
func NewService(db interfaces.RamDB) *service {
|
||||
return &service{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
// Add adds the Items to the database.
|
||||
func (s *service) Add(items []Item) error {
|
||||
for _, item := range items {
|
||||
rec, err := ramdb.NewRecord(strings.ToLower(item.Code), KeyProduceCode, item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = s.db.Insert(rec)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remove removes the item from the database.
|
||||
func (s *service) Remove(item Item) error {
|
||||
rec, err := ramdb.NewRecord(strings.ToLower(item.Code), KeyProduceCode, item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.db.Delete(rec)
|
||||
}
|
||||
|
||||
// Get fetches the produceCode from the database.
|
||||
func (s *service) Get(produceCode string) (item Item, err error) {
|
||||
rec, err := s.db.Get(KeyProduceCode, strings.ToLower(produceCode))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = rec.Deserialize(&item)
|
||||
return
|
||||
}
|
||||
|
||||
// All returns all produce items stored in the database.
|
||||
func (s *service) All() (items []Item, err error) {
|
||||
recs, err := s.db.Select(KeyProduceCode)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, rec := range recs {
|
||||
var item Item
|
||||
err = rec.Deserialize(&item)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
items = append(items, item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user