mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:17:32 +00:00
chain of responsibilities
This commit is contained in:
21
backend/domain/factory/instance.go
Normal file
21
backend/domain/factory/instance.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
@@ -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,
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
@@ -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 {
|
@@ -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)
|
@@ -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)
|
5
backend/repository/handler.go
Normal file
5
backend/repository/handler.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package repository
|
||||
|
||||
type Handler interface {
|
||||
SetNext(next Handler) Handler
|
||||
}
|
@@ -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)
|
||||
}
|
@@ -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 {
|
@@ -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 {
|
@@ -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}
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
@@ -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"
|
||||
)
|
||||
|
@@ -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"
|
||||
)
|
||||
|
7
backend/telemetry/logging/logger.go
Normal file
7
backend/telemetry/logging/logger.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package logging
|
||||
|
||||
import "log/slog"
|
||||
|
||||
type Logger struct {
|
||||
*slog.Logger
|
||||
}
|
Reference in New Issue
Block a user