public async Task <ReplaceOneResult> HandoffSaveAsync(ISerializable obj) { IDBObject saveme = obj.GetDBObject(); try { if (saveme.ModelType == ModelTypes.ShipModel) { return(await _handedOffShips.ReplaceOneAsync(Builders <ShipModel> .Filter.Eq(s => s.Id, saveme.Id), (ShipModel)saveme, new UpdateOptions { IsUpsert = true })); } else if (saveme.ModelType == ModelTypes.PlayerModel) { return(await _handedOffPlayers.ReplaceOneAsync(Builders <PlayerModel> .Filter.Eq(s => s.Id, saveme.Id), (PlayerModel)saveme, new UpdateOptions { IsUpsert = true })); } else { throw new Exception("Error: Handoff serialization not available for objects of type " + saveme.ModelType); } } catch (Exception e) { ConsoleManager.WriteLine("Exception in " + this + ": " + e.Message, ConsoleMessageType.Error); ConsoleManager.WriteLine(e.StackTrace, ConsoleMessageType.Error); return(ReplaceOneResult.Unacknowledged.Instance); } }
public virtual async Task <ReplaceOneResult> SaveAsync(ISerializable obj) { IDBObject saveme = obj.GetDBObject(); try { if (saveme.ModelType == ModelTypes.AreaModel) { return(await _areaC.ReplaceOneAsync(Builders <AreaModel> .Filter.Eq(s => s.Id, saveme.Id), (AreaModel)saveme, new UpdateOptions { IsUpsert = true })); } else if (saveme.ModelType == ModelTypes.ShipModel) { return(await _shipC.ReplaceOneAsync(Builders <ShipModel> .Filter.Eq(s => s.Id, saveme.Id), (ShipModel)saveme, new UpdateOptions { IsUpsert = true })); } else if ((saveme.ModelType == ModelTypes.PlayerModel)) { return(await _playerC.ReplaceOneAsync(Builders <PlayerModel> .Filter.Eq(s => s.Id, saveme.Id), (PlayerModel)saveme, new UpdateOptions { IsUpsert = true })); } else if ((saveme.ModelType == ModelTypes.AccountModel)) { return(await _accountC.ReplaceOneAsync(Builders <AccountModel> .Filter.Eq(s => s.Id, saveme.Id), (AccountModel)saveme, new UpdateOptions { IsUpsert = true })); } else if ((saveme.ModelType == ModelTypes.PlanetLayout)) { return(await _layoutC.ReplaceOneAsync( Builders <PlanetLayout> .Filter.Eq(s => s.LayoutName, ((PlanetLayout)saveme).LayoutName), (PlanetLayout)saveme, new UpdateOptions { IsUpsert = true })); } else if (saveme.ModelType == ModelTypes.ShipStats) { return(await _shipStatsC.ReplaceOneAsync( Builders <ShipStats> .Filter.Eq(s => s.ShipType, ((ShipStats)saveme).ShipType), (ShipStats)saveme, new UpdateOptions { IsUpsert = true })); } else if (saveme.ModelType == ModelTypes.StructureModel) { return(await _structureC.ReplaceOneAsync(Builders <IStructureModel> .Filter.Eq <int>("_id", saveme.Id), (IStructureModel)saveme, new UpdateOptions { IsUpsert = true })); } else if (saveme.ModelType == ModelTypes.TeamModel) { return(await _teamC.ReplaceOneAsync(Builders <TeamModel> .Filter.Eq(s => s.Id, saveme.Id), (TeamModel)saveme, new UpdateOptions { IsUpsert = true })); } else if (saveme.ModelType == ModelTypes.TradeRecordModel) { return(await _tradeRecordModelC.ReplaceOneAsync(Builders <TradeRecordModel> .Filter.Eq(s => s.Id, saveme.Id), (TradeRecordModel)saveme, new UpdateOptions { IsUpsert = true })); } else { throw new Exception("Error: Serialization not available for objects of type " + saveme.ModelType); } } catch (Exception e) { ConsoleManager.WriteLine("Exception in " + this + ": " + e.Message, ConsoleMessageType.Error); ConsoleManager.WriteLine(e.StackTrace, ConsoleMessageType.Error); return(ReplaceOneResult.Unacknowledged.Instance); } }