diff options
Diffstat (limited to 'business')
-rw-r--r-- | business/business.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/business/business.go b/business/business.go new file mode 100644 index 0000000..ecb54ad --- /dev/null +++ b/business/business.go @@ -0,0 +1,45 @@ +package business + +import ( + "fmt" + + "www.thenautilus.net/cgit/go-example/config" + "www.thenautilus.net/cgit/go-example/something" +) + +type OverError struct { + Value, Threshold int +} + +func (e OverError) Error() string { + return fmt.Sprintf("value %d is above threshold %d", e.Value, e.Threshold) +} + +type Logic struct { + somethingClient *something.Something + threshold int +} + +func New(conf *config.BusinessLogicConfig, client *something.Something) Logic { + return Logic{ + somethingClient: client, + threshold: conf.Threshold, + } +} + +func (bl *Logic) DoSomething() error { + value, err := bl.somethingClient.FetchValue() + if err != nil { + return fmt.Errorf("failed to fetch value: %w", err) + } + + if value > bl.threshold { + fmt.Printf("OVER! %d > %d\n", value, bl.threshold) + + return OverError{value, bl.threshold} + } + + fmt.Printf("all good") + + return nil +} |