package virtualgameservice import ( "context" "time" dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db" "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" ) // Remove a provider by provider_id func (s *service) RemoveProvider(ctx context.Context, providerID string) error { return s.repo.DeleteVirtualGameProvider(ctx, providerID) } // Fetch provider by provider_id func (s *service) GetProviderByID(ctx context.Context, providerID string) (dbgen.VirtualGameProvider, error) { return s.repo.GetVirtualGameProviderByID(ctx, providerID) } // List providers with pagination func (s *service) ListProviders(ctx context.Context, limit, offset int32) ([]domain.VirtualGameProvider, int64, error) { providers, err := s.repo.ListVirtualGameProviders(ctx, limit, offset) if err != nil { return nil, 0, err } total, err := s.repo.CountVirtualGameProviders(ctx) if err != nil { return nil, 0, err } // Convert []dbgen.VirtualGameProvider to []domain.VirtualGameProvider domainProviders := make([]domain.VirtualGameProvider, len(providers)) for i, p := range providers { var logoDark *string if p.LogoDark.Valid { logoDark = &p.LogoDark.String } var logoLight *string if p.LogoLight.Valid { logoLight = &p.LogoLight.String } domainProviders[i] = domain.VirtualGameProvider{ ProviderID: p.ProviderID, ProviderName: p.ProviderName, Enabled: p.Enabled, LogoDark: logoDark, LogoLight: logoLight, CreatedAt: p.CreatedAt.Time, UpdatedAt: &p.UpdatedAt.Time, // Add other fields as needed } } return domainProviders, total, nil } // Enable/Disable a provider func (s *service) SetProviderEnabled(ctx context.Context, providerID string, enabled bool) (*domain.VirtualGameProvider, error) { provider, err := s.repo.UpdateVirtualGameProviderEnabled(ctx, providerID, enabled) if err != nil { s.logger.Error("Failed to update provider enabled status", "provider_id", providerID, "enabled", enabled, "error", err) return nil, err } now := time.Now() provider.UpdatedAt.Time = now domainProvider := &domain.VirtualGameProvider{ ProviderID: provider.ProviderID, ProviderName: provider.ProviderName, Enabled: provider.Enabled, CreatedAt: provider.CreatedAt.Time, UpdatedAt: &provider.UpdatedAt.Time, // Add other fields as needed } return domainProvider, nil }