mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-03 09:20:50 -05:00
6ee4a084a2
* Use go-micro store to cache the roles Add custom in-memory implementation * replace redis with custom etcd implementation * adjust table name for the cache in the roles manager * Fix tests * Fix sonarcloud issues * Refactor for sonarcloud * Allow configuration of cache per service * Reuse parent context in etcd implementation
48 lines
961 B
Go
48 lines
961 B
Go
package roles
|
|
|
|
import (
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/log"
|
|
ocisstore "github.com/owncloud/ocis/v2/ocis-pkg/store"
|
|
settingssvc "github.com/owncloud/ocis/v2/protogen/gen/ocis/services/settings/v0"
|
|
)
|
|
|
|
// Options are all the possible options.
|
|
type Options struct {
|
|
storeOptions ocisstore.OcisStoreOptions
|
|
logger log.Logger
|
|
roleService settingssvc.RoleService
|
|
}
|
|
|
|
// Option mutates option
|
|
type Option func(*Options)
|
|
|
|
// Logger sets a preconfigured logger
|
|
func Logger(logger log.Logger) Option {
|
|
return func(o *Options) {
|
|
o.logger = logger
|
|
}
|
|
}
|
|
|
|
// RoleService provides endpoints for fetching roles.
|
|
func RoleService(rs settingssvc.RoleService) Option {
|
|
return func(o *Options) {
|
|
o.roleService = rs
|
|
}
|
|
}
|
|
|
|
func StoreOptions(storeOpts ocisstore.OcisStoreOptions) Option {
|
|
return func(o *Options) {
|
|
o.storeOptions = storeOpts
|
|
}
|
|
}
|
|
|
|
func newOptions(opts ...Option) Options {
|
|
o := Options{}
|
|
|
|
for _, v := range opts {
|
|
v(&o)
|
|
}
|
|
|
|
return o
|
|
}
|