package transport import ( "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/models/db" "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/models/json" "gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/requests" "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(idState) if err != nil { tr.ReadChan.Err() <- &types.FoundryError{Direction: types.WriterCode, Err: err, Type: types.DbCode} return } } func (tr *FoundryTransport) InitSetupData() error { tr.Models.FoundryState.DeleteAll() tr.Models.FoundryState.DeleteAllSeq() for k := range requests.PathToSetupState { err := tr.InsertJsonDataToDB(k) if err != nil { return err } } return nil } func (tr *FoundryTransport) InsertJsonDataToDB(statePath string) error { _, ok1 := requests.PathToSetupState[statePath] _, ok2 := requests.PathToWorldState[statePath] if !ok1 && !ok2 { return ErrorStateTypeNotExist } msgJson, err := tr.GetJsonData(statePath) if err != nil { return err } foundryStateJson, err := json.ParseSetupModel(msgJson) if err != nil { return err } foundryStateDb := foundryStateJson.GetFoundryStateDB(requests.PathToSetupState[statePath]) err = tr.Models.FoundryState.Insert(foundryStateDb) if err != nil { return err } return nil } func (tr *FoundryTransport) InitWorldsData(idState int64) error { worlds, err := tr.Models.FoundryState.GetWorlds(idState) if err != nil { return err } tr.Logger.Debug("Worlds", "len", len(worlds)) for i := range worlds { worldName := worlds[i].TextId 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 } for k := range requests.PathToWorldState { err := tr.InsertJsonDataToDB(k) if err != nil { return err } } return nil }