Add system service for Focalboard multi product architecture (#20574)
* add system service; add GetUsers to users service * add feature flag
Этот коммит содержится в:
@@ -173,3 +173,12 @@ func (a *App) SetServer(srv *Server) {
|
||||
func (a *App) UpdateExpiredDNDStatuses() ([]*model.Status, error) {
|
||||
return a.Srv().Store.Status().UpdateExpiredDNDStatuses()
|
||||
}
|
||||
|
||||
// systemServiceAdapter provides a collection of system APIs for use by products.
|
||||
type systemServiceAdapter struct {
|
||||
server *Server
|
||||
}
|
||||
|
||||
func (ssa *systemServiceAdapter) GetDiagnosticId() string {
|
||||
return ssa.server.TelemetryId()
|
||||
}
|
||||
|
||||
@@ -103,6 +103,7 @@ const (
|
||||
HooksKey ServiceKey = "hooks"
|
||||
KVStoreKey ServiceKey = "kvstore"
|
||||
StoreKey ServiceKey = "storekey"
|
||||
SystemKey ServiceKey = "systemkey"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
@@ -404,6 +405,7 @@ func NewServer(options ...Option) (*Server, error) {
|
||||
CloudKey: &cloudWrapper{cloud: s.Cloud},
|
||||
KVStoreKey: &kvStoreWrapper{srv: s},
|
||||
StoreKey: store.NewStoreServiceAdapter(s.Store),
|
||||
SystemKey: &systemServiceAdapter{server: s},
|
||||
}
|
||||
|
||||
// Step 8: Initialize products.
|
||||
|
||||
@@ -34,11 +34,11 @@ type teamServiceWrapper struct {
|
||||
app AppIface
|
||||
}
|
||||
|
||||
func (w *teamServiceWrapper) GetMember(teamID, userID string) (*model.TeamMember, error) {
|
||||
func (w *teamServiceWrapper) GetMember(teamID, userID string) (*model.TeamMember, *model.AppError) {
|
||||
return w.app.GetTeamMember(teamID, userID)
|
||||
}
|
||||
|
||||
func (w *teamServiceWrapper) CreateMember(ctx *request.Context, teamID, userID string) (*model.TeamMember, error) {
|
||||
func (w *teamServiceWrapper) CreateMember(ctx *request.Context, teamID, userID string) (*model.TeamMember, *model.AppError) {
|
||||
return w.app.AddTeamMember(ctx, teamID, userID)
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,9 @@ type FeatureFlags struct {
|
||||
CommandPalette bool
|
||||
|
||||
AdvancedTextEditor bool
|
||||
|
||||
// Enable Boards as a product (multi-product architecture)
|
||||
BoardsProduct bool
|
||||
}
|
||||
|
||||
func (f *FeatureFlags) SetDefaults() {
|
||||
@@ -93,6 +96,7 @@ func (f *FeatureFlags) SetDefaults() {
|
||||
f.CommandPalette = false
|
||||
f.AdvancedTextEditor = true
|
||||
f.CallsEnabled = true
|
||||
f.BoardsProduct = false
|
||||
}
|
||||
|
||||
func (f *FeatureFlags) Plugins() map[string]string {
|
||||
|
||||
@@ -82,14 +82,15 @@ type UserService interface {
|
||||
UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)
|
||||
GetUserByEmail(email string) (*model.User, *model.AppError)
|
||||
GetUserByUsername(username string) (*model.User, *model.AppError)
|
||||
GetUsersFromProfiles(options *model.UserGetOptions) ([]*model.User, *model.AppError)
|
||||
}
|
||||
|
||||
// TeamService provides team related utilities.
|
||||
//
|
||||
// The service shall be registered via app.TeamKey service key.
|
||||
type TeamService interface {
|
||||
GetMember(teamID, userID string) (*model.TeamMember, error)
|
||||
CreateMember(ctx *request.Context, teamID, userID string) (*model.TeamMember, error)
|
||||
GetMember(teamID, userID string) (*model.TeamMember, *model.AppError)
|
||||
CreateMember(ctx *request.Context, teamID, userID string) (*model.TeamMember, *model.AppError)
|
||||
}
|
||||
|
||||
// BotService is just a copy implementation of mattermost-plugin-api EnsureBot method.
|
||||
@@ -175,3 +176,10 @@ type LogService interface {
|
||||
type StoreService interface {
|
||||
GetMasterDB() *sql.DB
|
||||
}
|
||||
|
||||
// SystemService is the API for accessing the System service APIs.
|
||||
//
|
||||
// The service shall be registered via app.SystemKey service key.
|
||||
type SystemService interface {
|
||||
GetDiagnosticId() string
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user