31 lines
711 B
Go
31 lines
711 B
Go
// Package logic is the admin application layer (popadmin ops over V3 data).
|
|
package logic
|
|
|
|
import (
|
|
"errors"
|
|
|
|
adminmodel "spark-server/internal/module/admin/model"
|
|
grouplogic "spark-server/internal/module/group/logic"
|
|
)
|
|
|
|
var ErrNotReady = errors.New("admin: repository not ready")
|
|
|
|
// Service orchestrates admin use-cases. SQL lives in model.Repo.
|
|
type Service struct {
|
|
repo *adminmodel.Repo
|
|
groups *grouplogic.Service
|
|
ids IDGen
|
|
}
|
|
|
|
type IDGen interface {
|
|
NextID() (int64, error)
|
|
}
|
|
|
|
func NewService(repo *adminmodel.Repo, groups *grouplogic.Service, ids IDGen) *Service {
|
|
return &Service{repo: repo, groups: groups, ids: ids}
|
|
}
|
|
|
|
func (s *Service) ready() bool {
|
|
return s != nil && s.repo != nil
|
|
}
|