// Package greeter is a minimal example domain package. // It demonstrates how to: // - define an interface (satisfied by manual fakes in tests) // - inject dependencies (logger) through a constructor // - use the logger.WithField pattern // // Replace this package with your own domain logic. package greeter import ( "fmt" "gitea.djmil.dev/go/template/internal/logger" "gitea.djmil.dev/go/template/pkg/result" ) // Service is the concrete implementation. type Service struct { log *logger.Logger } // New creates a Greeter service with the provided logger. func New(log *logger.Logger) *Service { return &Service{log: log} } // Greet returns a personalized greeting and logs the interaction. func (s *Service) Greet(name string) result.Expect[string] { if name == "" { return result.Errf[string]("Greet: name must not be empty") } msg := fmt.Sprintf("Hello, %s!", name) s.log. WithField("component", "greeter"). WithField("name", name). Info("greeting generated") return result.Ok(msg) }