Example #1
0
    def test_element_limit(self):
        self.add_user(age=10)

        json = jsonify({
            'operator':
            'and',
            'value': [{
                'column': 'age',
                'value': 10,
                'operator': '=='
            }]
        })

        with pytest.raises(ValueError):
            jsonquery(self.session, self.model, json, max_elements=1).one()
Example #2
0
    def test_depth_limit(self):
        self.add_user(age=10)

        json = jsonify({
            'operator':
            'and',
            'value': [{
                'column': 'age',
                'value': 10,
                'operator': '=='
            }]
        })

        with self.assertRaises(ValueError):
            jsonquery(self.session, self.model, json, max_depth=1).one()
    def test_depth_limit(self):
        self.add_user(age=10)

        json = jsonify({
            'operator': 'and',
            'value': [
                {
                    'column': 'age',
                    'value': 10,
                    'operator': '=='
                }
            ]
        })

        with pytest.raises(ValueError):
            jsonquery(self.session, self.model, json, max_depth=1).one()
    def test_multi_criteria_or(self):
        self.add_user(age=10, height=20)
        self.add_user(age=10, height=15)
        self.add_user(age=5, height=15)

        json = jsonify({
            'operator': 'or',
            'value': [
                {
                    'column': 'age',
                    'value': 10,
                    'operator': '=='
                },
                {
                    'column': 'height',
                    'value': 15,
                    'operator': '=='
                }
            ]
        })
        actual_users = jsonquery(self.session, self.model, json).all()
        expected_users = self.query.filter(
            or_(self.model.age == 10, self.model.height == 15)).all()
        assert 3 == len(actual_users) == len(expected_users)
        assert set(actual_users) == set(expected_users)
Example #5
0
    def test_basic_query(self):
        self.add_user(age=10)

        json = jsonify({'column': 'age', 'value': 10, 'operator': '=='})
        actual_user = jsonquery(self.session, self.model, json).one()

        expected_user = self.query.filter(self.model.age == 10).one()
        assert actual_user is expected_user
Example #6
0
def card(name):
    query = {
        'column': 'processed_ascii_name',
        'operator': 'ilike',
        'value': name
    }
    card = jsonquery(db.session, models.Card, query).first()
    card_dict = controllers.with_fields(card)
    return jsonify(**card_dict)
Example #7
0
 def test_eq(self):
     json = jsonify({
         'column': 'foo',
         'value': 10,
         'operator': '=='
     })
     actual_foo = jsonquery(self.session, self.model, json).one()
     expected_foo = self.query.filter(self.model.foo == 10).one()
     assert actual_foo is expected_foo
Example #8
0
def card(name):
	query = {
		'column': 'processed_ascii_name',
		'operator': 'ilike',
		'value': name
	}
	card = jsonquery(db.session, models.Card, query).first()
	card_dict = controllers.with_fields(card)
	return jsonify(**card_dict)
Example #9
0
 def test_ne(self):
     json = jsonify({
         'column': 'foo',
         'value': 10,
         'operator': '!='
     })
     actual_foos = jsonquery(self.session, self.model, json).all()
     expected_foos = self.query.filter(self.model.foo != 10).all()
     assert 2 == len(actual_foos) == len(expected_foos)
     assert set(actual_foos) == set(expected_foos)
Example #10
0
    def like_value(self, value):
        json = jsonify({
            'column': 'string',
            'value': value,
            'operator': 'like'
        })
        actual_strings = jsonquery(self.session, self.model, json).all()
        expected_strings = self.query.filter(
            self.model.string.like(value)).all()

        return actual_strings, expected_strings
Example #11
0
    def like_value(self, value):
        json = jsonify({
            'column': 'string',
            'value': value,
            'operator': 'like'
        })
        actual_strings = jsonquery(self.session, self.model, json).all()
        expected_strings = self.query.filter(
            self.model.string.like(value)).all()

        return actual_strings, expected_strings
    def test_basic_query(self):
        self.add_user(age=10)

        json = jsonify({
            'column': 'age',
            'value': 10,
            'operator': '=='
        })
        actual_user = jsonquery(self.session, self.model, json).one()

        expected_user = self.query.filter(self.model.age == 10).one()
        assert actual_user is expected_user
