summaryrefslogtreecommitdiff
path: root/app/db
diff options
context:
space:
mode:
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))