make client interface

This commit is contained in:
Mike Mason
2023-07-18 13:36:41 +00:00
parent 05762f5d75
commit f828546cfe
10 changed files with 72 additions and 46 deletions

View File

@@ -78,13 +78,18 @@ type Service interface {
IsAssignableResource(id gidx.PrefixedID) bool
}
// EventPublisher defines the required methods to publish events.
type EventPublisher interface {
PublishChange(ctx context.Context, subjectType string, change events.ChangeMessage) error
}
var _ Service = &service{}
type service struct {
logger *zap.SugaredLogger
publisher *events.Publisher
metal *metal.Client
perms *permissions.Client
publisher EventPublisher
metal metal.Client
perms permissions.Client
idPrefixMap map[string]ObjectType
rootResource prefixedID
@@ -100,7 +105,7 @@ func (r prefixedID) PrefixedID() gidx.PrefixedID {
}
// New creates a new service.
func New(publisher *events.Publisher, metal *metal.Client, perms *permissions.Client, options ...Option) (Service, error) {
func New(publisher EventPublisher, metal metal.Client, perms permissions.Client, options ...Option) (Service, error) {
svc := &service{
publisher: publisher,
metal: metal,