Add system service for Focalboard multi product architecture (#20574)

* add system service; add GetUsers to users service
* add feature flag
Этот коммит содержится в:
Doug Lauder
2022-07-05 08:13:02 -04:00
коммит произвёл GitHub
родитель 717a4d04a9
Коммит 9cbe7dac09
5 изменённых файлов: 27 добавлений и 4 удалений

Просмотреть файл

@@ -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
}