This commit is contained in:
adlerhurst
2025-02-27 10:47:35 +01:00
parent bde0387338
commit d44b1135c9
2 changed files with 89 additions and 0 deletions

View 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)
}

View 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")
}