Skip to content

Commit 2f6c8b1

Browse files
adds beverage and ingredient manager
1 parent b8802cb commit 2f6c8b1

File tree

5 files changed

+80
-0
lines changed

5 files changed

+80
-0
lines changed

‎appcontext/dependencies.go‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ package appcontext
33
import (
44
"nipun.io/brew_machine/repository"
55
local_repo "nipun.io/brew_machine/repository/local"
6+
"nipun.io/brew_machine/service"
7+
local_service "nipun.io/brew_machine/service/local"
68
)
79

810
type Instance struct {
911
BeverageRepository repository.BeverageRepository
1012
IngredientRepository repository.IngredientRepository
13+
BeverageManager service.BeverageManager
14+
IngredientManager service.IngredientManager
1115
}
1216

1317
var AppDependencies *Instance
@@ -23,3 +27,15 @@ func (dependencies *Instance) addBeverageRepository() {
2327
func (dependencies *Instance) addIngredientRepository() {
2428
dependencies.IngredientRepository = local_repo.NewInMemoryIngredientRepository()
2529
}
30+
31+
func (dependencies *Instance) addBeverageManager() {
32+
dependencies.BeverageManager = &local_service.LocalBeverageManager{
33+
BeverageRepository: dependencies.BeverageRepository,
34+
}
35+
}
36+
37+
func (dependencies *Instance) addIngredientManager() {
38+
dependencies.IngredientManager = &local_service.LocalIngredientManager{
39+
IngredientRepository: dependencies.IngredientRepository,
40+
}
41+
}

‎service/beverage_manager.go‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package service
2+
3+
import "nipun.io/brew_machine/domain"
4+
5+
type BeverageManager interface {
6+
AddNew(beverage domain.Beverage) error
7+
}

‎service/ingredient_manager.go‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package service
2+
3+
import "nipun.io/brew_machine/domain"
4+
5+
type IngredientManager interface {
6+
AddNew(ingredient domain.Ingredient) error
7+
UpdateQuantity(name string, delta int) error
8+
Get(name string) (*domain.Ingredient, error)
9+
IsAvailable(name string) (bool, error)
10+
}

‎service/local/beverage_manager.go‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package service
2+
3+
import (
4+
"nipun.io/brew_machine/domain"
5+
"nipun.io/brew_machine/repository"
6+
)
7+
8+
type LocalBeverageManager struct {
9+
BeverageRepository repository.BeverageRepository
10+
}
11+
12+
func (lbm *LocalBeverageManager) AddNew(beverage domain.Beverage) error {
13+
return lbm.BeverageRepository.AddNew(beverage)
14+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package service
2+
3+
import (
4+
"nipun.io/brew_machine/domain"
5+
"nipun.io/brew_machine/repository"
6+
)
7+
8+
type LocalIngredientManager struct {
9+
IngredientRepository repository.IngredientRepository
10+
}
11+
12+
func (lim *LocalIngredientManager) AddNew(ingredient domain.Ingredient) error {
13+
return lim.IngredientRepository.AddNew(ingredient)
14+
}
15+
16+
func (lim *LocalIngredientManager) UpdateQuantity(name string, delta int) error {
17+
return lim.IngredientRepository.UpdateQuantity(name, delta)
18+
}
19+
20+
func (lim *LocalIngredientManager) Get(name string) (*domain.Ingredient, error) {
21+
return lim.IngredientRepository.Get(name)
22+
}
23+
24+
func (lim *LocalIngredientManager) IsAvailable(name string) (bool, error) {
25+
ingredient, err := lim.Get(name)
26+
if err != nil {
27+
return false, err
28+
}
29+
if ingredient.AvailableQuantity > 0 {
30+
return true, nil
31+
}
32+
return false, nil
33+
}

0 commit comments

Comments
 (0)