package transport import ( "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/requests" "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/temp_models/db" "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/temp_models/json" "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/types" ) func (tr *FoundryTransport) FillDBWithFoundryData() { err := tr.InitSetupData() if err != nil { tr.ReadChan.Err() <- &types.FoundryError{Direction: types.WriterCode, Err: err, Type: types.DbCode} return } // idState, err := tr.Models.FoundryState.GetIdByType(db.SetupState) // if err != nil { // tr.ReadChan.Err() <- &types.FoundryError{Direction: types.WriterCode, Err: err, Type: types.DbCode} // return // } err = tr.InitWorldsData() if err != nil { tr.ReadChan.Err() <- &types.FoundryError{Direction: types.WriterCode, Err: err, Type: types.DbCode} return } } func (tr *FoundryTransport) InitSetupData() error { db.DeleteAll(tr.DB) db.DeleteAllSeq(tr.DB) return tr.InsertSetupToDB() } func (tr *FoundryTransport) InsertSetupToDB() error { msgJson, err := tr.GetJsonDataByType(requests.SetupPath) if err != nil { return err } foundryStateJson, err := json.ParseSetup(msgJson) if err != nil { return err } tr.Logger.Info("Setup data received") var foundryStateDb db.Setup foundryStateJson.ToDB(&foundryStateDb) err = foundryStateDb.Insert(tr.DB) if err != nil { return err } return nil } func (tr *FoundryTransport) InitWorldsData() error { worlds := []string{"kingmaker"} //TODO: get world name from database for i := range worlds { worldName := worlds[i] tr.InitWorldData(worldName) _, err := tr.Http.PostReturnToSetup() if err != nil { return err } } return nil } func (tr *FoundryTransport) InitWorldData(worldName string) error { tr.Logger.Debug("World name", "name", worldName) err := tr.LaunchWorld(worldName) if err != nil { return err } return tr.InsertGameToDB() } func (tr *FoundryTransport) InsertGameToDB() error { err := tr.ConnectToWorld() if err != nil { return err } msgJson, err := tr.GetJsonData("world") if err != nil { return err } tr.Logger.Info("Game data received") gameJson, err := json.ParseGame(msgJson) if err != nil { return err } var foundryStateDb db.Game gameJson.ToDB(&foundryStateDb) return foundryStateDb.Insert(tr.DB) }