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) {
|
func (a *App) UpdateExpiredDNDStatuses() ([]*model.Status, error) {
|
||||||
return a.Srv().Store.Status().UpdateExpiredDNDStatuses()
|
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"
|
HooksKey ServiceKey = "hooks"
|
||||||
KVStoreKey ServiceKey = "kvstore"
|
KVStoreKey ServiceKey = "kvstore"
|
||||||
StoreKey ServiceKey = "storekey"
|
StoreKey ServiceKey = "storekey"
|
||||||
|
SystemKey ServiceKey = "systemkey"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
@@ -404,6 +405,7 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
CloudKey: &cloudWrapper{cloud: s.Cloud},
|
CloudKey: &cloudWrapper{cloud: s.Cloud},
|
||||||
KVStoreKey: &kvStoreWrapper{srv: s},
|
KVStoreKey: &kvStoreWrapper{srv: s},
|
||||||
StoreKey: store.NewStoreServiceAdapter(s.Store),
|
StoreKey: store.NewStoreServiceAdapter(s.Store),
|
||||||
|
SystemKey: &systemServiceAdapter{server: s},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 8: Initialize products.
|
// Step 8: Initialize products.
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ type teamServiceWrapper struct {
|
|||||||
app AppIface
|
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)
|
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)
|
return w.app.AddTeamMember(ctx, teamID, userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ type FeatureFlags struct {
|
|||||||
CommandPalette bool
|
CommandPalette bool
|
||||||
|
|
||||||
AdvancedTextEditor bool
|
AdvancedTextEditor bool
|
||||||
|
|
||||||
|
// Enable Boards as a product (multi-product architecture)
|
||||||
|
BoardsProduct bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FeatureFlags) SetDefaults() {
|
func (f *FeatureFlags) SetDefaults() {
|
||||||
@@ -93,6 +96,7 @@ func (f *FeatureFlags) SetDefaults() {
|
|||||||
f.CommandPalette = false
|
f.CommandPalette = false
|
||||||
f.AdvancedTextEditor = true
|
f.AdvancedTextEditor = true
|
||||||
f.CallsEnabled = true
|
f.CallsEnabled = true
|
||||||
|
f.BoardsProduct = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FeatureFlags) Plugins() map[string]string {
|
func (f *FeatureFlags) Plugins() map[string]string {
|
||||||
|
|||||||
@@ -82,14 +82,15 @@ type UserService interface {
|
|||||||
UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)
|
UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)
|
||||||
GetUserByEmail(email string) (*model.User, *model.AppError)
|
GetUserByEmail(email string) (*model.User, *model.AppError)
|
||||||
GetUserByUsername(username 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.
|
// TeamService provides team related utilities.
|
||||||
//
|
//
|
||||||
// The service shall be registered via app.TeamKey service key.
|
// The service shall be registered via app.TeamKey service key.
|
||||||
type TeamService interface {
|
type TeamService interface {
|
||||||
GetMember(teamID, userID string) (*model.TeamMember, error)
|
GetMember(teamID, userID string) (*model.TeamMember, *model.AppError)
|
||||||
CreateMember(ctx *request.Context, teamID, userID string) (*model.TeamMember, error)
|
CreateMember(ctx *request.Context, teamID, userID string) (*model.TeamMember, *model.AppError)
|
||||||
}
|
}
|
||||||
|
|
||||||
// BotService is just a copy implementation of mattermost-plugin-api EnsureBot method.
|
// BotService is just a copy implementation of mattermost-plugin-api EnsureBot method.
|
||||||
@@ -175,3 +176,10 @@ type LogService interface {
|
|||||||
type StoreService interface {
|
type StoreService interface {
|
||||||
GetMasterDB() *sql.DB
|
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