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) {
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
}