diff options
Diffstat (limited to 'app/db')
| -rw-r--r-- | app/db/authorization.go (renamed from app/db/secure_repository.go) | 20 | ||||
| -rw-r--r-- | app/db/publisher.go (renamed from app/db/publishing_repository.go) | 6 | ||||
| -rw-r--r-- | app/db/publisher_test.go (renamed from app/db/publishing_repository_test.go) | 2 |
3 files changed, 15 insertions, 13 deletions
diff --git a/app/db/secure_repository.go b/app/db/authorization.go index 26b85c9..3041f51 100644 --- a/app/db/secure_repository.go +++ b/app/db/authorization.go @@ -12,19 +12,21 @@ import ( "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls" ) -type SecureRepository[T domain.Entity] struct { +type authorization[T domain.Entity] struct { client *authzed.Client repository domain.Repository[T] } -func NewSecureRepository[T domain.Entity](client *authzed.Client, repository domain.Repository[T]) domain.Repository[T] { - return &SecureRepository[T]{ - client: client, - repository: repository, +func WithAuthorization[T domain.Entity](client *authzed.Client) x.Option[domain.Repository[T]] { + return func(repository domain.Repository[T]) domain.Repository[T] { + return &authorization[T]{ + client: client, + repository: repository, + } } } -func (r *SecureRepository[T]) All(ctx context.Context) []T { +func (r *authorization[T]) All(ctx context.Context) []T { allItems := r.repository.All(ctx) if len(allItems) == 0 { return allItems @@ -56,7 +58,7 @@ func (r *SecureRepository[T]) All(ctx context.Context) []T { return filteredItems } -func (r *SecureRepository[T]) Find(ctx context.Context, id domain.ID) T { +func (r *authorization[T]) Find(ctx context.Context, id domain.ID) T { item := r.repository.Find(ctx, id) response, err := r.client.CheckPermission(ctx, &v1.CheckPermissionRequest{ @@ -76,7 +78,7 @@ func (r *SecureRepository[T]) Find(ctx context.Context, id domain.ID) T { return item } -func (r *SecureRepository[T]) Save(ctx context.Context, item T) error { +func (r *authorization[T]) Save(ctx context.Context, item T) error { currentUser := cfg.CurrentUser.From(ctx) if currentUser == nil { return errors.New("authentication required for creating or updating entities") @@ -104,7 +106,7 @@ func (r *SecureRepository[T]) Save(ctx context.Context, item T) error { return r.repository.Save(ctx, item) } -func (r *SecureRepository[T]) subjectFrom(ctx context.Context) *v1.SubjectReference { +func (r *authorization[T]) subjectFrom(ctx context.Context) *v1.SubjectReference { currentUser := cfg.CurrentUser.From(ctx) if currentUser == nil { return &v1.SubjectReference{ diff --git a/app/db/publishing_repository.go b/app/db/publisher.go index 049129e..ee2a966 100644 --- a/app/db/publishing_repository.go +++ b/app/db/publisher.go @@ -8,21 +8,21 @@ import ( "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain" ) -type publishingRepository[T domain.Entity] struct { +type publisher[T domain.Entity] struct { aggregator *event.TypedAggregator[T] domain.Repository[T] } func WithPublishing[T domain.Entity](aggregator *event.TypedAggregator[T]) x.Option[domain.Repository[T]] { return func(repository domain.Repository[T]) domain.Repository[T] { - return &publishingRepository[T]{ + return &publisher[T]{ aggregator: aggregator, Repository: repository, } } } -func (r *publishingRepository[T]) Save(ctx context.Context, item T) error { +func (r *publisher[T]) Save(ctx context.Context, item T) error { err := r.Repository.Save(ctx, item) if err == nil { r.aggregator.Publish("after.create", item) diff --git a/app/db/publishing_repository_test.go b/app/db/publisher_test.go index 4a2c05f..eeb912a 100644 --- a/app/db/publishing_repository_test.go +++ b/app/db/publisher_test.go @@ -9,7 +9,7 @@ import ( "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain" ) -func TestPublishingRepository(t *testing.T) { +func TestWithPublishing(t *testing.T) { aggregator := event.New[*domain.Sparkle]() storage := NewRepository[*domain.Sparkle](WithPublishing(aggregator)) |
