From fb3b451d4dd664b34a30df7a8a70c516eaa09f2e Mon Sep 17 00:00:00 2001 From: adlerhurst <27845747+adlerhurst@users.noreply.github.com> Date: Wed, 26 Feb 2025 09:49:38 +0100 Subject: [PATCH] chain of responsibilities --- .../{update_config3.go => update_config.go} | 0 backend/domain/factory/instance.go | 21 ++++++++++++++++++ backend/domain/instance.go | 18 +++++++-------- backend/domain/user.go | 10 ++++----- .../repository/cache/instance.go | 2 +- .../{storage => }/repository/cache/user.go | 2 +- .../repository/event/instance.go | 2 +- .../{storage => }/repository/event/user.go | 2 +- backend/repository/handler.go | 5 +++++ backend/{storage => }/repository/instance.go | 22 ++++++++++++++++--- .../{storage => }/repository/sql/instance.go | 2 +- backend/{storage => }/repository/sql/user.go | 2 +- .../repository/telemetry/logged/instance.go | 7 +++--- .../repository/telemetry/logged/user.go | 15 +++++++------ .../repository/telemetry/traced/instance.go | 2 +- .../repository/telemetry/traced/user.go | 2 +- backend/{storage => }/repository/user.go | 0 backend/telemetry/logging/logger.go | 7 ++++++ 18 files changed, 86 insertions(+), 35 deletions(-) rename backend/cmd/configure/{update_config3.go => update_config.go} (100%) create mode 100644 backend/domain/factory/instance.go rename backend/{storage => }/repository/cache/instance.go (96%) rename backend/{storage => }/repository/cache/user.go (93%) rename backend/{storage => }/repository/event/instance.go (93%) rename backend/{storage => }/repository/event/user.go (91%) create mode 100644 backend/repository/handler.go rename backend/{storage => }/repository/instance.go (53%) rename backend/{storage => }/repository/sql/instance.go (96%) rename backend/{storage => }/repository/sql/user.go (93%) rename backend/{storage => }/repository/telemetry/logged/instance.go (82%) rename backend/{storage => }/repository/telemetry/logged/user.go (52%) rename backend/{storage => }/repository/telemetry/traced/instance.go (96%) rename backend/{storage => }/repository/telemetry/traced/user.go (94%) rename backend/{storage => }/repository/user.go (100%) create mode 100644 backend/telemetry/logging/logger.go diff --git a/backend/cmd/configure/update_config3.go b/backend/cmd/configure/update_config.go similarity index 100% rename from backend/cmd/configure/update_config3.go rename to backend/cmd/configure/update_config.go diff --git a/backend/domain/factory/instance.go b/backend/domain/factory/instance.go new file mode 100644 index 0000000000..c461f3e4c9 --- /dev/null +++ b/backend/domain/factory/instance.go @@ -0,0 +1,21 @@ +package factory + +import ( + "context" + + "github.com/zitadel/zitadel/backend/repository" + "github.com/zitadel/zitadel/backend/storage/database" + "github.com/zitadel/zitadel/backend/telemetry/logging" + "github.com/zitadel/zitadel/backend/telemetry/tracing" +) + +type InstanceBuilder struct { + tracer *tracing.Tracer + logger *logging.Logger +} + +func (f *InstanceBuilder) BuildSetUpInstance(tx database.Transaction) func(ctx context.Context, instance *repository.Instance) error { + return func(ctx context.Context, instance *repository.Instance) error { + return tx.Exec(ctx, "INSERT INTO instances (id, name) VALUES ($1, $2)", instance.ID, instance.Name) + } +} diff --git a/backend/domain/instance.go b/backend/domain/instance.go index cc0edf6433..b5fd2263e3 100644 --- a/backend/domain/instance.go +++ b/backend/domain/instance.go @@ -2,27 +2,27 @@ package domain import ( "context" - "log/slog" + "github.com/zitadel/zitadel/backend/repository" + "github.com/zitadel/zitadel/backend/repository/cache" + "github.com/zitadel/zitadel/backend/repository/event" + "github.com/zitadel/zitadel/backend/repository/sql" + "github.com/zitadel/zitadel/backend/repository/telemetry/logged" + "github.com/zitadel/zitadel/backend/repository/telemetry/traced" "github.com/zitadel/zitadel/backend/storage/database" "github.com/zitadel/zitadel/backend/storage/eventstore" - "github.com/zitadel/zitadel/backend/storage/repository" - "github.com/zitadel/zitadel/backend/storage/repository/cache" - "github.com/zitadel/zitadel/backend/storage/repository/event" - "github.com/zitadel/zitadel/backend/storage/repository/sql" - "github.com/zitadel/zitadel/backend/storage/repository/telemetry/logged" - "github.com/zitadel/zitadel/backend/storage/repository/telemetry/traced" + "github.com/zitadel/zitadel/backend/telemetry/logging" "github.com/zitadel/zitadel/backend/telemetry/tracing" ) type Instance struct { db database.Pool tracer *tracing.Tracer - logger *slog.Logger + logger *logging.Logger cache *cache.Instance } -func NewInstance(db database.Pool, tracer *tracing.Tracer, logger *slog.Logger) *Instance { +func NewInstance(db database.Pool, tracer *tracing.Tracer, logger *logging.Logger) *Instance { b := &Instance{ db: db, tracer: tracer, diff --git a/backend/domain/user.go b/backend/domain/user.go index a032bcd6bd..f98f51795a 100644 --- a/backend/domain/user.go +++ b/backend/domain/user.go @@ -1,13 +1,13 @@ package domain import ( + "github.com/zitadel/zitadel/backend/repository" + "github.com/zitadel/zitadel/backend/repository/event" + "github.com/zitadel/zitadel/backend/repository/sql" + "github.com/zitadel/zitadel/backend/repository/telemetry/logged" + "github.com/zitadel/zitadel/backend/repository/telemetry/traced" "github.com/zitadel/zitadel/backend/storage/database" "github.com/zitadel/zitadel/backend/storage/eventstore" - "github.com/zitadel/zitadel/backend/storage/repository" - "github.com/zitadel/zitadel/backend/storage/repository/event" - "github.com/zitadel/zitadel/backend/storage/repository/sql" - "github.com/zitadel/zitadel/backend/storage/repository/telemetry/logged" - "github.com/zitadel/zitadel/backend/storage/repository/telemetry/traced" ) func (b *Instance) userCommandRepo(tx database.Transaction) repository.UserRepository { diff --git a/backend/storage/repository/cache/instance.go b/backend/repository/cache/instance.go similarity index 96% rename from backend/storage/repository/cache/instance.go rename to backend/repository/cache/instance.go index 662d54fd91..c036cf99e5 100644 --- a/backend/storage/repository/cache/instance.go +++ b/backend/repository/cache/instance.go @@ -4,8 +4,8 @@ import ( "context" "sync" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/storage/cache" - "github.com/zitadel/zitadel/backend/storage/repository" ) type Instance struct { diff --git a/backend/storage/repository/cache/user.go b/backend/repository/cache/user.go similarity index 93% rename from backend/storage/repository/cache/user.go rename to backend/repository/cache/user.go index b8632c1cc8..a7bcad25d0 100644 --- a/backend/storage/repository/cache/user.go +++ b/backend/repository/cache/user.go @@ -3,8 +3,8 @@ package cache import ( "context" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/storage/cache" - "github.com/zitadel/zitadel/backend/storage/repository" ) type User struct { diff --git a/backend/storage/repository/event/instance.go b/backend/repository/event/instance.go similarity index 93% rename from backend/storage/repository/event/instance.go rename to backend/repository/event/instance.go index 1944b40881..faa75bc331 100644 --- a/backend/storage/repository/event/instance.go +++ b/backend/repository/event/instance.go @@ -3,8 +3,8 @@ package event import ( "context" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/storage/eventstore" - "github.com/zitadel/zitadel/backend/storage/repository" ) var _ repository.InstanceRepository = (*Instance)(nil) diff --git a/backend/storage/repository/event/user.go b/backend/repository/event/user.go similarity index 91% rename from backend/storage/repository/event/user.go rename to backend/repository/event/user.go index 0a3ffe1adf..88ba64240c 100644 --- a/backend/storage/repository/event/user.go +++ b/backend/repository/event/user.go @@ -3,8 +3,8 @@ package event import ( "context" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/storage/eventstore" - "github.com/zitadel/zitadel/backend/storage/repository" ) var _ repository.UserRepository = (*User)(nil) diff --git a/backend/repository/handler.go b/backend/repository/handler.go new file mode 100644 index 0000000000..228a75adb4 --- /dev/null +++ b/backend/repository/handler.go @@ -0,0 +1,5 @@ +package repository + +type Handler interface { + SetNext(next Handler) Handler +} diff --git a/backend/storage/repository/instance.go b/backend/repository/instance.go similarity index 53% rename from backend/storage/repository/instance.go rename to backend/repository/instance.go index 41c4c0d247..5ba6e7d749 100644 --- a/backend/storage/repository/instance.go +++ b/backend/repository/instance.go @@ -3,12 +3,28 @@ package repository import "context" type InstanceRepository interface { - SetUp(ctx context.Context, instance *Instance) error - ByID(ctx context.Context, id string) (*Instance, error) - ByDomain(ctx context.Context, domain string) (*Instance, error) + InstanceSetuper + instanceByIDQuerier + instanceByDomainQuerier } type Instance struct { ID string Name string } + +type InstanceSetuper interface { + SetUp(ctx context.Context, instance *Instance) error +} + +type instanceByIDQuerier interface { + ByID(ctx context.Context, id string) (*Instance, error) +} + +type instanceByDomainQuerier interface { + ByDomain(ctx context.Context, domain string) (*Instance, error) +} + +type InstanceLister interface { + List(ctx context.Context) ([]*Instance, error) +} diff --git a/backend/storage/repository/sql/instance.go b/backend/repository/sql/instance.go similarity index 96% rename from backend/storage/repository/sql/instance.go rename to backend/repository/sql/instance.go index 97f89c61e6..ee3c9bd368 100644 --- a/backend/storage/repository/sql/instance.go +++ b/backend/repository/sql/instance.go @@ -3,8 +3,8 @@ package sql import ( "context" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/storage/database" - "github.com/zitadel/zitadel/backend/storage/repository" ) func NewInstance(client database.QueryExecutor) repository.InstanceRepository { diff --git a/backend/storage/repository/sql/user.go b/backend/repository/sql/user.go similarity index 93% rename from backend/storage/repository/sql/user.go rename to backend/repository/sql/user.go index 477acc8a01..6f5b4c8035 100644 --- a/backend/storage/repository/sql/user.go +++ b/backend/repository/sql/user.go @@ -3,8 +3,8 @@ package sql import ( "context" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/storage/database" - "github.com/zitadel/zitadel/backend/storage/repository" ) func NewUser(client database.QueryExecutor) repository.UserRepository { diff --git a/backend/storage/repository/telemetry/logged/instance.go b/backend/repository/telemetry/logged/instance.go similarity index 82% rename from backend/storage/repository/telemetry/logged/instance.go rename to backend/repository/telemetry/logged/instance.go index ce8bda023d..02fa190b4a 100644 --- a/backend/storage/repository/telemetry/logged/instance.go +++ b/backend/repository/telemetry/logged/instance.go @@ -4,16 +4,17 @@ import ( "context" "log/slog" - "github.com/zitadel/zitadel/backend/storage/repository" + "github.com/zitadel/zitadel/backend/repository" + "github.com/zitadel/zitadel/backend/telemetry/logging" ) type Instance struct { - *slog.Logger + *logging.Logger next repository.InstanceRepository } -func NewInstance(logger *slog.Logger, next repository.InstanceRepository) *Instance { +func NewInstance(logger *logging.Logger, next repository.InstanceRepository) *Instance { return &Instance{Logger: logger, next: next} } diff --git a/backend/storage/repository/telemetry/logged/user.go b/backend/repository/telemetry/logged/user.go similarity index 52% rename from backend/storage/repository/telemetry/logged/user.go rename to backend/repository/telemetry/logged/user.go index a8a59cfdd2..2f7135c86e 100644 --- a/backend/storage/repository/telemetry/logged/user.go +++ b/backend/repository/telemetry/logged/user.go @@ -4,32 +4,33 @@ import ( "context" "log/slog" - "github.com/zitadel/zitadel/backend/storage/repository" + "github.com/zitadel/zitadel/backend/repository" + "github.com/zitadel/zitadel/backend/telemetry/logging" ) type User struct { - *slog.Logger + logger *logging.Logger next repository.UserRepository } -func NewUser(logger *slog.Logger, next repository.UserRepository) *User { - return &User{Logger: logger, next: next} +func NewUser(logger *logging.Logger, next repository.UserRepository) *User { + return &User{logger: logger, next: next} } var _ repository.UserRepository = (*User)(nil) func (i *User) ByID(ctx context.Context, id string) (*repository.User, error) { - i.Logger.InfoContext(ctx, "By ID Query", slog.String("id", id)) + i.logger.InfoContext(ctx, "By ID Query", slog.String("id", id)) return i.next.ByID(ctx, id) } func (i *User) Create(ctx context.Context, user *repository.User) error { err := i.next.Create(ctx, user) if err != nil { - i.Logger.ErrorContext(ctx, "Failed to create user", slog.Any("user", user), slog.Any("cause", err)) + i.logger.ErrorContext(ctx, "Failed to create user", slog.Any("user", user), slog.Any("cause", err)) return err } - i.Logger.InfoContext(ctx, "User created successfully", slog.Any("user", user)) + i.logger.InfoContext(ctx, "User created successfully", slog.Any("user", user)) return nil } diff --git a/backend/storage/repository/telemetry/traced/instance.go b/backend/repository/telemetry/traced/instance.go similarity index 96% rename from backend/storage/repository/telemetry/traced/instance.go rename to backend/repository/telemetry/traced/instance.go index 8466ff28a5..a2e8f95389 100644 --- a/backend/storage/repository/telemetry/traced/instance.go +++ b/backend/repository/telemetry/traced/instance.go @@ -3,7 +3,7 @@ package traced import ( "context" - "github.com/zitadel/zitadel/backend/storage/repository" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/telemetry/tracing" ) diff --git a/backend/storage/repository/telemetry/traced/user.go b/backend/repository/telemetry/traced/user.go similarity index 94% rename from backend/storage/repository/telemetry/traced/user.go rename to backend/repository/telemetry/traced/user.go index 4de197363e..175d38af93 100644 --- a/backend/storage/repository/telemetry/traced/user.go +++ b/backend/repository/telemetry/traced/user.go @@ -3,7 +3,7 @@ package traced import ( "context" - "github.com/zitadel/zitadel/backend/storage/repository" + "github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/telemetry/tracing" ) diff --git a/backend/storage/repository/user.go b/backend/repository/user.go similarity index 100% rename from backend/storage/repository/user.go rename to backend/repository/user.go diff --git a/backend/telemetry/logging/logger.go b/backend/telemetry/logging/logger.go new file mode 100644 index 0000000000..580120cce6 --- /dev/null +++ b/backend/telemetry/logging/logger.go @@ -0,0 +1,7 @@ +package logging + +import "log/slog" + +type Logger struct { + *slog.Logger +}