Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }