focalboard/mattermost-plugin/product/product.go
Doug Lauder e4231198d5
Multi product architecture (#3218)
* skeleton lifecycle

* bare minimum to satisfy mm-server import
2022-06-14 09:00:09 -06:00

113 lines
3.2 KiB
Go

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package product
import (
"errors"
"fmt"
"github.com/mattermost/mattermost-server/v6/app"
"github.com/mattermost/mattermost-server/v6/product"
)
var errServiceTypeAssert = errors.New("type assertion failed")
func init() {
app.RegisterProduct("boards", app.ProductManifest{
Initializer: newBoards,
Dependencies: map[app.ServiceKey]struct{}{},
})
}
type Boards struct {
teamService product.TeamService
channelService product.ChannelService
userService product.UserService
postService product.PostService
botService product.BotService
clusterService product.ClusterService
// configService product.ConfigService
logService product.LogService
licenseService product.LicenseService
// filestoreService product.FilestoreService
routerService product.RouterService
}
func newBoards(mmServer *app.Server, services map[app.ServiceKey]interface{}) (app.Product, error) {
boards := &Boards{}
for key, service := range services {
switch key {
case app.TeamKey:
teamService, ok := service.(product.TeamService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.teamService = teamService
case app.ChannelKey:
channelService, ok := service.(product.ChannelService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.channelService = channelService
case app.UserKey:
userService, ok := service.(product.UserService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.userService = userService
case app.PostKey:
postService, ok := service.(product.PostService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.postService = postService
case app.BotKey:
botService, ok := service.(product.BotService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.botService = botService
case app.ClusterKey:
clusterService, ok := service.(product.ClusterService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.clusterService = clusterService
case app.ConfigKey:
// TODO
case app.LogKey:
logService, ok := service.(product.LogService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.logService = logService
case app.LicenseKey:
licenseService, ok := service.(product.LicenseService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.licenseService = licenseService
case app.FilestoreKey:
// TODO
case app.RouterKey:
routerService, ok := service.(product.RouterService)
if !ok {
return nil, fmt.Errorf("invalid service key '%s': %w", key, errServiceTypeAssert)
}
boards.routerService = routerService
case app.HooksKey, app.PermissionsKey:
// not needed
}
}
return boards, nil
}
func (b *Boards) Start() error {
return nil
}
func (b *Boards) Stop() error {
return nil
}