mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-24 16:07:45 +00:00
try chain
This commit is contained in:
@@ -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.
|
||||
}
|
||||
|
Reference in New Issue
Block a user