public bool RemoveContact(string id)
        {
            IMongoQuery    query  = Query.EQ("_id", id);
            SafeModeResult result = _contacts.Remove(query);

            return(result.DocumentsAffected == 1);
        }
예제 #2
0
        /// <summary>
        /// Inserts a new user/role association into the db.
        /// </summary>
        /// <param name="userRole">The user/role association to add.</param>
        /// <returns>true if the user/role is valid and successfully added.</returns>
        public bool Insert(UsersInRoles userRole)
        {
            if (userRole.Validate())
            {
                userRole.Username = userRole.Username.ToLower();
                userRole.Role     = userRole.Role.ToLower();

                // search for a pre-exisiting association
                bool found = (from ur in UserRoles.AsQueryable <UsersInRoles>()
                              where ur.Username == userRole.Username && ur.Role == userRole.Role
                              select ur).Any();

                if (!found)
                {
                    userRole.UserRoleID = ObjectId.GenerateNewId();
                    SafeModeResult result = UserRoles.Insert(userRole, SafeMode.True);
                    return(result.Ok);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
        public static void CreateIndex(string connectionString, string databaseName, string collectionName, params string[] keyNames)
        {
            SafeModeResult result = new SafeModeResult();

            if (null == keyNames)
            {
                return;
            }

            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);



            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                if (!myCollection.IndexExists(keyNames))
                {
                    myCollection.EnsureIndex(keyNames);
                }
            }
        }
예제 #4
0
 void EnsureResultIsGood(SafeModeResult safeModeResult, string message, params object[] objs)
 {
     if (!safeModeResult.Ok)
     {
         throw new ApplicationException(string.Format("The following operation didn't suceed: {0}", string.Format(message, objs)));
     }
 }
예제 #5
0
 /// <summary>
 /// Inserts a new user data in the db....isn't being used
 /// </summary>
 /// <param name="user">User info. to be added</param>
 /// <returns>Result of the operation, true if was ok</returns>
 public bool Insert(User user)
 {
     if (user.Validate())
     {
         SafeModeResult result = Users.Insert(user, SafeMode.True);
         return(result.Ok);
     }
     else
     {
         return(false);
     }
 }
        public void updateInfo(info _info)
        {
            IMongoQuery  query  = Query.EQ("info_id", _info.info_id);
            IMongoUpdate update = Update

                                  .Set("firstname", _info.firstname)

                                  .Set("lastname", _info.lastname)
                                  .Set("age", _info.age);
            SafeModeResult result = _infos.Update(query, update);
            // return result.UpdatedExisting;
        }
예제 #7
0
 /// <summary>
 /// Updates the info of a webEvent...like a chnage of name, but isn't being used in the app...
 /// </summary>
 /// <param name="webEvent">WebEvent to be updated</param>
 /// <returns>Result of the operation, true if was ok</returns>
 public bool Update(WebEvent webEvent)
 {
     if (webEvent.Validate())
     {
         SafeModeResult result = WebEvents.Save(webEvent, SafeMode.True);
         return(result.Ok);
     }
     else
     {
         return(false);
     }
 }
예제 #8
0
 /// <summary>
 /// Inserts a new spot into the db.
 /// </summary>
 /// <param name="spot">The spot to add.</param>
 /// <returns>true if the spot is valid and successfully added.</returns>
 public bool Insert(Spot spot)
 {
     if (spot.Validate())
     {
         spot.SpotID = ObjectId.GenerateNewId();
         SafeModeResult result = Spots.Insert(spot);
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #9
0
 /// <summary>
 /// Updates the info of a user...like a change of name, but isn't being used in the app...
 /// </summary>
 /// <param name="user">User to be updated</param>
 /// <returns>Result of the operation, true if was ok</returns>
 public bool Update(User user)
 {
     if (user.Validate())
     {
         user.LastActivityDate = DateTime.UtcNow;
         SafeModeResult result = Users.Save(user, SafeMode.True);
         return(result.Ok);
     }
     else
     {
         return(false);
     }
 }
예제 #10
0
 /// <summary>
 /// Inserts a new role into the db.
 /// </summary>
 /// <param name="role">The role to add.</param>
 /// <returns>true if the role is valid and successfully added.</returns>
 public bool Insert(Role role)
 {
     if (role.Validate())
     {
         role.RoleID = ObjectId.GenerateNewId();
         SafeModeResult result = Roles.Insert(role);
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #11
0
        public int Update(T instance)
        {
            int resultCode = 0;

            Execute(delegate(MongoCollection <T> mongoCollection)
            {
                Func <T, string> _getId = new Func <T, string>(GetObjectId);
                QueryDocument query     = new QueryDocument(new BsonElement("_id", BsonValue.Create(_getId(instance))));
                SafeModeResult result   = mongoCollection.Update(query,
                                                                 new UpdateDocument(BsonExtensionMethods.ToBsonDocument <T>(instance)));
                resultCode = 1;
            });
            return(resultCode);
        }
        public bool UpdateContact(string id, Contact item)
        {
            IMongoQuery query = Query.EQ("_id", id);

            item.LastModified = DateTime.UtcNow;
            IMongoUpdate update = Update
                                  .Set("Email", item.Email)
                                  .Set("LastModified", DateTime.UtcNow)
                                  .Set("Name", item.Name)
                                  .Set("Phone", item.Phone);
            SafeModeResult result = _contacts.Update(query, update);

            return(result.UpdatedExisting);
        }
예제 #13
0
        /// <summary>
        /// Inserts a new role into the db.
        /// </summary>
        /// <param name="role">The role to add.</param>
        /// <returns>true if the role is valid and successfully added.</returns>
        public bool Insert(Parcel parcel)
        {
            if (parcel.Validate())
            {
                parcel.ParcelID = ObjectId.GenerateNewId();
                SafeModeResult result = Parcels.Insert(parcel);

                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #14
0
        void EnsureResultIsGood(SafeModeResult safeModeResult, string message, int expectedNumberOfAffectedDocuments, params object[] objs)
        {
            if (!safeModeResult.Ok)
            {
                var exceptionMessage = string.Format("Tried to {0}, but apparently the operation didn't succeed.",
                                                     string.Format(message, objs));

                throw new MongoSafeModeException(exceptionMessage, safeModeResult);
            }

            if (safeModeResult.DocumentsAffected != expectedNumberOfAffectedDocuments)
            {
                var exceptionMessage = string.Format("Tried to {0}, but documents affected != {1}.",
                                                     string.Format(message, objs),
                                                     expectedNumberOfAffectedDocuments);

                throw new MongoSafeModeException(exceptionMessage, safeModeResult);
            }
        }
예제 #15
0
        static void Main(string[] args)
        {
            var           connectionString = "mongodb://localhost/?safe=true";
            MongoServer   server           = MongoServer.Create(connectionString);
            MongoDatabase database         = server.GetDatabase("rastreabilidade");

            MongoCollection <BsonDocument> modulo = database.GetCollection <BsonDocument>("modulo");
            MongoCollection tabela = database.GetCollection <Tabela>("tabela");

            List <Modulo> modulos = new List <Modulo>();

            //string name;
            string       s1 = "TESTEEEEEEEEEEEE"; string s2 = "exemplo1"; string s3 = "exemplo2";
            BsonDocument mod = new BsonDocument {
                { "Modulo", s1 }, { "Tabelas", s2 }
            };
            // modulo.Insert<BsonDocument> (mod);

            IMongoQuery    query       = Query.EQ("Modulo", "fofa=)");
            IMongoUpdate   update      = Update.Set("Modulo", "tata");
            SafeModeResult updatedBook = modulo.Update(query, update);

            /*foreach (Modulo mod in modulo.FindAll()) {
             *  name = mod.Nome;
             *  Console.WriteLine("Nome: ", name);
             *  modulos.Add(mod);
             *  Console.WriteLine("Modulo: ", mod);
             * }*/

            /*var query = Query.EQ("Nome", id);
            *  entity = collection.FindOne(query);
            *
            *  var update = Update.Set("Name", "Harry");
            *  collection.Update(query, update);*/


            // var query = modulo.AsQueryable<Modulo>().Where(m => m.Nome == "TESTEEEEEEEEEEEE").Select(m => m);

            //Console.WriteLine(query);

            //Modulo mod = new Modulo { Nome = "TESTEEEEEEEEEEEE"};
            //modulo.Insert<Modulo> (mod);
        }
예제 #16
0
        public static SafeModeResult InsertOne <T>(string connectionString, string databaseName, string collectionName, T entity)
        {
            SafeModeResult result = new SafeModeResult();

            if (null == entity)
            {
                return(null);
            }
            MongoServer server = MongoServer.Create(connectionString);
            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);

            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                result = myCollection.Insert(entity);
            }
            return(result);
        }
예제 #17
0
        public bool blnRemoveDocument(string strCollectionName, IMongoQuery query)
        {
            bool blnReturn = false;

            try
            {
                if (!(string.IsNullOrWhiteSpace(strMongoDataBase)) && !(string.IsNullOrWhiteSpace(strCollectionName)))
                {
                    SafeModeResult objResult = objMdbServer.GetDatabase(strMongoDataBase).GetCollection(strCollectionName).Remove(query, RemoveFlags.Single, SafeMode.True);
                    blnReturn = objResult.Ok;
                }
            }
            catch (Exception exception)
            {
                Exception objEx = exception;
                blnReturn = false;
                clsLog.blnLogError("clsMongoDBEngine", "blnRemoveDocument", "Error Removing Dcoument : ", objEx.ToString());
            }
            return(blnReturn);
        }
예제 #18
0
        /// <summary>
        /// This method deletes a burrito.
        /// </summary>
        /// <param name="id">Unique ID of the burrito to delete</param>
        /// <returns>Success/Failure</returns>
        public Boolean deleteBurrito(Int32 id)
        {
            dLog.Info("Entering method deleteBurrito | ID:" + id);
            Boolean result = false;

            try
            {
                MongoServer   server = MongoServer.Create();
                MongoDatabase db     = server.GetDatabase("neatoBurrito");
                //MongoCredentials credentials = new MongoCredentials("username", "password");
                //MongoDatabase salaries = server.GetDatabase("salaries", credentials);

                using (server.RequestStart(db))
                {
                    MongoCollection <BsonDocument> coll = db.GetCollection("burrito");
                    var query = new QueryDocument("id", id);

                    SafeModeResult wr = coll.Remove(query, SafeMode.True);

                    dLog.Debug("SafeModeResult: " + wr.Ok);
                    if (wr.LastErrorMessage == null && wr.Ok)
                    {
                        result = true;
                    }
                    else
                    {
                        dLog.Debug("SafeModeResult: " + wr.LastErrorMessage);
                    }
                }
            }
            catch (Exception e2)
            {
                dLog.Error("Exception in deleteBurrito: " + e2.Message);
            }
            finally
            {
                //using statement above already calls RequestDone()
            }

            return(result);
        }
예제 #19
0
        public int CleanOldData(StoragePath from, TimeSpan savePeriod)
        {
            int ret = 0;

            if (!SupportHistory)
            {
                throw new NotImplementedException();
            }

            if (from == null || String.IsNullOrEmpty(from.CategoryPath))
            {
                foreach (var colname in _db.GetCollectionNames())
                {
                    MongoCollection col = _db.GetCollection(colname);

                    var q = Query.And(Query.LT("&timings.&actualTill", DateTime.Now - savePeriod));

                    SafeModeResult smr = col.Remove(q, SafeMode.True);

                    if (smr != null)
                    {
                        if (smr.Ok)
                        {
                            ret = (int)smr.DocumentsAffected;
                        }
                        else
                        {
                            throw new Exception(smr.ErrorMessage);
                        }
                    }
                    else
                    {
                        ret = 1;
                    }
                }
            }
            else if (String.IsNullOrEmpty(from.ObjectId) && String.IsNullOrEmpty(from.QueryString))
            {
                MongoCollection col = _db.GetCollection(from.CategoryPath);
                var             q   = Query.And(Query.LT("&timings.&actualTill", DateTime.Now - savePeriod));

                SafeModeResult smr = col.Remove(q, SafeMode.True);
                if (smr != null)
                {
                    if (smr.Ok)
                    {
                        ret = (int )smr.DocumentsAffected;
                    }
                    else
                    {
                        throw new Exception(smr.ErrorMessage);
                    }
                }
                else
                {
                    ret = 1;
                }
            }
            else if (String.IsNullOrEmpty(from.ObjectId))
            {
                MongoCollection col     = _db.GetCollection(from.CategoryPath);
                BsonDocument    bdquery = HelperJsonToBson(from.QueryString);

                var q = Query.And(new QueryComplete(bdquery), Query.LT("&timings.&actualTill", DateTime.Now - savePeriod));

                SafeModeResult smr = col.Remove(q, SafeMode.True);

                if (smr != null)
                {
                    if (smr.Ok)
                    {
                        ret = (int)smr.DocumentsAffected;
                    }
                    else
                    {
                        throw new Exception(smr.ErrorMessage);
                    }
                }
                else
                {
                    ret = 1;
                }
            }
            else if (String.IsNullOrEmpty(from.QueryString))
            {
                throw new InvalidOperationException();
            }
            else
            {
                throw new ArgumentException("Storage path can't contain both query string and obid");
            }
            return(ret);
        }
예제 #20
0
        /// <summary>
        /// This method stores a employee.
        /// </summary>
        /// <param name="e">The employee object to store</param>
        /// <returns>Success/Failure</returns>
        public Boolean storeEmployee(Employee e)
        {
            dLog.Info("Entering method storeEmployee | ID: " + e.id);
            Boolean result = false;

            try
            {
                MongoServer   server = MongoServer.Create();
                MongoDatabase db     = server.GetDatabase("neatoBurrito");
                //MongoCredentials credentials = new MongoCredentials("username", "password");
                //MongoDatabase salaries = server.GetDatabase("salaries", credentials);

                using (server.RequestStart(db))
                {
                    MongoCollection <BsonDocument> coll = db.GetCollection("employee");
                    var query = new QueryDocument("id", e.id);

                    dLog.Debug("Finding if employee exists");
                    BsonDocument myDoc = coll.FindOne(query);

                    query.Add("firstName", e.firstName);
                    query.Add("isManager", e.isManager);
                    query.Add("lastName", e.lastName);

                    //ensure we were passed a valid object before attempting to write
                    if (myDoc == null)
                    {
                        dLog.Debug("Inserting employee");
                        coll.Insert(query);

                        result = true;
                    }
                    else
                    {
                        var update = new UpdateDocument();
                        update.Add(query.ToBsonDocument());
                        dLog.Debug("Updating employee");
                        dLog.Debug("myDoc: " + myDoc.ToString());
                        dLog.Debug("update Query: " + update.ToString());

                        SafeModeResult wr = coll.Update(new QueryDocument("id", e.id), update, SafeMode.True);

                        dLog.Debug("SafeModeResult: " + wr.Ok);
                        if (wr.LastErrorMessage == null && wr.Ok)
                        {
                            result = true;
                        }
                        else
                        {
                            dLog.Debug("SafeModeResult: " + wr.LastErrorMessage);
                        }
                    }
                }
            }
            catch (Exception e2)
            {
                dLog.Error("Exception in storeEmployee: " + e2.Message);
            }
            finally
            {
                //using statement above already calls RequestDone()
            }

            return(result);
        }
예제 #21
0
        /// <summary>
        /// This method stores a order.
        /// </summary>
        /// <param name="o">The order object to store</param>
        /// <returns>Success/Failure</returns>
        public Boolean storeOrder(Order o)
        {
            dLog.Info("Entering method storeOrder | ID: " + o.id);
            Boolean result = false;

            try
            {
                MongoServer   server = MongoServer.Create();
                MongoDatabase db     = server.GetDatabase("neatoBurrito");
                //MongoCredentials credentials = new MongoCredentials("username", "password");
                //MongoDatabase salaries = server.GetDatabase("salaries", credentials);

                using (server.RequestStart(db))
                {
                    MongoCollection <BsonDocument> coll = db.GetCollection("order");
                    var query = new QueryDocument("id", o.id);

                    dLog.Debug("Finding if order exists");
                    BsonDocument myDoc = coll.FindOne(query);

                    query.Add("isComplete", o.isComplete);
                    query.Add("isSubmitted", o.isSubmitted);
                    query.Add("orderDate", o.orderDate);
                    query.Add("totalCost", o.totalCost.ToString());

                    //ensure we were passed a valid object before attempting to write
                    if (myDoc == null)
                    {
                        dLog.Debug("Inserting order");
                        coll.Insert(query);

                        result = true;
                    }
                    else
                    {
                        var update = new UpdateDocument();
                        update.Add(query.ToBsonDocument());
                        dLog.Debug("Updating order");
                        dLog.Debug("myDoc: " + myDoc.ToString());
                        dLog.Debug("update Query: " + update.ToString());

                        SafeModeResult wr = coll.Update(new QueryDocument("id", o.id), update, SafeMode.True);

                        dLog.Debug("SafeModeResult: " + wr.Ok);
                        if (wr.LastErrorMessage == null && wr.Ok)
                        {
                            result = true;
                        }
                        else
                        {
                            dLog.Debug("SafeModeResult: " + wr.LastErrorMessage);
                        }
                    }

                    //now insert the burritos
                    if (result)
                    {
                        dLog.Debug("Trying to insert " + o.burritos.Count + " burritos");

                        var index = 0;
                        foreach (Burrito b in o.burritos)
                        {
                            b.orderID = o.id;

                            dLog.Debug("Set order ID " + o.id + " for burrito: " + index);
                            if (b.validate())
                            {
                                dLog.Debug("Storing burrito: " + index);
                                result = burritoSvc.storeBurrito(b);
                            }
                            index++;
                        }
                    }
                }
            }
            catch (Exception e2)
            {
                dLog.Error("Exception in storeBurrito: " + e2.Message);
            }
            finally
            {
                //using statement above already calls RequestDone()
            }

            return(result);
        }
예제 #22
0
 public void InsertWebPage(WebPage page)
 {
     MongoCollection <WebPage> collection = mongo_database.GetCollection <WebPage>("webpages");
     SafeModeResult            smr        = collection.Insert <WebPage>(page);
 }
예제 #23
0
        internal SafeModeResult SendMessage(
            MongoRequestMessage message,
            SafeMode safeMode
            )
        {
            if (state == MongoConnectionState.Closed)
            {
                throw new InvalidOperationException("Connection is closed");
            }
            lock (connectionLock) {
                message.WriteToBuffer();
                CommandDocument safeModeCommand = null;
                if (safeMode.Enabled)
                {
                    safeModeCommand = new CommandDocument {
                        { "getlasterror", 1 }, // use all lowercase for backward compatibility
                        { "fsync", true, safeMode.FSync },
                        { "w", safeMode.W, safeMode.W > 1 },
                        { "wtimeout", (int)safeMode.WTimeout.TotalMilliseconds, safeMode.W > 1 && safeMode.WTimeout != TimeSpan.Zero }
                    };
                    using (
                        var getLastErrorMessage = new MongoQueryMessage(
                            message.Server,
                            "admin.$cmd",  // collectionFullName
                            QueryFlags.None,
                            0,             // numberToSkip
                            1,             // numberToReturn
                            safeModeCommand,
                            null,          // fields
                            message.Buffer // piggy back on network transmission for message
                            )
                        ) {
                        getLastErrorMessage.WriteToBuffer();
                    }
                }

                try {
                    var networkStream = GetNetworkStream();
                    networkStream.WriteTimeout = (int)message.Server.Settings.SocketTimeout.TotalMilliseconds;
                    message.Buffer.WriteTo(networkStream);
                    messageCounter++;
                } catch (Exception ex) {
                    HandleException(ex);
                    throw;
                }

                SafeModeResult safeModeResult = null;
                if (safeMode.Enabled)
                {
                    var replyMessage     = ReceiveMessage <BsonDocument>(message.Server);
                    var safeModeResponse = replyMessage.Documents[0];
                    safeModeResult = new SafeModeResult();
                    safeModeResult.Initialize(safeModeCommand, safeModeResponse);

                    if (!safeModeResult.Ok)
                    {
                        var errorMessage = string.Format("Safemode detected an error: {0} (response: {1})", safeModeResult.ErrorMessage, safeModeResponse.ToJson());
                        throw new MongoSafeModeException(errorMessage, safeModeResult);
                    }
                    if (safeModeResult.HasLastErrorMessage)
                    {
                        var errorMessage = string.Format("Safemode detected an error: {0} (response: {1})", safeModeResult.LastErrorMessage, safeModeResponse.ToJson());
                        throw new MongoSafeModeException(errorMessage, safeModeResult);
                    }
                }

                return(safeModeResult);
            }
        }
 private void btnDelete_Click(object sender, RoutedEventArgs e)
 {
     IMongoQuery    query  = Query.EQ("info_id", _info.info_id);
     SafeModeResult result = _infos.Remove(query); bindgrid();
 }
예제 #25
0
        /// <summary>
        /// Removes an item from the database completely.
        /// </summary>
        /// <param name="itemDefinition">Used to identify the particular item</param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override bool DeleteItem(ItemDefinition itemDefinition, CallContext context)
        {
            SafeModeResult result = Items.Remove(Query.EQ("_id", itemDefinition.ID.ToGuid()), RemoveFlags.Single, SafeMode);

            return(result != null && result.Ok);
        }
예제 #26
0
        public bool DeleteAll()
        {
            SafeModeResult result = WebEvents.RemoveAll();

            return(true);
        }
예제 #27
0
 public void InsertForwardIndexItem(ForwardIndexItem fitem)
 {
     MongoCollection <ForwardIndexItem> collection = mongo_database.GetCollection <ForwardIndexItem>("forwardindex");
     SafeModeResult smr = collection.Insert <ForwardIndexItem>(fitem);
 }
예제 #28
0
        internal SafeModeResult SendMessage(MongoRequestMessage message, SafeMode safeMode)
        {
            if (_state == MongoConnectionState.Closed)
            {
                throw new InvalidOperationException("Connection is closed.");
            }
            lock (_connectionLock)
            {
                _requestId = message.RequestId;

                message.WriteToBuffer();
                CommandDocument safeModeCommand = null;
                if (safeMode.Enabled)
                {
                    safeModeCommand = new CommandDocument
                    {
                        { "getlasterror", 1 }, // use all lowercase for backward compatibility
                        { "fsync", true, safeMode.FSync },
                        { "j", true, safeMode.Journal },
                        { "w", safeMode.W, safeMode.W > 1 },
                        { "w", safeMode.WMode, safeMode.WMode != null },
                        { "wtimeout", (int)safeMode.WTimeout.TotalMilliseconds, safeMode.W > 1 && safeMode.WTimeout != TimeSpan.Zero }
                    };
                    // piggy back on network transmission for message
                    using (var getLastErrorMessage = new MongoQueryMessage(message.Buffer, message.WriterSettings, "admin.$cmd", QueryFlags.None, 0, 1, safeModeCommand, null))
                    {
                        getLastErrorMessage.WriteToBuffer();
                    }
                }

                try
                {
                    var networkStream = GetNetworkStream();
                    var writeTimeout  = (int)_serverInstance.Server.Settings.SocketTimeout.TotalMilliseconds;
                    if (writeTimeout != 0)
                    {
                        networkStream.WriteTimeout = writeTimeout;
                    }
                    message.Buffer.WriteTo(networkStream);
                    _messageCounter++;
                }
                catch (Exception ex)
                {
                    HandleException(ex);
                    throw;
                }

                SafeModeResult safeModeResult = null;
                if (safeMode.Enabled)
                {
                    var readerSettings = new BsonBinaryReaderSettings
                    {
                        GuidRepresentation = message.WriterSettings.GuidRepresentation,
                        MaxDocumentSize    = _serverInstance.MaxDocumentSize
                    };
                    var replyMessage     = ReceiveMessage <BsonDocument>(readerSettings, null);
                    var safeModeResponse = replyMessage.Documents[0];
                    safeModeResult = new SafeModeResult();
                    safeModeResult.Initialize(safeModeCommand, safeModeResponse);

                    if (!safeModeResult.Ok)
                    {
                        var errorMessage = string.Format(
                            "Safemode detected an error '{0}'. (response was {1}).",
                            safeModeResult.ErrorMessage, safeModeResponse.ToJson());
                        throw new MongoSafeModeException(errorMessage, safeModeResult);
                    }
                    if (safeModeResult.HasLastErrorMessage)
                    {
                        var errorMessage = string.Format(
                            "Safemode detected an error '{0}'. (Response was {1}).",
                            safeModeResult.LastErrorMessage, safeModeResponse.ToJson());
                        throw new MongoSafeModeException(errorMessage, safeModeResult);
                    }
                }

                return(safeModeResult);
            }
        }
예제 #29
0
        /// <summary>
        /// This method stores a burrito.
        /// </summary>
        /// <param name="b">The burrito object to store</param>
        /// <returns>Success/Failure</returns>
        public Boolean storeBurrito(Burrito b)
        {
            dLog.Info("Entering method storeBurrito | ID: " + b.id);
            Boolean result = false;

            try
            {
                MongoServer   server = MongoServer.Create();
                MongoDatabase db     = server.GetDatabase("neatoBurrito");
                //MongoCredentials credentials = new MongoCredentials("username", "password");
                //MongoDatabase salaries = server.GetDatabase("salaries", credentials);

                using (server.RequestStart(db))
                {
                    MongoCollection <BsonDocument> coll = db.GetCollection("burrito");
                    var query = new QueryDocument("id", b.id);

                    dLog.Debug("Finding if burrito exists");
                    BsonDocument myDoc = coll.FindOne(query);

                    query.Add("beef", b.Beef);
                    query.Add("blackBeans", b.BlackBeans);
                    query.Add("brownRice", b.BrownRice);
                    query.Add("chicken", b.Chicken);
                    query.Add("chiliTortilla", b.ChiliTortilla);
                    query.Add("cucumber", b.Cucumber);
                    query.Add("flourTortilla", b.FlourTortilla);
                    query.Add("guacamole", b.Guacamole);
                    query.Add("herbGarlicTortilla", b.HerbGarlicTortilla);
                    query.Add("hummus", b.Hummus);
                    query.Add("jalapenoCheddarTortilla", b.JalapenoCheddarTortilla);
                    query.Add("jalapenos", b.Jalapenos);
                    query.Add("lettuce", b.Lettuce);
                    query.Add("onion", b.Onion);
                    query.Add("orderID", b.orderID);
                    query.Add("pintoBeans", b.PintoBeans);
                    query.Add("price", b.Price.ToString());
                    query.Add("salsaPico", b.SalsaPico);
                    query.Add("salsaSpecial", b.SalsaSpecial);
                    query.Add("salsaVerde", b.SalsaVerde);
                    query.Add("tomatoBasilTortilla", b.TomatoBasilTortilla);
                    query.Add("tomatoes", b.Tomatoes);
                    query.Add("wheatTortilla", b.WheatTortilla);
                    query.Add("whiteRice", b.WhiteRice);

                    //ensure we were passed a valid object before attempting to write
                    if (myDoc == null)
                    {
                        dLog.Debug("Inserting burrito");
                        coll.Insert(query);

                        result = true;
                    }
                    else
                    {
                        var update = new UpdateDocument();
                        update.Add(query.ToBsonDocument());
                        dLog.Debug("Updating burrito");
                        dLog.Debug("myDoc: " + myDoc.ToString());
                        dLog.Debug("update Query: " + update.ToString());

                        SafeModeResult wr = coll.Update(new QueryDocument("id", b.id), update, SafeMode.True);

                        dLog.Debug("SafeModeResult: " + wr.Ok);
                        if (wr.LastErrorMessage == null && wr.Ok)
                        {
                            result = true;
                        }
                        else
                        {
                            dLog.Debug("SafeModeResult: " + wr.LastErrorMessage);
                        }
                    }
                }
            }
            catch (Exception e2)
            {
                dLog.Error("Exception in storeBurrito: " + e2.Message);
            }
            finally
            {
                //using statement above already calls RequestDone()
            }

            return(result);
        }
예제 #30
0
 public void InsertInvertedIndexItem(InvertedIndexItem iitem)
 {
     MongoCollection <InvertedIndexItem> collection = mongo_database.GetCollection <InvertedIndexItem>("invertedindex");
     SafeModeResult smr = collection.Insert <InvertedIndexItem>(iitem);
 }