ormlambda 3.35.2__py3-none-any.whl → 4.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ormlambda/__init__.py +79 -51
- ormlambda/caster/caster.py +6 -1
- ormlambda/common/abstract_classes/__init__.py +0 -2
- ormlambda/common/enums/__init__.py +1 -0
- ormlambda/common/enums/order_type.py +9 -0
- ormlambda/common/errors/__init__.py +13 -3
- ormlambda/common/global_checker.py +86 -8
- ormlambda/common/interfaces/IQueryCommand.py +2 -2
- ormlambda/common/interfaces/__init__.py +0 -2
- ormlambda/dialects/__init__.py +75 -3
- ormlambda/dialects/default/base.py +1 -1
- ormlambda/dialects/mysql/__init__.py +35 -78
- ormlambda/dialects/mysql/base.py +226 -40
- ormlambda/dialects/mysql/clauses/ST_AsText.py +26 -0
- ormlambda/dialects/mysql/clauses/ST_Contains.py +30 -0
- ormlambda/dialects/mysql/clauses/__init__.py +1 -0
- ormlambda/dialects/mysql/repository/__init__.py +1 -0
- ormlambda/{databases/my_sql → dialects/mysql/repository}/repository.py +0 -5
- ormlambda/dialects/mysql/types.py +6 -0
- ormlambda/engine/base.py +26 -4
- ormlambda/errors.py +9 -0
- ormlambda/model/base_model.py +3 -10
- ormlambda/repository/base_repository.py +1 -1
- ormlambda/repository/interfaces/IRepositoryBase.py +0 -7
- ormlambda/repository/response.py +12 -7
- ormlambda/sql/__init__.py +12 -3
- ormlambda/sql/clause_info/__init__.py +0 -2
- ormlambda/sql/clause_info/clause_info.py +94 -76
- ormlambda/sql/clause_info/interface/IAggregate.py +14 -4
- ormlambda/sql/clause_info/interface/IClauseInfo.py +6 -11
- ormlambda/sql/clauses/alias.py +6 -37
- ormlambda/sql/clauses/count.py +21 -36
- ormlambda/sql/clauses/group_by.py +13 -19
- ormlambda/sql/clauses/having.py +2 -6
- ormlambda/sql/clauses/insert.py +3 -3
- ormlambda/sql/clauses/interfaces/__init__.py +0 -1
- ormlambda/sql/clauses/join/join_context.py +5 -12
- ormlambda/sql/clauses/joins.py +34 -52
- ormlambda/sql/clauses/limit.py +1 -2
- ormlambda/sql/clauses/offset.py +1 -2
- ormlambda/sql/clauses/order.py +17 -21
- ormlambda/sql/clauses/select.py +56 -28
- ormlambda/sql/clauses/update.py +13 -10
- ormlambda/sql/clauses/where.py +20 -39
- ormlambda/sql/column/__init__.py +1 -0
- ormlambda/sql/column/column.py +19 -12
- ormlambda/sql/column/column_proxy.py +117 -0
- ormlambda/sql/column_table_proxy.py +23 -0
- ormlambda/sql/comparer.py +31 -65
- ormlambda/sql/compiler.py +248 -58
- ormlambda/sql/context/__init__.py +304 -0
- ormlambda/sql/ddl.py +19 -5
- ormlambda/sql/elements.py +3 -0
- ormlambda/sql/foreign_key.py +42 -64
- ormlambda/sql/functions/__init__.py +0 -1
- ormlambda/sql/functions/concat.py +35 -38
- ormlambda/sql/functions/max.py +12 -36
- ormlambda/sql/functions/min.py +13 -28
- ormlambda/sql/functions/sum.py +17 -33
- ormlambda/sql/sqltypes.py +2 -0
- ormlambda/sql/table/__init__.py +1 -0
- ormlambda/sql/table/table.py +32 -49
- ormlambda/sql/table/table_proxy.py +88 -0
- ormlambda/sql/type_api.py +4 -1
- ormlambda/sql/types.py +15 -12
- ormlambda/statements/__init__.py +0 -2
- ormlambda/statements/base_statement.py +51 -84
- ormlambda/statements/interfaces/IStatements.py +77 -123
- ormlambda/statements/interfaces/__init__.py +1 -1
- ormlambda/statements/query_builder.py +296 -128
- ormlambda/statements/statements.py +120 -110
- ormlambda/statements/types.py +5 -25
- ormlambda/util/__init__.py +7 -86
- ormlambda/util/langhelpers.py +102 -0
- ormlambda/util/module_tree/dynamic_module.py +1 -1
- ormlambda/util/preloaded.py +80 -0
- ormlambda/util/typing.py +12 -3
- {ormlambda-3.35.2.dist-info → ormlambda-4.0.0.dist-info}/METADATA +29 -31
- ormlambda-4.0.0.dist-info/RECORD +139 -0
- ormlambda/common/abstract_classes/clause_info_converter.py +0 -65
- ormlambda/common/abstract_classes/decomposition_query.py +0 -141
- ormlambda/common/abstract_classes/query_base.py +0 -15
- ormlambda/common/interfaces/ICustomAlias.py +0 -7
- ormlambda/common/interfaces/IDecompositionQuery.py +0 -33
- ormlambda/databases/__init__.py +0 -4
- ormlambda/databases/my_sql/__init__.py +0 -3
- ormlambda/databases/my_sql/clauses/ST_AsText.py +0 -37
- ormlambda/databases/my_sql/clauses/ST_Contains.py +0 -36
- ormlambda/databases/my_sql/clauses/__init__.py +0 -14
- ormlambda/databases/my_sql/clauses/count.py +0 -33
- ormlambda/databases/my_sql/clauses/delete.py +0 -9
- ormlambda/databases/my_sql/clauses/drop_table.py +0 -26
- ormlambda/databases/my_sql/clauses/group_by.py +0 -17
- ormlambda/databases/my_sql/clauses/having.py +0 -12
- ormlambda/databases/my_sql/clauses/insert.py +0 -9
- ormlambda/databases/my_sql/clauses/joins.py +0 -14
- ormlambda/databases/my_sql/clauses/limit.py +0 -6
- ormlambda/databases/my_sql/clauses/offset.py +0 -6
- ormlambda/databases/my_sql/clauses/order.py +0 -8
- ormlambda/databases/my_sql/clauses/update.py +0 -8
- ormlambda/databases/my_sql/clauses/upsert.py +0 -9
- ormlambda/databases/my_sql/clauses/where.py +0 -7
- ormlambda/dialects/interface/__init__.py +0 -1
- ormlambda/dialects/interface/dialect.py +0 -78
- ormlambda/sql/clause_info/aggregate_function_base.py +0 -96
- ormlambda/sql/clause_info/clause_info_context.py +0 -87
- ormlambda/sql/clauses/interfaces/ISelect.py +0 -17
- ormlambda/sql/clauses/new_join.py +0 -119
- ormlambda/util/load_module.py +0 -21
- ormlambda/util/plugin_loader.py +0 -32
- ormlambda-3.35.2.dist-info/RECORD +0 -159
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/__init__.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/caster.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/__init__.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/boolean.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/bytes.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/date.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/datetime.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/decimal.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/float.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/int.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/iterable.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/json.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/none.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/point.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/string.py +0 -0
- /ormlambda/{databases/my_sql → dialects/mysql/repository}/pool_types.py +0 -0
- {ormlambda-3.35.2.dist-info → ormlambda-4.0.0.dist-info}/AUTHORS +0 -0
- {ormlambda-3.35.2.dist-info → ormlambda-4.0.0.dist-info}/LICENSE +0 -0
- {ormlambda-3.35.2.dist-info → ormlambda-4.0.0.dist-info}/WHEEL +0 -0
@@ -1,35 +1,21 @@
|
|
1
1
|
from __future__ import annotations
|
2
|
-
from typing import Any, Callable, Optional, Type, overload, TYPE_CHECKING
|
3
|
-
from enum import Enum
|
2
|
+
from typing import Any, Callable, Iterable, Optional, Type, overload, TYPE_CHECKING
|
4
3
|
from abc import abstractmethod
|
5
4
|
|
6
5
|
|
7
6
|
if TYPE_CHECKING:
|
8
|
-
from ormlambda.repository import BaseRepository
|
9
7
|
from ormlambda import Table
|
10
|
-
from ormlambda.sql.clause_info import IAggregate
|
11
8
|
from ormlambda.sql.types import TupleJoinType, ColumnType
|
12
9
|
from ormlambda.sql.clauses.join import JoinContext
|
13
10
|
from ormlambda.common.enums import JoinType
|
14
|
-
from ormlambda.sql.clause_info import ClauseInfo
|
15
11
|
from ormlambda.sql.types import AliasType
|
16
12
|
|
17
|
-
from ..types import
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
Select5,
|
24
|
-
Select6,
|
25
|
-
Select7,
|
26
|
-
Select8,
|
27
|
-
Select9,
|
28
|
-
Select10,
|
29
|
-
TypeExists,
|
30
|
-
WhereTypes,
|
31
|
-
SelectCols,
|
32
|
-
)
|
13
|
+
from ..types import OrderTypes
|
14
|
+
from ..types import Tuple
|
15
|
+
from ..types import TypeExists
|
16
|
+
from ..types import WhereTypes
|
17
|
+
from ..types import SelectCols
|
18
|
+
|
33
19
|
from ormlambda.sql.elements import Element
|
34
20
|
|
35
21
|
|
@@ -37,6 +23,9 @@ class IStatements[T: Table](Element):
|
|
37
23
|
@abstractmethod
|
38
24
|
def create_table(self, if_exists: TypeExists = "fail") -> None: ...
|
39
25
|
|
26
|
+
@abstractmethod
|
27
|
+
def drop_table(self) -> None: ...
|
28
|
+
|
40
29
|
# #TODOL [ ]: We must to implement this mehtod
|
41
30
|
# @abstractmethod
|
42
31
|
# def drop_table(self)->None: ...
|
@@ -101,7 +90,6 @@ class IStatements[T: Table](Element):
|
|
101
90
|
type ColumnType[TProp]:
|
102
91
|
- TProp
|
103
92
|
- Column[TProp]
|
104
|
-
- AsteriskType
|
105
93
|
- tuple[Column]
|
106
94
|
"""
|
107
95
|
...
|
@@ -112,7 +100,6 @@ class IStatements[T: Table](Element):
|
|
112
100
|
type ColumnType[TProp]:
|
113
101
|
- TProp
|
114
102
|
- Column[TProp]
|
115
|
-
- AsteriskType
|
116
103
|
- tuple[Column]
|
117
104
|
"""
|
118
105
|
...
|
@@ -135,9 +122,8 @@ class IStatements[T: Table](Element):
|
|
135
122
|
@abstractmethod
|
136
123
|
def count[TProp](
|
137
124
|
self,
|
138
|
-
selection:
|
139
|
-
alias:
|
140
|
-
execute: bool = False,
|
125
|
+
selection: Optional[SelectCols[T, TProp]] = ...,
|
126
|
+
alias: AliasType[T] = ...,
|
141
127
|
) -> Optional[int]: ...
|
142
128
|
|
143
129
|
# endregion
|
@@ -156,41 +142,46 @@ class IStatements[T: Table](Element):
|
|
156
142
|
# endregion
|
157
143
|
|
158
144
|
# region where
|
159
|
-
|
160
145
|
@overload
|
161
|
-
def where
|
162
|
-
|
146
|
+
def where(self, conditions: WhereTypes[T]) -> IStatements[T]: ...
|
147
|
+
@overload
|
148
|
+
def where(self, conditions: WhereTypes[T], restrictive: bool) -> IStatements[T]: ...
|
163
149
|
@abstractmethod
|
164
|
-
def where
|
150
|
+
def where(self, conditions: WhereTypes[T] = None, restrictive: bool = ...) -> IStatements[T]: ...
|
165
151
|
|
166
152
|
# endregion
|
167
153
|
|
168
154
|
# region having
|
169
155
|
|
170
156
|
@overload
|
171
|
-
def having
|
157
|
+
def having(self, conditions: WhereTypes[T]) -> IStatements[T]: ...
|
158
|
+
@overload
|
159
|
+
def having(self, conditions: WhereTypes[T], restrictive: bool) -> IStatements[T]: ...
|
172
160
|
|
173
161
|
@abstractmethod
|
174
|
-
def having
|
162
|
+
def having(self, conditions: WhereTypes[T] = None, restrictive: bool = ...) -> IStatements[T]: ...
|
175
163
|
|
176
164
|
# endregion
|
177
165
|
# region order
|
178
|
-
@
|
166
|
+
@overload
|
167
|
+
def order[TValue](self, columns: SelectCols[T, TValue]) -> IStatements[T]: ...
|
168
|
+
@overload
|
179
169
|
def order[TValue](self, columns: SelectCols[T, TValue], order_type: OrderTypes) -> IStatements[T]: ...
|
180
|
-
|
181
|
-
# endregion
|
182
|
-
# region concat
|
183
170
|
@overload
|
184
|
-
def
|
171
|
+
def order[TValue](self, columns: Iterable[SelectCols[T, TValue]]) -> IStatements[T]: ...
|
172
|
+
@overload
|
173
|
+
def order[TValue](self, columns: Iterable[SelectCols[T, TValue]], order_type: Iterable[OrderTypes]) -> IStatements[T]: ...
|
174
|
+
@abstractmethod
|
175
|
+
def order[TValue](self, columns: SelectCols[T, TValue], order_type: OrderTypes = ...) -> IStatements[T]: ...
|
185
176
|
|
186
177
|
# endregion
|
178
|
+
|
187
179
|
# region max
|
188
180
|
@abstractmethod
|
189
181
|
def max[TProp](
|
190
182
|
self,
|
191
183
|
column: SelectCols[T, TProp],
|
192
|
-
alias:
|
193
|
-
execute: bool = False,
|
184
|
+
alias: AliasType[T] = ...,
|
194
185
|
) -> int: ...
|
195
186
|
# endregion
|
196
187
|
# region min
|
@@ -198,8 +189,7 @@ class IStatements[T: Table](Element):
|
|
198
189
|
def min[TProp](
|
199
190
|
self,
|
200
191
|
column: SelectCols[T, TProp],
|
201
|
-
alias:
|
202
|
-
execute: bool = False,
|
192
|
+
alias: AliasType[T] = ...,
|
203
193
|
) -> int: ...
|
204
194
|
# endregion
|
205
195
|
# region sum
|
@@ -207,8 +197,7 @@ class IStatements[T: Table](Element):
|
|
207
197
|
def sum[TProp](
|
208
198
|
self,
|
209
199
|
column: SelectCols[T, TProp],
|
210
|
-
alias:
|
211
|
-
execute: bool = False,
|
200
|
+
alias: AliasType[T] = ...,
|
212
201
|
) -> int: ...
|
213
202
|
|
214
203
|
@overload
|
@@ -216,100 +205,83 @@ class IStatements[T: Table](Element):
|
|
216
205
|
|
217
206
|
# endregion
|
218
207
|
# region select
|
219
|
-
type SelectorType[TOri, *T] = Callable[[TOri], tuple[*T]] | tuple[*T]
|
220
|
-
type SelectorFlavourType[T, TResponse] = Optional[Callable[[T], TResponse]] | TResponse
|
221
|
-
type SelectorOneType[T, TResponse] = Callable[[T, TResponse]] | TResponse
|
222
|
-
|
223
|
-
@overload
|
224
|
-
def select[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], *, by: Optional[Enum] = ...) -> Select10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]: ...
|
225
|
-
@overload
|
226
|
-
def select[T1, T2, T3, T4, T5, T6, T7, T8, T9](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7, T8, T9], *, by: Optional[Enum] = ...) -> Select9[T1, T2, T3, T4, T5, T6, T7, T8, T9]: ...
|
227
|
-
@overload
|
228
|
-
def select[T1, T2, T3, T4, T5, T6, T7, T8](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7, T8], *, by: Optional[Enum] = ...) -> Select8[T1, T2, T3, T4, T5, T6, T7, T8]: ...
|
229
|
-
@overload
|
230
|
-
def select[T1, T2, T3, T4, T5, T6, T7](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7], *, by: Optional[Enum] = ...) -> Select7[T1, T2, T3, T4, T5, T6, T7]: ...
|
231
|
-
@overload
|
232
|
-
def select[T1, T2, T3, T4, T5, T6](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6], *, by: Optional[Enum] = ...) -> Select6[T1, T2, T3, T4, T5, T6]: ...
|
233
|
-
@overload
|
234
|
-
def select[T1, T2, T3, T4, T5](self, selector: SelectorType[T, T1, T2, T3, T4, T5], *, by: Optional[Enum] = ...) -> Select5[T1, T2, T3, T4, T5]: ...
|
235
|
-
@overload
|
236
|
-
def select[T1, T2, T3, T4](self, selector: SelectorType[T, T1, T2, T3, T4], *, by: Optional[Enum] = ...) -> Select4[T1, T2, T3, T4]: ...
|
237
|
-
@overload
|
238
|
-
def select[T1, T2, T3](self, selector: SelectorType[T, T1, T2, T3], *, by: Optional[Enum] = ...) -> Select3[T1, T2, T3]: ...
|
239
208
|
@overload
|
240
|
-
def select[T1
|
209
|
+
def select[T1](self, selector: Callable[[T], T1 | tuple[T1]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[T1, ...]: ...
|
241
210
|
@overload
|
242
|
-
def select[T1](self, selector:
|
211
|
+
def select[*T1](self, selector: Callable[[T], tuple[*T1]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> Tuple[*T1]: ...
|
243
212
|
@overload
|
244
|
-
def select
|
245
|
-
@overload
|
246
|
-
def select(self) -> Tuple[T]: ...
|
213
|
+
def select(self, *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> Tuple[T]: ...
|
247
214
|
|
248
|
-
#
|
249
|
-
# def select[TFlavour](self, selector: Optional[Callable[[T], tuple]] = ..., *, cast_to_tuple: bool = ..., flavour: Type[TFlavour], by: Optional[Enum] = ..., **kwargs) -> TFlavour: ...
|
250
|
-
@overload
|
251
|
-
def select[TRes](self, selector: SelectorFlavourType[T, TRes] = ..., *, flavour: Type[tuple], by: Optional[Enum] = ..., alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> tuple[TRes, ...]: ...
|
215
|
+
# region deal with flavours
|
252
216
|
@overload
|
253
|
-
def select[
|
217
|
+
def select[TFlavour](self, selector: Callable[[T], tuple[tuple]] = ..., *, flavour: Type[TFlavour], **kwargs) -> tuple[TFlavour, ...]: ...
|
254
218
|
@overload
|
255
|
-
def select[
|
219
|
+
def select[*TRes](self, selector: Callable[[T], tuple[*TRes]] = ..., *, flavour: Type[tuple], **kwargs) -> tuple[tuple[*TRes]]: ...
|
220
|
+
|
221
|
+
# endregion
|
256
222
|
|
257
223
|
@abstractmethod
|
258
|
-
def select
|
224
|
+
def select(
|
225
|
+
self,
|
226
|
+
selector=...,
|
227
|
+
*,
|
228
|
+
flavour=...,
|
229
|
+
by=...,
|
230
|
+
alias=...,
|
231
|
+
avoid_duplicates=...,
|
232
|
+
): ...
|
259
233
|
|
260
234
|
# endregion
|
261
235
|
# region select_one
|
262
236
|
@overload
|
263
|
-
def select_one(self) -> T: ...
|
264
|
-
@overload
|
265
|
-
def select_one[TFlavour](self, *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
|
266
|
-
@overload
|
267
|
-
def select_one[T1](self, selector: SelectorOneType[T, T1 | tuple[T1]], *, by: Optional[Enum] = ...) -> T1: ...
|
237
|
+
def select_one(self, *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> T: ...
|
268
238
|
@overload
|
269
|
-
def select_one[*TRes](self, selector:
|
239
|
+
def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
|
270
240
|
@overload
|
271
|
-
def select_one
|
241
|
+
def select_one(self, selector: Callable[[T], tuple], *, flavour: Type[dict], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> dict[str, Any]: ...
|
272
242
|
@overload
|
273
|
-
def select_one[
|
243
|
+
def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[tuple], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
|
274
244
|
@overload
|
275
|
-
def select_one[*
|
245
|
+
def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[list], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
|
276
246
|
@overload
|
277
|
-
def select_one[TFlavour](self, selector:
|
247
|
+
def select_one[TFlavour, *TRes](self, selector: Callable[[T], tuple[T, *TRes]], *, flavour: Type[TFlavour], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> TFlavour[*TRes]: ...
|
248
|
+
|
278
249
|
@abstractmethod
|
279
|
-
def select_one
|
250
|
+
def select_one(
|
280
251
|
self,
|
281
|
-
selector
|
252
|
+
selector=...,
|
282
253
|
*,
|
283
|
-
flavour
|
284
|
-
by
|
254
|
+
flavour=...,
|
255
|
+
by=...,
|
256
|
+
alias=...,
|
257
|
+
avoid_duplicates=...,
|
285
258
|
): ...
|
286
259
|
|
287
260
|
# endregion
|
288
261
|
|
289
262
|
# region first
|
290
263
|
@overload
|
291
|
-
def first(self) -> T: ...
|
292
|
-
@overload
|
293
|
-
def first[T1](self, selector: SelectorOneType[T, T1 | tuple[T1]], *, by: Optional[Enum] = ...) -> T1: ...
|
294
|
-
@overload
|
295
|
-
def first[*TRes](self, selector: SelectorOneType[T, tuple[*TRes]], *, by: Optional[Enum] = ...) -> tuple[*TRes]: ...
|
264
|
+
def first(self, *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> T: ...
|
296
265
|
@overload
|
297
|
-
def first[
|
266
|
+
def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
|
298
267
|
@overload
|
299
|
-
def first
|
268
|
+
def first(self, selector: Callable[[T], tuple], *, flavour: Type[dict], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> dict[str, Any]: ...
|
300
269
|
@overload
|
301
|
-
def first[
|
270
|
+
def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[tuple], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
|
302
271
|
@overload
|
303
|
-
def first[*
|
272
|
+
def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[list], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
|
304
273
|
@overload
|
305
|
-
def first[TFlavour](self, selector:
|
274
|
+
def first[TFlavour, *TRes](self, selector: Callable[[T], tuple[T, *TRes]], *, flavour: Type[TFlavour], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> TFlavour[*TRes]: ...
|
275
|
+
|
306
276
|
@abstractmethod
|
307
|
-
def first
|
277
|
+
def first(
|
308
278
|
self,
|
309
|
-
selector
|
279
|
+
selector=...,
|
310
280
|
*,
|
311
|
-
flavour
|
312
|
-
by
|
281
|
+
flavour=...,
|
282
|
+
by=...,
|
283
|
+
alias=...,
|
284
|
+
avoid_duplicates=...,
|
313
285
|
): ...
|
314
286
|
|
315
287
|
# endregion
|
@@ -322,24 +294,6 @@ class IStatements[T: Table](Element):
|
|
322
294
|
@abstractmethod
|
323
295
|
def groupby[TRepo](self, column: list[SelectCols[T, TRepo]] | SelectCols[T, TRepo]) -> IStatements[T]: ...
|
324
296
|
|
325
|
-
|
326
|
-
|
327
|
-
@abstractmethod
|
328
|
-
def alias[TProp](self, column: SelectCols[T, TProp], alias: AliasType[ClauseInfo[T]]) -> ClauseInfo[T]: ...
|
329
|
-
|
297
|
+
def compile(self) -> str: ...
|
330
298
|
|
331
|
-
|
332
|
-
@property
|
333
|
-
@abstractmethod
|
334
|
-
def repository(self) -> BaseRepository[TPool]: ...
|
335
|
-
|
336
|
-
@property
|
337
|
-
@abstractmethod
|
338
|
-
def query(self) -> str: ...
|
339
|
-
|
340
|
-
@property
|
341
|
-
def model(self) -> Type[T]: ...
|
342
|
-
|
343
|
-
# TODOL: add P when wil be possible
|
344
|
-
@property
|
345
|
-
def models(self) -> tuple: ...
|
299
|
+
# endregion
|
@@ -1 +1 @@
|
|
1
|
-
from .IStatements import IStatements
|
1
|
+
from .IStatements import IStatements # noqa: F401
|