// Package betasettings is where the beta server, the Beta Tester role and the // servers that opted in to beta features are read and changed. The bot polls // the same tables, so a change here reaches the beta gate within 30 seconds. package betasettings import ( "context" "velox-bot/internal/db/repos/settingsrepo" ) type Service struct { settings *settingsrepo.Repo } func New(settings *settingsrepo.Repo) *Service { return &Service{settings: settings} } // Get returns the beta server and role as ID strings ("" when not set). func (s *Service) Get(ctx context.Context) (guildID, roleID string, err error) { return s.settings.GetBetaSettings(ctx) } func (s *Service) SetServer(ctx context.Context, guildID, roleID, updatedBy int64) error { return s.settings.SetBetaServer(ctx, guildID, roleID, updatedBy) } func (s *Service) OptedIn(ctx context.Context) ([]string, error) { return s.settings.ListBetaGuilds(ctx) } func (s *Service) IsOptedIn(ctx context.Context, guildID int64) (bool, error) { return s.settings.IsBetaGuild(ctx, guildID) } func (s *Service) SetOptedIn(ctx context.Context, guildID, by int64, on bool) error { return s.settings.SetBetaGuild(ctx, guildID, by, on) }