ormlambda 2.9.4__py3-none-any.whl → 2.10.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.
@@ -35,7 +35,7 @@ type SelectRes10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] = tuple[*SelectRes9[T1
35
35
 
36
36
 
37
37
  type WhereCondition[T, T1] = Callable[[T, T1], bool]
38
- type JoinCondition[T, T1] = tuple[T1, WhereCondition[T, T1]]
38
+ type JoinCondition[T, T1] = tuple[T1, WhereCondition[T, T1], Optional[JoinType]]
39
39
 
40
40
  type TupleJoins1[T, T1] = tuple[JoinCondition[T, T1]]
41
41
  type TupleJoins2[T, T1, T2] = tuple[*TupleJoins1[T, T1], JoinCondition[T, T2]]
@@ -227,22 +227,29 @@ class IStatements[T, *Ts](ABC):
227
227
  # region join
228
228
 
229
229
  @overload
230
- def join[T1](self, joins: JoinCondition[T, T1]) -> IStatements[T, T1]: ...
230
+ def join[T1](self, table: T1, relation: WhereCondition[T, T1], join_type: Optional[JoinType]) -> IStatements[T, T1]: ...
231
231
  @overload
232
- def join[T1](self, joins: TupleJoins1[T, T1]) -> IStatements[T, T1]: ...
232
+ def join[T1](self, table: JoinCondition[T, T1]) -> IStatements[T, T1]: ...
233
233
  @overload
234
- def join[T1, T2](self, joins: TupleJoins2[T, T1, T2]) -> IStatements[T, T1, T2]: ...
234
+ def join[T1](self, table: TupleJoins1[T, T1]) -> IStatements[T, T1]: ...
235
235
  @overload
236
- def join[T1, T2, T3](self, joins: TupleJoins3[T, T1, T2, T3]) -> IStatements[T, T1, T2, T3]: ...
236
+ def join[T1, T2](self, table: TupleJoins2[T, T1, T2]) -> IStatements[T, T1, T2]: ...
237
237
  @overload
238
- def join[T1, T2, T3, T4](self, joins: TupleJoins4[T, T1, T2, T3, T4]) -> IStatements[T, T1, T2, T3, T4]: ...
238
+ def join[T1, T2, T3](self, table: TupleJoins3[T, T1, T2, T3]) -> IStatements[T, T1, T2, T3]: ...
239
239
  @overload
240
- def join[T1, T2, T3, T4, T5](self, joins: TupleJoins5[T, T1, T2, T3, T4, T5]) -> IStatements[T, T1, T2, T3, T4, T5]: ...
240
+ def join[T1, T2, T3, T4](self, table: TupleJoins4[T, T1, T2, T3, T4]) -> IStatements[T, T1, T2, T3, T4]: ...
241
241
  @overload
242
- def join[T1, T2, T3, T4, T5, T6](self, joins: TupleJoins6[T, T1, T2, T3, T4, T5, T6]) -> IStatements[T, T1, T2, T3, T4, T5, T6]: ...
242
+ def join[T1, T2, T3, T4, T5](self, table: TupleJoins5[T, T1, T2, T3, T4, T5]) -> IStatements[T, T1, T2, T3, T4, T5]: ...
243
+ @overload
244
+ def join[T1, T2, T3, T4, T5, T6](self, table: TupleJoins6[T, T1, T2, T3, T4, T5, T6]) -> IStatements[T, T1, T2, T3, T4, T5, T6]: ...
243
245
 
244
246
  @abstractmethod
245
- def join[*FKTables](self, joins) -> IStatements[T, *FKTables]: ...
247
+ def join[*FKTables](
248
+ self,
249
+ table: Optional[T] = ...,
250
+ relation: Optional[WhereCondition[T, FKTables]] = ...,
251
+ join_type: Optional[JoinType] = ...,
252
+ ) -> IStatements[T, *FKTables]: ...
246
253
 
247
254
  # endregion
248
255
  # region select
@@ -184,13 +184,24 @@ class MySQLStatements[T: Table, *Ts](AbstractSQLStatements[T, *Ts, MySQLConnecti
184
184
  return func.Sum[T](self._model, column=column, alias=alias, alias_name=alias_name)
185
185
 
186
186
  @override
187
- def join[*FKTables](self, joins) -> IStatements_two_generic[T, *FKTables, MySQLConnection]:
188
- if not isinstance(joins[0], tuple):
189
- joins = (joins,)
187
+ def join[*FKTables](
188
+ self,
189
+ table: Optional[T] = None,
190
+ relation: Optional[WhereCondition[T, *FKTables]] = None,
191
+ join_type: Optional[JoinType] = None,
192
+ ) -> IStatements_two_generic[T, *FKTables, MySQLConnection]:
193
+ if isinstance(table, type) and issubclass(table, Table):
194
+ joins = ((table, relation, join_type),)
195
+ else:
196
+ if any(len(x) != 3 for x in table):
197
+ raise ValueError("Each tuple inside of 'join' method must contain the referenced table, relation between columns and join type")
198
+ joins = table
199
+
190
200
  new_tables: list[Type[Table]] = [self._model]
191
- for table, where in joins:
201
+
202
+ for table, where, by in joins:
192
203
  new_tables.append(table)
193
- join_query = JoinSelector[T, type(table)](self._model, table, by=JoinType.INNER_JOIN, where=where)
204
+ join_query = JoinSelector[T, type(table)](self._model, table, by=by, where=where)
194
205
  self._query_list["join"].append(join_query)
195
206
  self._models = new_tables
196
207
  return self
@@ -217,7 +228,7 @@ class MySQLStatements[T: Table, *Ts](AbstractSQLStatements[T, *Ts, MySQLConnecti
217
228
  self._query_list["select"].append(select)
218
229
 
219
230
  self._query: str = self._build()
220
-
231
+
221
232
  if flavour:
222
233
  result = self._return_flavour(self.query, flavour, select, **kwargs)
223
234
  if issubclass(flavour, tuple) and isinstance(selector(*self._models), property):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ormlambda
3
- Version: 2.9.4
3
+ Version: 2.10.0
4
4
  Summary: ORM designed to interact with the database (currently with MySQL) using lambda functions and nested functions
5
5
  Author: p-hzamora
6
6
  Author-email: p.hzamora@icloud.com
@@ -15,7 +15,7 @@ ormlambda/common/interfaces/IDecompositionQuery.py,sha256=7B4cnbJbyESk8GltS1A8wC
15
15
  ormlambda/common/interfaces/INonQueryCommand.py,sha256=7CjLW4sKqkR5zUIGvhRXOtzTs6vypJW1a9EJHlgCw2c,260
16
16
  ormlambda/common/interfaces/IQueryCommand.py,sha256=hfzCosK4-n8RJIb2PYs8b0qU3TNmfYluZXBf47KxxKs,331
17
17
  ormlambda/common/interfaces/IRepositoryBase.py,sha256=M4pD4t6tXo5WaRhwu2vsza1FoAj2S-rEJKjPfKeSRn0,1134
18
- ormlambda/common/interfaces/IStatements.py,sha256=RQpOy3REjRf9SV9kDo0ohEzfkzkVBxD_gSiM-Dii5-Y,12821
18
+ ormlambda/common/interfaces/IStatements.py,sha256=bew7bXGQ2YdT2BKko-RS35_w5qBLgo8FKyaSbr7ijqc,13130
19
19
  ormlambda/common/interfaces/__init__.py,sha256=00ca9a-u_A8DzyEyxPfBMxfqLKFzzUgJaeNmoRitAbA,360
20
20
  ormlambda/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  ormlambda/components/delete/IDelete.py,sha256=06ZEdbKBxsHSwsGMBu0E1om4WJjojZAm-L3b95eQrcc,139
@@ -57,7 +57,7 @@ ormlambda/databases/my_sql/functions/max.py,sha256=zrO_RBKsHhyokEmSpPI6Yg5OY6Jf4
57
57
  ormlambda/databases/my_sql/functions/min.py,sha256=SEVuUdIJNz9zM5za1kLTWalFkhErjsjyBb8SU8n0F94,1190
58
58
  ormlambda/databases/my_sql/functions/sum.py,sha256=akKYr2dI8TZS5MDvybfHn_idhPOvEH0cj6mDRQIHe-M,1188
59
59
  ormlambda/databases/my_sql/repository.py,sha256=6qrP-JC4tvUxin3ixGKBeuqvU9cl9mkjNCdwjWZQA9Y,9059
60
- ormlambda/databases/my_sql/statements.py,sha256=h7tcyCnGaT2nvWyGhfepLTfgn8bMi5f_Bi_09jOfZm4,12455
60
+ ormlambda/databases/my_sql/statements.py,sha256=d__3pLfNObTmlUK8yL-N7fMm4C6hNZhrnCYM0CUEhgQ,12867
61
61
  ormlambda/model_base.py,sha256=_UGTnin-yUi9ecT-28YY6TniIPdrje-jMFD3QXyZD6c,1243
62
62
  ormlambda/utils/__init__.py,sha256=ywMdWqmA2jHj19-W-S04yfaYF5hv4IZ1lZDq0B8Jnjs,142
63
63
  ormlambda/utils/column.py,sha256=SqbX8N63_RwXNrMXuVMOpatDw--aLc47o3kG1sEXhNs,3413
@@ -75,7 +75,7 @@ ormlambda/utils/module_tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
75
75
  ormlambda/utils/module_tree/dfs_traversal.py,sha256=lSF03G63XtJFLp03ueAmsHMBvhUkjptDbK3IugXm8iU,1425
76
76
  ormlambda/utils/module_tree/dynamic_module.py,sha256=zwvjU3U2cz6H2CDp9Gncs5D5bSAyfITNa2SDqFDl8rw,8551
77
77
  ormlambda/utils/table_constructor.py,sha256=ch1geCSJIQnnv_D_uzfYk6do533kjtZyeCIh2t0_dkU,10863
78
- ormlambda-2.9.4.dist-info/LICENSE,sha256=xBprFw8GJLdHMOoUqDk0427EvjIcbEREvXXVFULuuXU,1080
79
- ormlambda-2.9.4.dist-info/METADATA,sha256=URSNrN9Sg-EsXEJ-XI7iBDBXmB-V7rTCX1jvysybIb8,8461
80
- ormlambda-2.9.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
81
- ormlambda-2.9.4.dist-info/RECORD,,
78
+ ormlambda-2.10.0.dist-info/LICENSE,sha256=xBprFw8GJLdHMOoUqDk0427EvjIcbEREvXXVFULuuXU,1080
79
+ ormlambda-2.10.0.dist-info/METADATA,sha256=gPWslhcBiUlKHa2OCKwBwbWJUmZ4ObU12Kugr2Onv5M,8462
80
+ ormlambda-2.10.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
81
+ ormlambda-2.10.0.dist-info/RECORD,,