def test_incr_multi(self):
        keys = self.gen_key_list(amount=5, prefix="incr_multi")

        def _multi_lim_assert(expected):
            for k, v in self.cb.get_multi(keys).items():
                self.assertTrue(k in keys)
                self.assertEqual(v.content, expected)

        self.cb.remove_multi(keys, quiet=True)
        self.bin_coll.increment_multi(keys, initial=SignedInt64(5))
        _multi_lim_assert(5)

        self.bin_coll.increment_multi(keys)
        _multi_lim_assert(6)

        self.bin_coll.decrement_multi(keys, delta=DeltaValue(1))
        _multi_lim_assert(5)

        self.bin_coll.increment_multi(keys, delta=DeltaValue(10))
        _multi_lim_assert(15)

        self.bin_coll.decrement_multi(keys, delta=DeltaValue(6))
        _multi_lim_assert(9)

        self.cb.remove(keys[0])

        self.assertRaises(DocumentNotFoundException,
                          self.bin_coll.increment_multi, keys)
 def get_next_order_id(self):
     result = self.__collection.binary().increment(
         self.counter_ids['order'],
         CounterOptions(delta=DeltaValue(1), initial=SignedInt64(1000)))
     if '_original' in result.__dict__:
         return result.__dict__['_original'].value
     return None
    def test_trivial_incrdecr(self):
        key = self.gen_key("trivial_incrdecr")
        self.cb.remove(key, quiet=True)
        rv_arith = self.bin_coll.increment(key,
                                           initial=SignedInt64(1),
                                           delta=DeltaValue(1))
        rv_get = self.cb.get(key)

        # self.assertEqual(rv_arith.content, 1) SDK3 MutationResult has no content
        self.assertEqual(int(rv_get.content), 1)

        rv = self.bin_coll.increment(key)
        # self.assertEqual(rv.content, 2)

        rv = self.bin_coll.decrement(key, delta=DeltaValue(1))
        # self.assertEqual(rv.content, 1)
        self.assertEqual(int(self.cb.get(key).content), 1)

        rv = self.bin_coll.decrement(key, delta=DeltaValue(1))
        # self.assertEqual(rv.content, 0)
        self.assertEqual(int(self.cb.get(key).content), 0)
Exemple #4
0
result = collection.touch("document-key", timedelta(seconds=10))
# end::touch[]

# tag::get_expiry[]
result = collection.get("document-key", GetOptions(with_expiry=True))
print("Expiry of result: {}".format(result.expiryTime))
# end::get_expiry[]

# tag::get_and_touch[]
result = collection.get_and_touch("document-key", timedelta(seconds=10))
# end::get_and_touch[]

# tag::increment[]
# Increment binary value by 1
collection.binary().increment("counter-key",
                              IncrementOptions(delta=DeltaValue(1)))
# end::increment[]

# tag::increment_w_seed[]
# Increment binary value by 5, if key doesn't exist, seed it at 1000
collection.binary().increment(
    "counter-key",
    IncrementOptions(delta=DeltaValue(5), initial=SignedInt64(1000)))
# end::increment_w_seed[]

# tag::decrement[]
# Decrement binary value by 1
collection.binary().decrement("counter-key",
                              DecrementOptions(delta=DeltaValue(1)))
# end::decrement[]
 def test_unsigned_int(self):
     self.assertRaises(InvalidArgumentException, DeltaValue, -1)
     self.assertRaises(InvalidArgumentException, DeltaValue, 0x7FFFFFFFFFFFFFFF + 1)
     self.assertEqual(5, DeltaValue(5).value)
 def test_counter_decrement_non_default(self):
     self.coll.upsert(self.COUNTER_KEY, 100)
     self.assertTrue(self.coll.binary().decrement(self.COUNTER_KEY, DecrementOptions(delta=DeltaValue(3))).success)
     self.assertEqual(97, self.coll.get(self.COUNTER_KEY).content_as[int])
Exemple #7
0
result = collection.touch("document-key", timedelta(seconds=10))
#end::touch[]
"""
----

== Atomic document modifications

The value of a document can be increased or decreased atomically using `.increment()` and `.decrement()`.

    .Increment
[source,csharp]
----
// increment binary value by 1, if document doesn’t exist, seed it at 1000
"""
#tag::increment[]
collection.increment("document-key", DeltaValue(1), initial=SignedInt64(1000))
#end::increment[]
"""
---

[source,csharp]
----
.Increment (with options)
// increment binary value by 1, if document doesn’t exist, seed it at 1000
// optional arguments:
       // - Expiration (TimeSpan)
"""
#tag::increment_w_expiration[]
collection.increment("document-key",
                     DeltaValue(1),
                     initial=SignedInt64(1000),