70 lines
1.5 KiB
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
|
|
}
|