File tree Expand file tree Collapse file tree 5 files changed +80
-0
lines changed Expand file tree Collapse file tree 5 files changed +80
-0
lines changed Original file line number Diff line number Diff line change @@ -3,11 +3,15 @@ package appcontext
33import (
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
810type Instance struct {
911 BeverageRepository repository.BeverageRepository
1012 IngredientRepository repository.IngredientRepository
13+ BeverageManager service.BeverageManager
14+ IngredientManager service.IngredientManager
1115}
1216
1317var AppDependencies * Instance
@@ -23,3 +27,15 @@ func (dependencies *Instance) addBeverageRepository() {
2327func (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+ }
Original file line number Diff line number Diff line change 1+ package service
2+
3+ import "nipun.io/brew_machine/domain"
4+
5+ type BeverageManager interface {
6+ AddNew (beverage domain.Beverage ) error
7+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments