- table_f = '%s$%s' % (self.collection.table_name, k)
- field_q = self._get_cursor_field(table_id, table_f)
- query['where'].append((field_q, '=', v))
+ constraints.append(self._get_cursor_constraint(k, v))
+
+ query = self.Query(fields, tables, constraints)
+ return self.collection.database.connection._get_cursor(query)
+
+ def _get_cursor_field(self, field_name):
+ table_id = self.Table(self.collection.database.db_name, '%s$_id' % self.collection.table_name)
+ table_field = self.Table(self.collection.database.db_name, '%s$%s' % (self.collection.table_name, field_name.split(".")[0]))
+
+ fields = [self.Field(table_field, 'value')]
+ tables = [table_field]
+ constraints = [
+ self.Constraint('=', self.Field(table_field, 'id'), self.Field(table_id, 'id')),
+ self.Constraint('=', self.Field(table_field, 'name'), self.Literal(field_name)),
+ ]
+ return self.Query(fields, tables, constraints)
+
+ def _get_cursor_constraint(self, field_name, field_value):
+ table_id = self.Table(self.collection.database.db_name, '%s$_id' % self.collection.table_name)
+ table_field = self.Table(self.collection.database.db_name, '%s$%s' % (self.collection.table_name, field_name.split(".")[0]))
+
+ if type(field_value) in (int, float):
+ field_type = 'number'
+ else:
+ field_type = 'value'
+ field_value = msgpack.dumps(field_value)