// 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 }