Beispiel #1
0
        public void RemoveSet_ClearsTheSetData()
        {
            UseConnection(database =>
            {
                var set1Val1 = new LiteSet {
                    Key = "Set1", Value = "value1", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set1Val1);

                var set1Val2 = new LiteSet {
                    Key = "Set1", Value = "value2", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set1Val2);

                var set2 = new LiteSet {
                    Key = "Set2", Value = "value2", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set2);

                Commit(database, x => x.RemoveSet(set1Val1.Key));

                var testSet1 = GetTestSet(database, set1Val1.Key);
                Assert.Equal(0, testSet1.Count);

                var testSet2 = GetTestSet(database, set2.Key);
                Assert.Equal(1, testSet2.Count);
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="key"></param>
        /// <param name="items"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public override void AddRangeToSet(string key, IList <string> items)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            foreach (var item in items)
            {
                QueueCommand(x =>
                {
                    var state = new LiteSet
                    {
                        Key      = key,
                        Value    = item,
                        ExpireAt = null,
                        Score    = 0.0
                    };
                    var oldSet = x.StateDataSet.Find(Query.And(Query.EQ("Key", key), Query.EQ("Value", item))).FirstOrDefault();
                    if (oldSet == null)
                    {
                        x.StateDataSet.Insert(state);
                    }
                    else
                    {
                        state.Id = oldSet.Id;
                        x.StateDataSet.Update(state);
                    }
                });
            }
        }
Beispiel #3
0
        public void AddToSet_WithScore_AddsARecordWithScore_WhenBothKeyAndValueAreNotExist()
        {
            UseConnection(database =>
            {
                Commit(database, x => x.AddToSet("my-key", "my-value", 3.2));

                LiteSet record = database.StateDataSet.FindAll().ToList().Single();

                Assert.Equal("my-key", record.Key);
                Assert.Equal("my-value", record.Value);
                Assert.Equal(3.2, record.Score, 3);
            });
        }
Beispiel #4
0
        public void AddToSet_AddsARecord_IfThereIsNo_SuchKeyAndValue()
        {
            UseConnection(database =>
            {
                Commit(database, x => x.AddToSet("my-key", "my-value"));

                LiteSet record = database.StateDataSet.FindAll().ToList().Single();

                Assert.Equal("my-key", record.Key);
                Assert.Equal("my-value", record.Value);
                Assert.Equal(0.0, record.Score, 2);
            });
        }
Beispiel #5
0
        public void AddRangeToSet_AddToExistingSetData()
        {
            UseConnection(database =>
            {
                var set1Val1 = new LiteSet {
                    Key = "Set1", Value = "value1", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set1Val1);

                var set1Val2 = new LiteSet {
                    Key = "Set1", Value = "value2", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set1Val2);

                var set2 = new LiteSet {
                    Key = "Set2", Value = "value2", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set2);

                var values = new[] { "test1", "test2", "test3" };
                Commit(database, x => x.AddRangeToSet(set1Val1.Key, values));

                var testSet1     = GetTestSet(database, set1Val1.Key);
                var valuesToTest = new List <string>(values)
                {
                    "value1", "value2"
                };

                Assert.NotNull(testSet1);
                // verify all values are present in testSet1
                Assert.True(testSet1.Select(s => s.Value.ToString()).All(value => valuesToTest.Contains(value)));
                Assert.Equal(5, testSet1.Count);

                var testSet2 = GetTestSet(database, set2.Key);
                Assert.NotNull(testSet2);
                Assert.Equal(1, testSet2.Count);
            });
        }
Beispiel #6
0
        public void PersistSet_ClearsTheSetExpirationData()
        {
            UseConnection(database =>
            {
                var set1 = new LiteSet {
                    Key = "Set1", Value = "value1", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set1);

                var set2 = new LiteSet {
                    Key = "Set2", Value = "value2", ExpireAt = DateTime.Now
                };
                database.StateDataSet.Insert(set2);

                Commit(database, x => x.PersistSet(set1.Key));

                var testSet1 = GetTestSet(database, set1.Key).First();
                Assert.Null(testSet1.ExpireAt);

                var testSet2 = GetTestSet(database, set2.Key).First();
                Assert.NotNull(testSet2.ExpireAt);
            });
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <param name="score"></param>
 public override void AddToSet(string key, string value, double score)
 {
     QueueCommand(x =>
     {
         var liteSet = new LiteSet
         {
             Score    = score,
             Key      = key,
             Value    = value,
             ExpireAt = null
         };
         var oldSet = x.StateDataSet.Find(Query.And(Query.EQ("Key", key), Query.EQ("Value", value))).FirstOrDefault();
         if (oldSet == null)
         {
             x.StateDataSet.Insert(liteSet);
         }
         else
         {
             liteSet.Id = oldSet.Id;
             x.StateDataSet.Update(liteSet);
         }
     });
 }
Beispiel #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="score"></param>
        public override void AddToSet(string key, string value, double score)
        {
            QueueCommand(x =>
            {
                var liteSet = new LiteSet
                {
                    Score    = score,
                    Key      = key,
                    Value    = value,
                    ExpireAt = null
                };
                var oldSet = x.StateDataSet.Find(_ => _.Key == key && Convert.ToString(_.Value) == value).FirstOrDefault();

                if (oldSet == null)
                {
                    x.StateDataSet.Insert(liteSet);
                }
                else
                {
                    liteSet.Id = oldSet.Id;
                    x.StateDataSet.Update(liteSet);
                }
            });
        }
Beispiel #9
0
        public void ExpireSet_SetsSetExpirationData()
        {
            UseConnection(database =>
            {
                var set1 = new LiteSet {
                    Key = "Set1", Value = "value1"
                };
                database.StateDataSet.Insert(set1);

                var set2 = new LiteSet {
                    Key = "Set2", Value = "value2"
                };
                database.StateDataSet.Insert(set2);

                Commit(database, x => x.ExpireSet(set1.Key, TimeSpan.FromDays(1)));

                var testSet1 = GetTestSet(database, set1.Key).FirstOrDefault();
                Assert.True(DateTime.UtcNow.AddMinutes(-1) < testSet1.ExpireAt && testSet1.ExpireAt <= DateTime.UtcNow.AddDays(1));

                var testSet2 = GetTestSet(database, set2.Key).FirstOrDefault();
                Assert.NotNull(testSet2);
                Assert.Null(testSet2.ExpireAt);
            });
        }