|
1 | 1 | from __future__ import annotations |
2 | | -from typing import Dict |
| 2 | +from typing import Dict, Literal, Optional |
3 | 3 | from instaui.vars.mixin_types.element_binding import ElementBindingMixin |
4 | 4 | from instaui.vars.mixin_types.observable import ObservableMixin |
5 | 5 |
|
@@ -40,10 +40,9 @@ def flat_values( |
40 | 40 | ): |
41 | 41 | return self.__source.flat_values() |
42 | 42 |
|
43 | | - def distinct(self): |
44 | | - query_name = get_store().gen_query( |
45 | | - f"SELECT DISTINCT {self.field} FROM {self.source_name}" |
46 | | - ) |
| 43 | + def distinct(self, *, order_by: Optional[Literal["ASC", "DESC"]] = None): |
| 44 | + sql = f"SELECT DISTINCT {self.field} FROM {self.source_name}{f' ORDER BY {self.field} {order_by}' if order_by else ''}" |
| 45 | + query_name = get_store().gen_query(sql) |
47 | 46 | return _server_query.create_source(query_name).flat_values() |
48 | 47 |
|
49 | 48 |
|
@@ -80,8 +79,7 @@ def source_name(self) -> str: |
80 | 79 | def get_source_type(self): |
81 | 80 | return "query" |
82 | 81 |
|
83 | | - def distinct(self): |
84 | | - query_name = get_store().gen_query( |
85 | | - f"SELECT DISTINCT {self.field} FROM {self.source_name}" |
86 | | - ) |
| 82 | + def distinct(self, *, order_by: Optional[Literal["ASC", "DESC"]] = None): |
| 83 | + sql = f"SELECT DISTINCT {self.field} FROM {self.source_name}{f' ORDER BY {self.field} {order_by}' if order_by else ''}" |
| 84 | + query_name = get_store().gen_query(sql) |
87 | 85 | return _server_query.create_source(query_name).flat_values() |
0 commit comments