示例#1
0
 class ComplexInnerModel(Model):
     fields = {'new': 'new', 'email': {'token': 'test'}}
     table = 'complex_inner_model'
     indexes = [
         Index(["email.token"], "simple_token_index", "simple_id"),
         Index(["new"], "simple_new_index", "simple_id")
     ]
示例#2
0
    def test_index_populate(self):
        idx = self.populate_test_index()
        keyspace = idx.keyspace

        idx2 = Index('data', '$.k2')
        keyspace.add_index(idx2)

        self.assertEqual([row for row in idx2.all_items()], [
            {'row_key': 2, 'value': u'x1-2'},
            {'row_key': 4, 'value': u'x1-xx'},
            {'row_key': 5, 'value': u'v1-x'},
            {'row_key': 6, 'value': u'v1-y'},
        ])
示例#3
0
    def test_query_expressions(self):
        idx2 = Index('data', '$.k2')
        idx = self.populate_test_index(idx2)

        query = idx.query('v1-1') | idx.query('v1-3') | idx.query('xx')
        self.assertEqual([row._data['data']['k1'] for row in query], [
            'v1-1',
            'v1-3',
            'xx'])

        query = (idx.query('v1-1') | idx.query('v1-3')) | idx2.query('x1-xx')
        self.assertEqual([row._data['data'] for row in query], [
            {'k1': 'v1-1'},
            {'k1': 'v1-3'},
            {'k1': 'xx', 'k2': 'x1-xx'},
        ])
示例#4
0
    def test_index(self):
        username = Index('user', '$.user.username')
        pet_name = Index('user', '$.user.pets[0].name')
        keyspace = self.db.keyspace('test2', username, pet_name)
        keyspace.create()

        charlie = {
            'user': {
                'username': '******',
                'active': True,
                'pets': [
                    {'name': 'huey', 'type': 'cat'},
                    {'name': 'mickey', 'type': 'dog'},
                ],
            },
        }
        nuggie = {
            'user': {
                'username': '******',
                'active': True,
                'pets': [
                    {'name': 'zaizee', 'type': 'cat'},
                    {'name': 'beanie', 'type': 'cat'},
                ],
            },
        }

        keyspace.create_row(user=charlie, misc={'foo': 'bar'})
        keyspace.create_row(user=nuggie, misc={'foo': 'baze'})

        rows = [row for row in username.query('charlie')]
        self.assertEqual(len(rows), 1)
        row = rows[0]
        self.assertEqual(row._data, {
            'user': charlie,
            'misc': {'foo': 'bar'},
        })

        rows = [row for row in pet_name.query('zaizee')]
        self.assertEqual(len(rows), 1)
        row = rows[0]
        self.assertEqual(row._data, {
            'user': nuggie,
            'misc': {'foo': 'baze'},
        })
示例#5
0
    def test_query_descriptor(self):
        idx2 = Index('data', '$.k2')
        idx = self.populate_test_index(idx2)
        query = idx.query((idx.v == 'v1-1') | (idx.v == 'v1-3'))
        self.assertEqual([row._data for row in query], [
            {'data': {'k1': 'v1-1'}, 'misc': 1337},
            {'data': {'k1': 'v1-3'}, 'k1': 'v1-5', 'k2': 'v1-6'},
        ])

        query = idx.query((idx.v == 'v1-1') | (idx.v == 'v1-3'), reverse=True)
        self.assertEqual([row._data for row in query], [
            {'data': {'k1': 'v1-3'}, 'k1': 'v1-5', 'k2': 'v1-6'},
            {'data': {'k1': 'v1-1'}, 'misc': 1337},
        ])

        idx1_q = idx.query((idx.v == 'v1-1') | (idx.v == 'v1-3'))
        idx2_q = idx2.query(idx2.v == 'x1-xx')
        self.assertEqual([row._data['data'] for row in -(idx1_q | idx2_q)], [
            {'k1': 'xx', 'k2': 'x1-xx'},
            {'k1': 'v1-3'},
            {'k1': 'v1-1'},
        ])