feat: initial commit
All checks were successful
Cadoles/bouncer/pipeline/head This commit looks good
All checks were successful
Cadoles/bouncer/pipeline/head This commit looks good
This commit is contained in:
78
internal/store/layer_repository.go
Normal file
78
internal/store/layer_repository.go
Normal file
@ -0,0 +1,78 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
type LayerOptions map[string]any
|
||||
|
||||
type LayerRepository interface {
|
||||
CreateLayer(ctx context.Context, proxyName ProxyName, layerName LayerName, layerType LayerType, options LayerOptions) (*Layer, error)
|
||||
UpdateLayer(ctx context.Context, proxyName ProxyName, layerName LayerName, funcs ...UpdateLayerOptionFunc) (*Layer, error)
|
||||
DeleteLayer(ctx context.Context, proxyName ProxyName, layerName LayerName) error
|
||||
GetLayer(ctx context.Context, proxyName ProxyName, layerName LayerName) (*Layer, error)
|
||||
QueryLayers(ctx context.Context, proxyName ProxyName, funcs ...QueryLayerOptionFunc) ([]*LayerHeader, error)
|
||||
}
|
||||
|
||||
type QueryLayerOptionFunc func(*QueryLayerOptions)
|
||||
|
||||
type QueryLayerOptions struct {
|
||||
Type *LayerType
|
||||
Name *LayerName
|
||||
Enabled *bool
|
||||
}
|
||||
|
||||
func DefaultQueryLayerOptions() *QueryLayerOptions {
|
||||
funcs := []QueryLayerOptionFunc{}
|
||||
|
||||
opts := &QueryLayerOptions{}
|
||||
for _, fn := range funcs {
|
||||
fn(opts)
|
||||
}
|
||||
|
||||
return opts
|
||||
}
|
||||
|
||||
func WithLayerQueryType(layerType LayerType) QueryLayerOptionFunc {
|
||||
return func(o *QueryLayerOptions) {
|
||||
o.Type = &layerType
|
||||
}
|
||||
}
|
||||
|
||||
func WithLayerQueryName(layerName LayerName) QueryLayerOptionFunc {
|
||||
return func(o *QueryLayerOptions) {
|
||||
o.Name = &layerName
|
||||
}
|
||||
}
|
||||
|
||||
func WithLayerQueryEnabled(enabled bool) QueryLayerOptionFunc {
|
||||
return func(o *QueryLayerOptions) {
|
||||
o.Enabled = &enabled
|
||||
}
|
||||
}
|
||||
|
||||
type UpdateLayerOptionFunc func(*UpdateLayerOptions)
|
||||
|
||||
type UpdateLayerOptions struct {
|
||||
Enabled *bool
|
||||
Weight *int
|
||||
Options *LayerOptions
|
||||
}
|
||||
|
||||
func WithLayerUpdateEnabled(enabled bool) UpdateLayerOptionFunc {
|
||||
return func(o *UpdateLayerOptions) {
|
||||
o.Enabled = &enabled
|
||||
}
|
||||
}
|
||||
|
||||
func WithLayerUpdateWeight(weight int) UpdateLayerOptionFunc {
|
||||
return func(o *UpdateLayerOptions) {
|
||||
o.Weight = &weight
|
||||
}
|
||||
}
|
||||
|
||||
func WithLayerUpdateOptions(options LayerOptions) UpdateLayerOptionFunc {
|
||||
return func(o *UpdateLayerOptions) {
|
||||
o.Options = &options
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user