64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package json
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/temp_models/db"
|
|
)
|
|
|
|
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].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.Add(1)
|
|
CopySliceToDB(dest, src)
|
|
wg.Done()
|
|
}
|