84 lines
1.4 KiB
Go
Raw Normal View History

2025-06-10 17:50:46 +08:00
package mods
import (
"context"
"ifms/internal/mods/digital"
"ifms/internal/mods/rbac"
2025-06-11 00:12:16 +08:00
"ifms/internal/mods/autocontrol"
"github.com/gin-gonic/gin"
"github.com/google/wire"
2025-06-10 17:50:46 +08:00
)
const (
apiPrefix = "/api/"
)
// Collection of wire providers
var Set = wire.NewSet(
wire.Struct(new(Mods), "*"),
rbac.Set,
digital.Set,
2025-06-11 00:12:16 +08:00
autocontrol.Set,
2025-06-10 17:50:46 +08:00
)
type Mods struct {
2025-06-11 00:12:16 +08:00
RBAC *rbac.RBAC
DIGITAL *digital.DIGITAL
AutoControl *autocontrol.AutoControl
2025-06-10 17:50:46 +08:00
}
func (a *Mods) Init(ctx context.Context) error {
if err := a.RBAC.Init(ctx); err != nil {
return err
}
if err := a.DIGITAL.Init(ctx); err != nil {
return err
}
2025-06-11 00:12:16 +08:00
if err := a.AutoControl.Init(ctx); err != nil {
return err
}
2025-06-10 17:50:46 +08:00
return nil
}
func (a *Mods) RouterPrefixes() []string {
return []string{
apiPrefix,
}
}
func (a *Mods) RegisterRouters(ctx context.Context, e *gin.Engine) error {
gAPI := e.Group(apiPrefix)
v1 := gAPI.Group("v1")
if err := a.RBAC.RegisterV1Routers(ctx, v1); err != nil {
return err
}
if err := a.DIGITAL.RegisterV1Routers(ctx, v1); err != nil {
return err
}
2025-06-11 00:12:16 +08:00
if err := a.AutoControl.RegisterV1Routers(ctx, v1); err != nil {
return err
}
2025-06-10 17:50:46 +08:00
return nil
}
func (a *Mods) Release(ctx context.Context) error {
if err := a.RBAC.Release(ctx); err != nil {
return err
}
if err := a.DIGITAL.Release(ctx); err != nil {
return err
}
2025-06-11 00:12:16 +08:00
if err := a.AutoControl.Release(
ctx); err != nil {
return err
}
2025-06-10 17:50:46 +08:00
return nil
}