mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-24 13:39:46 -06:00
54 lines
2.0 KiB
Go
54 lines
2.0 KiB
Go
package settings
|
|
|
|
import (
|
|
"github.com/owncloud/ocis/settings/pkg/config"
|
|
"github.com/owncloud/ocis/settings/pkg/proto/v0"
|
|
)
|
|
|
|
var (
|
|
// Registry uses the strategy pattern as a registry
|
|
Registry = map[string]RegisterFunc{}
|
|
)
|
|
|
|
// RegisterFunc stores store constructors
|
|
type RegisterFunc func(*config.Config) Manager
|
|
|
|
// Manager combines service interfaces for abstraction of storage implementations
|
|
type Manager interface {
|
|
BundleManager
|
|
ValueManager
|
|
RoleAssignmentManager
|
|
PermissionManager
|
|
}
|
|
|
|
// BundleManager is a bundle service interface for abstraction of storage implementations
|
|
type BundleManager interface {
|
|
ListBundles(bundleType proto.Bundle_Type, bundleIDs []string) ([]*proto.Bundle, error)
|
|
ReadBundle(bundleID string) (*proto.Bundle, error)
|
|
WriteBundle(bundle *proto.Bundle) (*proto.Bundle, error)
|
|
ReadSetting(settingID string) (*proto.Setting, error)
|
|
AddSettingToBundle(bundleID string, setting *proto.Setting) (*proto.Setting, error)
|
|
RemoveSettingFromBundle(bundleID, settingID string) error
|
|
}
|
|
|
|
// ValueManager is a value service interface for abstraction of storage implementations
|
|
type ValueManager interface {
|
|
ListValues(bundleID, accountUUID string) ([]*proto.Value, error)
|
|
ReadValue(valueID string) (*proto.Value, error)
|
|
ReadValueByUniqueIdentifiers(accountUUID, settingID string) (*proto.Value, error)
|
|
WriteValue(value *proto.Value) (*proto.Value, error)
|
|
}
|
|
|
|
// RoleAssignmentManager is a role assignment service interface for abstraction of storage implementations
|
|
type RoleAssignmentManager interface {
|
|
ListRoleAssignments(accountUUID string) ([]*proto.UserRoleAssignment, error)
|
|
WriteRoleAssignment(accountUUID, roleID string) (*proto.UserRoleAssignment, error)
|
|
RemoveRoleAssignment(assignmentID string) error
|
|
}
|
|
|
|
// PermissionManager is a permissions service interface for abstraction of storage implementations
|
|
type PermissionManager interface {
|
|
ListPermissionsByResource(resource *proto.Resource, roleIDs []string) ([]*proto.Permission, error)
|
|
ReadPermissionByID(permissionID string, roleIDs []string) (*proto.Permission, error)
|
|
}
|