Files
Foundry-Scrapping-API/internal/foundry/models/json/utils.go

69 lines
1.3 KiB
Go

package json
import (
"errors"
"sync"
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/models/db"
)
var (
ErrorSetupMoreThanOne = errors.New("More than one setup data")
)
func OwnershipToDB(dest *[]db.OwnershipString, src map[string]int) {
*dest = make([]db.OwnershipString, len(src))
i := 0
for k, v := range src {
(*dest)[i].Key = k
(*dest)[i].Value = v
i++
}
}
func HotbarToDB(dest *[]db.UserHotbar, src map[int]string) {
*dest = make([]db.UserHotbar, len(src))
i := 0
for k, v := range src {
(*dest)[i].Key = k
(*dest)[i].Value = v
i++
}
}
func PackageWarningsToDB(dest *[]*db.PackageWarning, src map[string]PackageWarningsData) {
*dest = make([]*db.PackageWarning, len(src))
i := 0
for k, v := range src {
(*dest)[i] = &db.PackageWarning{Key: k}
v.ToDB(&(*dest)[i].Value)
i++
}
}
type CastableToDB[destType any] interface {
ToDB(*destType) bool
}
func CopySliceToDB[destType any, srcType CastableToDB[destType]](dest *[]destType, src []srcType) bool {
if dest == nil {
return false
}
*dest = make([]destType, len(src))
for i := range src {
src[i].ToDB(&(*dest)[i])
}
return true
}
func CopySliceToDBParallel[destType any, srcType CastableToDB[destType]](wg *sync.WaitGroup, dest *[]destType, src []srcType) {
wg.Go(func() {
CopySliceToDB(dest, src)
})
}