From cafc27302d7fdf69934f3b5007ddf3f5e0fc1cd4 Mon Sep 17 00:00:00 2001 From: dakkar Date: Thu, 19 Dec 2024 15:16:56 +0000 Subject: add another package to better show the pattern --- business/business.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 business/business.go (limited to 'business/business.go') 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 +} -- cgit v1.2.3