mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 16:47:32 +00:00
builder
This commit is contained in:
35
backend/domain/builder/builder.go
Normal file
35
backend/domain/builder/builder.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package builder
|
||||
|
||||
import "sync"
|
||||
|
||||
type builder interface {
|
||||
reset()
|
||||
}
|
||||
|
||||
type Builder[T builder] struct {
|
||||
*sync.Pool
|
||||
}
|
||||
|
||||
func NewBuilder[T builder](creator func() T) *Builder[T] {
|
||||
if creator == nil {
|
||||
creator = func() T {
|
||||
var x T
|
||||
return x
|
||||
}
|
||||
}
|
||||
return &Builder[T]{
|
||||
Pool: &sync.Pool{
|
||||
New: func() any {
|
||||
return creator()
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Builder[T]) Get() T {
|
||||
return b.Pool.Get().(T)
|
||||
}
|
||||
|
||||
func (b *Builder[T]) Put(x T) {
|
||||
b.Pool.Put(x)
|
||||
}
|
54
backend/domain/builder/instance.go
Normal file
54
backend/domain/builder/instance.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package builder
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/zitadel/zitadel/backend/repository"
|
||||
"github.com/zitadel/zitadel/backend/repository/cache"
|
||||
"github.com/zitadel/zitadel/backend/telemetry/logging"
|
||||
"github.com/zitadel/zitadel/backend/telemetry/tracing"
|
||||
)
|
||||
|
||||
type InstanceBuilder struct {
|
||||
*Builder[*InstanceBuilder]
|
||||
|
||||
tracer tracing.Tracer
|
||||
logger *logging.Logger
|
||||
cache *cache.Instance
|
||||
db repository.InstanceRepository
|
||||
}
|
||||
|
||||
func NewInstanceBuilder() *InstanceBuilder {
|
||||
return &InstanceBuilder{
|
||||
Builder: NewBuilder(func() *InstanceBuilder {
|
||||
return new(InstanceBuilder)
|
||||
}),
|
||||
cache: new(cache.Instance),
|
||||
tracer: tracing.NewTracer("instance"),
|
||||
logger: &logging.Logger{Logger: slog.Default().With("service", "instance")},
|
||||
}
|
||||
}
|
||||
|
||||
var _ builder = (*InstanceBuilder)(nil)
|
||||
|
||||
func (b *InstanceBuilder) reset() {
|
||||
b.db = nil
|
||||
}
|
||||
|
||||
var _ repository.InstanceRepository = (*InstanceBuilder)(nil)
|
||||
|
||||
// ByDomain implements repository.InstanceRepository.
|
||||
func (b *InstanceBuilder) ByDomain(ctx context.Context, domain string) (*repository.Instance, error) {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
// ByID implements repository.InstanceRepository.
|
||||
func (b *InstanceBuilder) ByID(ctx context.Context, id string) (*repository.Instance, error) {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
// SetUp implements repository.InstanceRepository.
|
||||
func (b *InstanceBuilder) SetUp(ctx context.Context, instance *repository.Instance) error {
|
||||
panic("unimplemented")
|
||||
}
|
Reference in New Issue
Block a user