80 lines
3.5 KiB
Go
80 lines
3.5 KiB
Go
package json
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/temp_models/db"
|
|
)
|
|
|
|
type Game struct {
|
|
UserID string `json:"userId"`
|
|
Release Release `json:"release"`
|
|
World World `json:"world"`
|
|
System System `json:"system"`
|
|
Modules []*Module `json:"modules"`
|
|
DemoMode bool `json:"demoMode"`
|
|
IdleLogout bool `json:"idleLogout"`
|
|
Addresses Addresses `json:"addresses"`
|
|
Files Files `json:"files"`
|
|
Options GameOptions `json:"options"`
|
|
ActiveUsers []string `json:"activeUsers"`
|
|
Paused bool `json:"paused"`
|
|
PackageWarnings map[string]PackageWarningsData `json:"packageWarnings"`
|
|
Packs []*Pack `json:"packs"`
|
|
Messages []*Message `json:"messages,omitempty"`
|
|
Combats []*Combat `json:"combats"`
|
|
CardDeck []*CardDeck `json:"cards"`
|
|
Users []*User `json:"users"`
|
|
Macros []*Macro `json:"macros"`
|
|
Folders []*WorldFolder `json:"folders"`
|
|
Items []*Item `json:"items"`
|
|
Settings []*Setting `json:"settings"`
|
|
Journals []*Journal `json:"journal"`
|
|
Tables []*Table `json:"tables"`
|
|
Playlists []*Playlist `json:"playlists"`
|
|
Scenes []*Scene `json:"scenes"`
|
|
Actors []*Actor `json:"actors"`
|
|
CoreUpdate CoreUpdate `json:"coreUpdate"`
|
|
SystemUpdate SystemUpdate `json:"systemUpdate"`
|
|
// Model Model `json:"model"`
|
|
// Template Template `json:"template"`
|
|
}
|
|
|
|
func (g *Game) ToDB(dest *db.Game) bool {
|
|
dest.UserID = g.UserID
|
|
dest.DemoMode = g.DemoMode
|
|
dest.IdleLogout = g.IdleLogout
|
|
dest.Paused = g.Paused
|
|
PackageWarningsToDB(&dest.PackageWarnings, g.PackageWarnings)
|
|
|
|
g.Addresses.ToDB(&dest.Addresses)
|
|
g.Files.ToDB(&dest.Files)
|
|
g.Release.ToDB(&dest.Release)
|
|
g.World.ToDB(&dest.World)
|
|
g.System.ToDB(&dest.System)
|
|
g.Options.ToDB(&dest.Options)
|
|
g.CoreUpdate.ToDB(&dest.CoreUpdate)
|
|
g.SystemUpdate.ToDB(&dest.SystemUpdate)
|
|
copy(dest.ActiveUsers, g.ActiveUsers)
|
|
|
|
wg := sync.WaitGroup{}
|
|
go CopySliceToDBParallel(&wg, &dest.Modules, g.Modules)
|
|
go CopySliceToDBParallel(&wg, &dest.Packs, g.Packs)
|
|
go CopySliceToDBParallel(&wg, &dest.Messages, g.Messages)
|
|
go CopySliceToDBParallel(&wg, &dest.Combats, g.Combats)
|
|
go CopySliceToDBParallel(&wg, &dest.CardDeck, g.CardDeck)
|
|
go CopySliceToDBParallel(&wg, &dest.Users, g.Users)
|
|
go CopySliceToDBParallel(&wg, &dest.Macros, g.Macros)
|
|
go CopySliceToDBParallel(&wg, &dest.Folders, g.Folders)
|
|
go CopySliceToDBParallel(&wg, &dest.Items, g.Items)
|
|
go CopySliceToDBParallel(&wg, &dest.Settings, g.Settings)
|
|
go CopySliceToDBParallel(&wg, &dest.Journals, g.Journals)
|
|
go CopySliceToDBParallel(&wg, &dest.Tables, g.Tables)
|
|
go CopySliceToDBParallel(&wg, &dest.Playlists, g.Playlists)
|
|
go CopySliceToDBParallel(&wg, &dest.Actors, g.Actors)
|
|
// go CopySliceToDBParallel(&wg, &dest.Scenes, g.Scenes)
|
|
wg.Wait()
|
|
|
|
return true
|
|
}
|