def test_find_by_id_as_dict(self): connection = ConnectionFactory.get_connection(connection_str=CONNECTION_STR, options=CONNECTION_OPTIONS) if connection.is_store_exists(store_path='/find-by-id-test-store1'): document_store = connection.get_store(store_path='/find-by-id-test-store1') else: document_store = connection.create_store(store_path='/find-by-id-test-store1') self.assertTrue(connection.is_store_exists('/find-by-id-test-store1')) doc = document_store.find_by_id('121212') document = OJAIDocument().set_id("121212") \ .set('test_int', 123) \ .set('first.test_int', 1235) \ .set('first.test_long', 123456789) \ .set('first.test_time', OTime(timestamp=1518689532)) \ .set('first.test_date', ODate(days_since_epoch=3456)) \ .set('first.test_bool', True) \ .set('first.test_bool_false', False) \ .set('first.test_invalid', ODate(days_since_epoch=3457)) \ .set('first.test_str', 'strstr') \ .set('first.test_dict', {'a': 1, 'b': 2}) \ .set('first.test_dict2', {}) \ .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) self.assertEqual(doc, document.as_dictionary())
def test_o_date_parse(self): o_date = ODate.parse("1970-04-10") self.assertEqual(o_date.days_since_epoch, 99) self.assertEqual(o_date.get_year(), 1970) self.assertEqual(o_date.get_month(), 4) self.assertEqual(o_date.get_day_of_month(), 10) self.assertEqual(o_date.to_date().time().hour, 0) self.assertEqual(o_date.to_date().time().minute, 0) self.assertEqual(o_date.to_date().time().second, 0)
def test_document_to_json_str_without_tags(self): doc = OJAIDocument().set_id('121212') \ .set('test_int', 123) \ .set('first.test_int', 1235) \ .set('first.test_long', 123456789) \ .set('first.test_float', 123456789.123) \ .set('first.test_time', OTime(timestamp=1518689532)) \ .set('test_float', 11.1) \ .set('first.test_timestamp', OTimestamp(millis_since_epoch=29877132000)) \ .set('first.test_date', ODate(days_since_epoch=3456)) \ .set('first.test_bool', True) \ .set('first.test_bool_false', False) \ .set('first.test_invalid', ODate(days_since_epoch=3457)) \ .set('first.test_str', 'strstr') \ .set('first.test_dict', {'a': 1, 'b': 2}) \ .set('first.test_dict2', {}) \ .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)])\ .set('test_bytearray', bytearray(b'\x06\x06')) self.assertEqual( { "_id": "121212", "test_int": 123, "first": { "test_int": 1235, "test_long": 123456789, "test_float": 123456789.123, "test_time": "12:12:12", "test_timestamp": "1970-12-12T19:12:12.000000Z", "test_date": "1979-06-19", "test_bool": True, "test_bool_false": False, "test_invalid": "1979-06-20", "test_str": "strstr", "test_dict": { "a": 1, "b": 2 }, "test_dict2": {}, "test_list": [1, 2, "str", False, "1979-06-20"] }, "test_float": 11.1, "test_bytearray": "\u0006\u0006" }, json.loads(doc.as_json_str(with_tags=False)))
def test_doc_get(self): doc = OJAIDocument().set_id('121212') \ .set('test_int', 123) \ .set('first.test_int', 1235) \ .set('first.test_long', 123456789) \ .set('first.test_float', 123456789.123) \ .set('first.test_time', OTime(timestamp=1518689532)) \ .set('test_float', 11.1) \ .set('first.test_timestamp', OTimestamp(millis_since_epoch=29877132000)) \ .set('first.test_date', ODate(days_since_epoch=3456)) \ .set('first.test_interval', OInterval(milli_seconds=172800000)) \ .set('first.test_bool', True) \ .set('first.test_bool_false', False) \ .set('first.test_invalid', ODate(days_since_epoch=3457)) \ .set('first.test_str', 'strstr') \ .set('first.test_dict', {'a': 1, 'b': 2}) \ .set('first.test_dict2', {}) \ .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) \ self.assertEqual(doc.get_int('test_int'), 123) self.assertEqual(doc.get_int('first.test_int'), 1235) self.assertEqual(doc.get_int('first.test_long'), 123456789) self.assertEqual(doc.get_long('first.test_long'), 123456789) self.assertEqual(doc.get_float('first.test_float'), 123456789.123) self.assertEqual( doc.get_time('first.test_time').time_to_str(), '12:12:12') self.assertEqual( doc.get_interval('first.test_interval').time_duration, 172800000) self.assertEqual( doc.get_timestamp('first.test_timestamp').__str__(), '1970-12-12T19:12:12.000000Z') self.assertEqual( doc.get_date('first.test_date').to_date_str(), '1979-06-19') self.assertEqual(doc.get_boolean('first.test_bool'), True) self.assertEqual(doc.get_boolean('first.test_bool_false'), False) self.assertEqual(doc.get_boolean('first.test_invalid'), None) self.assertEqual(doc.get_str('first.test_str'), 'strstr') self.assertEqual(doc.get_dictionary('first.test_dict'), { 'a': 1, 'b': 2 }) self.assertEqual(doc.get_dictionary('first.test_dict2'), {})
def test_concrete_date(self): o_date = ODate(year=1970, month=4, day_of_month=10) self.assertEqual(o_date.days_since_epoch, 99) self.assertEqual(o_date.get_year(), 1970) self.assertEqual(o_date.get_month(), 4) self.assertEqual(o_date.get_day_of_month(), 10) self.assertEqual(o_date.to_date().time().hour, 0) self.assertEqual(o_date.to_date().time().minute, 0) self.assertEqual(o_date.to_date().time().second, 0)
def test_o_date_datetime(self): import datetime date = datetime.datetime(year=1970, month=4, day=10, hour=5, minute=15, second=55) o_date = ODate(date=date) self.assertEqual(o_date.days_since_epoch, 99) self.assertEqual(o_date.get_year(), 1970) self.assertEqual(o_date.get_month(), 4) self.assertEqual(o_date.get_day_of_month(), 10) self.assertEqual(o_date.to_date().time().hour, 0) self.assertEqual(o_date.to_date().time().minute, 0) self.assertEqual(o_date.to_date().time().second, 0)
def generate_o_types(str_type, str_value): if str_type == '$interval': from ojai.types.OInterval import OInterval return OInterval(milli_seconds=str_value) elif str_type == '$date': from ojai.types.OTimestamp import OTimestamp return OTimestamp.parse(str_value) elif str_type == '$dateDay': from ojai.types.ODate import ODate return ODate.parse(str_value) else: from ojai.types.OTime import OTime return OTime.parse(str_value)
def test_insert_find_large_doc(self): document = OJAIDocument().set_id("121212") \ .set('test_int', 123) \ .set('first.test_int', 1235) \ .set('first.test_long', 123456789) \ .set('first.test_time', OTime(timestamp=1518689532)) \ .set('first.test_date', ODate(days_since_epoch=3456)) \ .set('first.test_bool', True) \ .set('first.test_bool_false', False) \ .set('first.test_invalid', ODate(days_since_epoch=3457)) \ .set('first.test_str', 'strstr') \ .set('first.test_dict', {'a': 1, 'b': 2}) \ .set('first.test_dict2', {}) \ .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) \ connection = ConnectionFactory.get_connection(connection_str=CONNECTION_STR, options=CONNECTION_OPTIONS) if connection.is_store_exists(store_path='/find-by-id-test-store1'): document_store = connection.get_store(store_path='/find-by-id-test-store1') else: document_store = connection.create_store(store_path='/find-by-id-test-store1') document_store.insert_or_replace(doc=document) self.assertTrue(connection.is_store_exists('/find-by-id-test-store1')) doc = document_store.find_by_id('121212', results_as_document=True) self.assertEqual(doc.as_json_str(), '{"_id": "121212", "test_int": {"$numberLong": 123}, "first": {' '"test_invalid": {"$dateDay": "1979-06-20"}, "test_time": {"$time": ' '"12:12:12"}, "test_bool_false": false, "test_list": [{"$numberLong": 1}, ' '{"$numberLong": 2}, "str", false, {"$dateDay": "1979-06-20"}], ' '"test_long": {"$numberLong": 123456789}, "test_dict2": {}, "test_dict": ' '{"a": {"$numberLong": 1}, "b": {"$numberLong": 2}}, "test_bool": true, ' '"test_date": {"$dateDay": "1979-06-19"}, "test_str": "strstr", ' '"test_int": {"$numberLong": 1235}}}') self.assertEqual(doc.as_dictionary(), document.as_dictionary())
def test_doc_set_date(self): doc = OJAIDocument() doc.set("today", ODate(days_since_epoch=3456)) self.assertEqual(doc.as_json_str(), json.dumps({"today": {"$dateDay": "1979-06-19"}})) doc.set_id("6123") self.assertEqual(json.loads(doc.as_json_str()), {"_id": "6123", "today": {"$dateDay": "1979-06-19"}})
def test_o_date_epoch(self): epoch = 8546400 o_date = ODate(epoch=epoch) days = 99 o_date_clone = ODate(days_since_epoch=days) self.assertTrue(o_date.__eq__(o_date_clone)) self.assertEqual(o_date.__cmp__(o_date_clone), 0) self.assertEqual(o_date.__hash__(), o_date_clone.__hash__()) self.assertEqual(o_date.get_year(), o_date_clone.get_year()) self.assertEqual(o_date.get_month(), o_date_clone.get_month()) self.assertEqual(o_date.get_day_of_month(), o_date_clone.get_day_of_month())
def test_days_from_epoch(self): days = 99 o_date = ODate(days_since_epoch=days) o_date_clone = ODate(days_since_epoch=days) self.assertTrue(o_date.__eq__(o_date_clone)) self.assertEqual(o_date.__cmp__(o_date_clone), 0) self.assertEqual(o_date.__hash__(), o_date_clone.__hash__()) self.assertEqual(o_date.to_date_str(), "1970-04-10") self.assertEqual(o_date.get_year(), 1970) self.assertEqual(o_date.get_month(), 4) self.assertEqual(o_date.get_day_of_month(), 10) self.assertEqual(o_date.to_date().time().hour, 0) self.assertEqual(o_date.to_date().time().minute, 0) self.assertEqual(o_date.to_date().time().second, 0)
# Get a store and assign it as a DocumentStore object store = connection.get_store(store_path="/sample_store1") # Json string or json dictionary json_dict = {"_id": "id002", "name": "Joe", "age": 50, "address": { "street": "555 Moon Way", "city": "Gotham"} } # Json string or json dictionary payment = {"payment_method": "card", "name": "visa", "card_info": { "number": "1234 1234 1234 1234", "exp_date": ODate.parse("2022-10-24"), "cvv": 123} } # Create new document from json_document new_document = connection.new_document(dictionary=json_dict) # Add nested dictionary into document new_document.set(field_path='payment', value=payment) # Insert or replace new document into the store store.insert_or_replace(doc=new_document) # close connection.close()
"name": "Joe", "age": 50, "address": { "street": "555 Moon Way", "city": "Gotham" } } byte_array = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00]) doc = OJAIDocument().set_id("id003") \ .set('test_int', 14) \ .set('first.test_int', 1235) \ .set('first.test_long', 123456789) \ .set('first.test_time', OTime(timestamp=1518689532)) \ .set('first.test_timestamp', OTimestamp(millis_since_epoch=29877132000)) \ .set('first.test_date', ODate(days_since_epoch=3456)) \ .set('first.test_bool', True) \ .set('first.test_bool_false', False) \ .set('first.test_invalid', ODate(days_since_epoch=3457)) \ .set('first.test_str', 'strstr') \ .set('first.test_dict', {'a': 1, 'b': 2}) \ .set('first.test_dict2', {}) \ .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) \ .set('first.test_binary', byte_array) # Create new document from json_document new_document = connection.new_document(dictionary=json_dict) doc.set('first.second.nested_doc', new_document) # Insert new document into the store store.insert_or_replace(doc=doc)