mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 22:57:31 +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