Yimaru-BackEnd/internal/domain/custom_odds.go

70 lines
1.5 KiB
Go

package domain
import (
"encoding/json"
"time"
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
)
type CustomOdd struct {
ID int64
OddID int64
CompanyID int64
EventID string
RawOdds []json.RawMessage
CreatedAt time.Time
}
type CreateCustomOdd struct {
OddID int64
CompanyID int64
EventID string
RawOdds []json.RawMessage
}
type CustomOddFilter struct {
CompanyID ValidInt64
}
func ConvertCreateCustomOdd(odd CreateCustomOdd) (dbgen.InsertCustomOddParams, error) {
rawOddsBytes, err := json.Marshal(odd.RawOdds)
if err != nil {
return dbgen.InsertCustomOddParams{}, err
}
return dbgen.InsertCustomOddParams{
OddID: odd.OddID,
CompanyID: odd.CompanyID,
EventID: odd.EventID,
RawOdds: rawOddsBytes,
}, nil
}
func ConvertDBCustomOdd(dbCustomOdd dbgen.CustomOdd) (CustomOdd, error) {
var rawOdds []json.RawMessage
if err := json.Unmarshal(dbCustomOdd.RawOdds, &rawOdds); err != nil {
return CustomOdd{}, err
}
return CustomOdd{
ID: dbCustomOdd.ID,
OddID: dbCustomOdd.OddID,
CompanyID: dbCustomOdd.CompanyID,
EventID: dbCustomOdd.EventID,
RawOdds: rawOdds,
CreatedAt: dbCustomOdd.CreatedAt.Time,
}, nil
}
func ConvertDbCustomOdds(list []dbgen.CustomOdd) ([]CustomOdd, error) {
result := make([]CustomOdd, 0, len(list))
for _, item := range list {
convertedItem, err := ConvertDBCustomOdd(item)
if err != nil {
return nil, err
}
result = append(result, convertedItem)
}
return result, nil
}