// Package greeter is a minimal example domain package. // It demonstrates how to: // - define an interface (satisfied by manual fakes in tests) // - inject a component-scoped logger through the constructor // // Replace this package with your own domain logic. package greeter import ( "fmt" "gitea.djmil.dev/go/template/pkg/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.WithField("component", "greeter")} } // Greet returns a personalized greeting and logs the interaction. func (s *Service) Greet(name string) result.Expect[string] { if name == "" { return result.Errf[string]("name must not be empty") } msg := fmt.Sprintf("Hello, %s!", name) s.log.WithField("name", name).Debug("greeting generated") return result.Ok(msg) }