Example #13
0
def filtered_results(query, schema, paginate=True):
    q = json.loads(request.args.get('q', '{}'))
    query = jsonquery(query, q) if q else query
    # ensure deterministic ordering
    # (we need this for paginated results with queries involving subqueries)
    # We assume that all queriable tables have an 'id' column
    query = query.order_by('id')
    if not paginate:
        return serialize(query.all(), schema, many=True)
    page = q.get('page', 1)
    items_per_page = config.ITEMS_PER_PAGE
    pag = query.paginate(page, items_per_page)
    return PaginatedResult(pag, schema)
def filtered_results(query, schema, paginate=True):
    q = json.loads(request.args.get('q', '{}'))
    query = jsonquery(query, q) if q else query
    # ensure deterministic ordering
    # (we need this for paginated results with queries involving subqueries)
    # We assume that all queriable tables have an 'id' column
    query = query.order_by('id')
    if not paginate:
        return serialize(query.all(), schema, many=True)
    page = q.get('page', 1)
    items_per_page = config.ITEMS_PER_PAGE
    pag = query.paginate(page, items_per_page)
    return PaginatedResult(pag, schema)
Example #15
0
    def test_basic_not(self):
        self.add_user(age=10)
        self.add_user(age=20)
        self.add_user(age=30)

        json = jsonify({
            'operator': 'not',
            'value': {
                'column': 'age',
                'value': 10,
                'operator': '=='
            }
        })

        actual_users = jsonquery(self.session, self.model, json).all()
        expected_users = self.query.filter(not_(self.model.age == 10)).all()
        assert 2 == len(actual_users) == len(expected_users)
        assert set(actual_users) == set(expected_users)
    def test_basic_not(self):
        self.add_user(age=10)
        self.add_user(age=20)
        self.add_user(age=30)

        json = jsonify({
            'operator': 'not',
            'value':
            {
                'column': 'age',
                'value': 10,
                'operator': '=='
            }
        })

        actual_users = jsonquery(self.session, self.model, json).all()
        expected_users = self.query.filter(not_(self.model.age == 10)).all()
        assert 2 == len(actual_users) == len(expected_users)
        assert set(actual_users) == set(expected_users)
Example #17
0
    def test_multi_criteria_and(self):
        self.add_user(age=10, height=20)
        self.add_user(age=10, height=15)
        self.add_user(age=5, height=15)

        json = jsonify({
            'operator':
            'and',
            'value': [{
                'column': 'age',
                'value': 10,
                'operator': '=='
            }, {
                'column': 'height',
                'value': 15,
                'operator': '=='
            }]
        })
        actual_user = jsonquery(self.session, self.model, json).one()
        expected_user = self.query.filter(
            and_(self.model.age == 10, self.model.height == 15)).one()
        assert actual_user is expected_user
Example #18
0
    def test_multi_criteria_or(self):
        self.add_user(age=10, height=20)
        self.add_user(age=10, height=15)
        self.add_user(age=5, height=15)

        json = jsonify({
            'operator':
            'or',
            'value': [{
                'column': 'age',
                'value': 10,
                'operator': '=='
            }, {
                'column': 'height',
                'value': 15,
                'operator': '=='
            }]
        })
        actual_users = jsonquery(self.session, self.model, json).all()
        expected_users = self.query.filter(
            or_(self.model.age == 10, self.model.height == 15)).all()
        assert 3 == len(actual_users) == len(expected_users)
        assert set(actual_users) == set(expected_users)
    def test_multi_criteria_and(self):
        self.add_user(age=10, height=20)
        self.add_user(age=10, height=15)
        self.add_user(age=5, height=15)

        json = jsonify({
            'operator': 'and',
            'value': [
                {
                    'column': 'age',
                    'value': 10,
                    'operator': '=='
                },
                {
                    'column': 'height',
                    'value': 15,
                    'operator': '=='
                }
            ]
        })
        actual_user = jsonquery(self.session, self.model, json).one()
        expected_user = self.query.filter(
            and_(self.model.age == 10, self.model.height == 15)).one()
        assert actual_user is expected_user
Example #20
0
 def test_ge(self):
     json = jsonify({'column': 'foo', 'value': 15, 'operator': '>='})
     actual_foos = jsonquery(self.session, self.model, json).all()
     expected_foos = self.query.filter(self.model.foo >= 15).all()
     assert 2 == len(actual_foos) == len(expected_foos)
     assert set(actual_foos) == set(expected_foos)
Example #21
0
 def test_gt(self):
     json = jsonify({'column': 'foo', 'value': 15, 'operator': '>'})
     actual_foo = jsonquery(self.session, self.model, json).one()
     expected_foo = self.query.filter(self.model.foo > 15).one()
     assert actual_foo is expected_foo