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)
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])
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),