56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package veli
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
func (s *Service) AddProviders(ctx context.Context, req domain.ProviderRequest) (*domain.ProviderResponse, error) {
|
|
// 1. Prepare signature parameters
|
|
sigParams := map[string]any{
|
|
"brandId": req.BrandID,
|
|
}
|
|
|
|
// Optional fields
|
|
if req.Size > 0 {
|
|
sigParams["size"] = fmt.Sprintf("%d", req.Size)
|
|
} else {
|
|
sigParams["size"] = ""
|
|
}
|
|
|
|
if req.Page > 0 {
|
|
sigParams["page"] = fmt.Sprintf("%d", req.Page)
|
|
} else {
|
|
sigParams["page"] = ""
|
|
}
|
|
|
|
// 2. Call external API
|
|
var res domain.ProviderResponse
|
|
if err := s.client.post(ctx, "/game-lists/public/providers", req, sigParams, &res); err != nil {
|
|
return nil, fmt.Errorf("failed to fetch providers: %w", err)
|
|
}
|
|
|
|
// 3. Loop through fetched providers and insert into DB
|
|
for _, p := range res.Items {
|
|
createParams := dbgen.CreateVirtualGameProviderParams{
|
|
ProviderID: p.ProviderID,
|
|
ProviderName: p.ProviderName,
|
|
LogoDark: pgtype.Text{String: p.LogoForDark, Valid: true},
|
|
LogoLight: pgtype.Text{String: p.LogoForLight, Valid: true},
|
|
Enabled: true,
|
|
}
|
|
|
|
_, err := s.repo.CreateVirtualGameProvider(ctx, createParams)
|
|
if err != nil {
|
|
// Log error but continue with other providers
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return &res, nil
|
|
}
|