|
@@ -42,7 +42,8 @@ class LeDataSourceSQL(DummyDatasource):
|
42
|
42
|
# @todo this only works with LeObject.get(), LeClass.get() and LeType.get()
|
43
|
43
|
# @todo for speed get rid of all_to_dicts
|
44
|
44
|
# @todo filters: all use cases are not implemented
|
45
|
|
- def select(self, target_cls, field_list, filters, rel_filters=None):
|
|
45
|
+ # @todo group: mosql does not permit direction in group_by clause, it should, so for now we don't use direction in group clause
|
|
46
|
+ def select(self, target_cls, field_list, filters, rel_filters=None, order=None, group=None, limit=None, offset=None):
|
46
|
47
|
|
47
|
48
|
joins = []
|
48
|
49
|
# it is a LeObject, query only on main table
|
|
@@ -61,10 +62,20 @@ class LeDataSourceSQL(DummyDatasource):
|
61
|
62
|
joins = [left_join(class_table, {main_lodel_id:class_lodel_id})]
|
62
|
63
|
fields = [(main_table, common_fields), (class_table, main_class.fieldlist())]
|
63
|
64
|
|
64
|
|
- # prefix column name in field list
|
|
65
|
+ # prefix column name in fields list
|
65
|
66
|
prefixed_field_list = [self.datasource_utils.find_prefix(name, fields) for name in field_list]
|
66
|
67
|
|
67
|
|
- # @todo implement that
|
|
68
|
+ kwargs = {}
|
|
69
|
+ if group:
|
|
70
|
+ kwargs['group_by'] = (self.datasource_utils.find_prefix(column, fields) for column, direction in group)
|
|
71
|
+ if order:
|
|
72
|
+ kwargs['order_by'] = (self.datasource_utils.find_prefix(column, fields) + ' ' + direction for column, direction in order)
|
|
73
|
+ if limit:
|
|
74
|
+ kwargs['limit'] = limit
|
|
75
|
+ if offset:
|
|
76
|
+ kwargs['offset'] = offset
|
|
77
|
+
|
|
78
|
+ # @todo implement that
|
68
|
79
|
#if rel_filters is not None and len(rel_filters) > 0:
|
69
|
80
|
#rel_filters = self._prepare_rel_filters(rel_filters)
|
70
|
81
|
#for rel_filter in rel_filters:
|
|
@@ -78,7 +89,7 @@ class LeDataSourceSQL(DummyDatasource):
|
78
|
89
|
|
79
|
90
|
# prefix filters'' column names, and prepare dict for mosql where {(fieldname, op): value}
|
80
|
91
|
wheres = {(self.datasource_utils.find_prefix(name, fields), op):value for name,op,value in filters}
|
81
|
|
- query = select(main_table, select=prefixed_field_list, where=wheres, joins=joins)
|
|
92
|
+ query = select(main_table, select=prefixed_field_list, where=wheres, joins=joins, **kwargs)
|
82
|
93
|
#print ('SQL', query)
|
83
|
94
|
|
84
|
95
|
# Executing the query
|