auth/internal/client/repository.go

50 lines
1.1 KiB
Go
Raw Permalink Normal View History

2021-09-23 23:06:22 +00:00
package client
import (
"context"
"source.toby3d.me/toby3d/auth/internal/domain"
2021-09-23 23:06:22 +00:00
)
type (
Repository interface {
Fetch(ctx context.Context, cid domain.ClientID) (*domain.Client, error)
}
dummyClientRepository struct{}
stubClientRepository struct {
client *domain.Client
error error
}
)
2021-12-29 20:53:31 +00:00
var ErrNotExist error = domain.NewError(
domain.ErrorCodeInvalidClient,
"client with the specified ID does not exist",
"",
)
// NewDummyClientRepository creates a new dummy [Repository] implementation what
// do nothing.
func NewDummyClientRepository() Repository {
return dummyClientRepository{}
}
func (dummyClientRepository) Fetch(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return nil, nil
}
// NewStubClientRepository creates a new stub [Repository] implementation what
// always return data provided here.
func NewStubClientRepository(client *domain.Client, err error) Repository {
return &stubClientRepository{
client: client,
error: err,
}
}
func (repo *stubClientRepository) Fetch(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return repo.client, repo.error
}