mirror of
https://github.com/KaySar12/NextZen-UserService.git
synced 2025-03-15 23:25:35 +07:00
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/IceWhaleTech/CasaOS-Common/external"
|
|
"github.com/IceWhaleTech/CasaOS-UserService/codegen/message_bus"
|
|
"github.com/IceWhaleTech/CasaOS-UserService/pkg/config"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var MyService Repository
|
|
|
|
type Repository interface {
|
|
Gateway() external.ManagementService
|
|
User() UserService
|
|
MessageBus() *message_bus.ClientWithResponses
|
|
Event() EventService
|
|
}
|
|
|
|
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),
|
|
}
|
|
}
|
|
|
|
type store struct {
|
|
gateway external.ManagementService
|
|
user UserService
|
|
event EventService
|
|
}
|
|
|
|
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) 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
|
|
}
|