NextZen-UserService/service/service.go

86 lines
2.0 KiB
Go

package service
import (
"github.com/KaySar12/NextZen-Common/external"
"github.com/KaySar12/NextZen-UserService/codegen/message_bus"
"github.com/KaySar12/NextZen-UserService/pkg/config"
"gorm.io/gorm"
)
var MyService Repository
type Repository interface {
Gateway() external.ManagementService
User() UserService
MessageBus() *message_bus.ClientWithResponses
Event() EventService
OMV() OMVService
Authentik() AuthentikService
OnePanel() OnePanelService
}
func NewService(db *gorm.DB, RuntimePath string) Repository {
gatewayManagement, err := external.NewManagementService(RuntimePath)
if err != nil {
panic(err)
}
return &store{
gateway: gatewayManagement,
user: NewUserService(db),
event: NewEventService(db),
omv: NewOMVService(),
authentik: NewAuthentikService(db),
onePanel: NewOnePanelService(),
}
}
type store struct {
gateway external.ManagementService
user UserService
event EventService
omv OMVService
authentik AuthentikService
onePanel OnePanelService
}
func (c *store) OnePanel() OnePanelService {
return c.onePanel
}
func (c *store) Event() EventService {
return c.event
}
func (c *store) Gateway() external.ManagementService {
return c.gateway
}
func (c *store) User() UserService {
return c.user
}
func (c *store) OMV() OMVService {
return c.omv
}
func (c *store) Authentik() AuthentikService {
return c.authentik
}
func (c *store) MessageBus() *message_bus.ClientWithResponses {
client, _ := message_bus.NewClientWithResponses("", func(c *message_bus.Client) error {
// error will never be returned, as we always want to return a client, even with wrong address,
// in order to avoid panic.
//
// If we don't avoid panic, message bus becomes a hard dependency, which is not what we want.
messageBusAddress, err := external.GetMessageBusAddress(config.CommonInfo.RuntimePath)
if err != nil {
c.Server = "message bus address not found"
return nil
}
c.Server = messageBusAddress
return nil
})
return client
}