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) }) }