try chain

This commit is contained in:
adlerhurst
2025-03-12 10:01:47 +01:00
parent 9bc75d43d9
commit 01499d77c7
6 changed files with 176 additions and 91 deletions

View File

@@ -4,18 +4,50 @@ 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
// type Middleware[O any, H Handler[O]] interface {
// New() H
// NewWithNext(next Handler[O]) H
// }
type Middleware[Req, Res any] interface {
New() Handler[Req, Res]
NewWithNext(next Handler[Req, Res]) Handler[Req, Res]
}
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)
}
type Handler[Req, Res any] interface {
Handle(ctx context.Context, request Req) (Res, error)
SetNext(next Handler[Req, Res])
Name() string
}
// type InstanceBuilder struct {
// tracer *traced.Instance
// logger *logged.Instance
// cache *cache.Instance
// events *event.Instance
// db *sql.Instance
// }
type InstanceSetUpBuilder struct {
tracer Middleware[*repository.Instance, *repository.Instance]
logger Middleware[*repository.Instance, *repository.Instance]
cache Middleware[*repository.Instance, *repository.Instance]
events Middleware[*repository.Instance, *repository.Instance]
db Middleware[*repository.Instance, *repository.Instance]
}
func (i *InstanceSetUpBuilder) Build() {
instance := i.tracer.NewWithNext(
i.logger.NewWithNext(
i.db.NewWithNext(
i.events.NewWithNext(
i.cache.New(),
),
),
),
)
_ = instance
// instance.
}