| package service | |
| import ( | |
| "errors" | |
| "log/slog" | |
| "github.com/openmeterio/openmeter/openmeter/taxcode" | |
| ) | |
| var _ taxcode.Service = (*Service)(nil) | |
| type Service struct { | |
| adapter taxcode.Repository | |
| logger *slog.Logger | |
| } | |
| type Config struct { | |
| Adapter taxcode.Repository | |
| Logger *slog.Logger | |
| } | |
| func (c Config) Validate() error { | |
| var errs []error | |
| if c.Adapter == nil { | |
| errs = append(errs, errors.New("adapter is required")) | |
| } | |
| if c.Logger == nil { | |
| errs = append(errs, errors.New("logger is required")) | |
| } | |
| return errors.Join(errs...) | |
| } | |
| func New(config Config) (*Service, error) { | |
| if err := config.Validate(); err != nil { | |
| return nil, err | |
| } | |
| return &Service{ | |
| adapter: config.Adapter, | |
| logger: config.Logger, | |
| }, nil | |
| } | |