sqlengine-lite 2.2.2__tar.gz → 2.2.3__tar.gz

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.
Files changed (23) hide show
  1. {sqlengine_lite-2.2.2/src/sqlengine_lite.egg-info → sqlengine_lite-2.2.3}/PKG-INFO +1 -1
  2. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/pyproject.toml +1 -1
  3. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/_internal/sqlgen.py +2 -0
  4. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/_internal/statements.py +22 -5
  5. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3/src/sqlengine_lite.egg-info}/PKG-INFO +1 -1
  6. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/LICENSE +0 -0
  7. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/README.md +0 -0
  8. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/setup.cfg +0 -0
  9. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/__init__.py +0 -0
  10. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/_internal/__init__.py +0 -0
  11. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/_internal/connection_manager.py +0 -0
  12. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/_internal/repr.py +0 -0
  13. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/_internal/types.py +0 -0
  14. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/exceptions.py +0 -0
  15. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/schema.py +0 -0
  16. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/sqltable.py +0 -0
  17. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/utils/__init__.py +0 -0
  18. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/utils/connection.py +0 -0
  19. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine/utils/convert.py +0 -0
  20. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine_lite.egg-info/SOURCES.txt +0 -0
  21. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine_lite.egg-info/dependency_links.txt +0 -0
  22. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/src/sqlengine_lite.egg-info/top_level.txt +0 -0
  23. {sqlengine_lite-2.2.2 → sqlengine_lite-2.2.3}/tests/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlengine-lite
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: Cute sqlite3 wrapper for sql tables
5
5
  Project-URL: Homepage, https://github.com/suffermuffin/SQL-Engine
6
6
  Project-URL: Repository, https://github.com/suffermuffin/SQL-Engine.git
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sqlengine-lite"
3
- version = "2.2.2"
3
+ version = "2.2.3"
4
4
  description = "Cute sqlite3 wrapper for sql tables"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -68,6 +68,7 @@ def select(
68
68
  tablename : str,
69
69
  columns : str | list[str] = "*",
70
70
  where_clause: str | None = None,
71
+ group_by : str | None = None,
71
72
  order_by : str | None = None,
72
73
  limit : int | str | None = None
73
74
  ) -> str:
@@ -77,6 +78,7 @@ def select(
77
78
 
78
79
  query = f"SELECT {_columns} FROM {tablename}"
79
80
  query += f" WHERE {where_clause}" if where_clause else ""
81
+ query += f" GROUP BY {group_by}" if group_by else ""
80
82
  query += f" ORDER BY {order_by}" if order_by else ""
81
83
  query += f" LIMIT {limit}" if limit else ""
82
84
  query += ";"
@@ -229,6 +229,7 @@ class Select(Statement):
229
229
 
230
230
  self._columns : list[str] = []
231
231
  self._order_by : list[str] = []
232
+ self._group_by : list[str] = []
232
233
  self._aggregate : str | None = None
233
234
  self._limit : int | None = None
234
235
 
@@ -254,12 +255,18 @@ class Select(Statement):
254
255
 
255
256
 
256
257
  def order_by(self, column : str, ascending : bool = True) -> Self:
257
- """ Orders returned rows by provided column """
258
+ """ Order returned rows by provided column """
258
259
  order = "ASC" if ascending else "DESC"
259
260
  self._order_by.append(f"{column} {order}")
260
261
  return self
261
262
 
262
263
 
264
+ def group_by(self, *columns : str) -> Self:
265
+ """ Group by provided columns """
266
+ self._group_by.extend(columns)
267
+ return self
268
+
269
+
263
270
  def limit(self, n : int) -> Self:
264
271
  """ Limit number of returned rows """
265
272
  self._limit = n
@@ -340,8 +347,9 @@ class Select(Statement):
340
347
 
341
348
  def _build(self, where_clause : str, *args : SqlValue) -> tuple[str, tuple[SqlValue, ...]]:
342
349
 
343
- order = sql.format_list(self._order_by, brackets=False)
344
- columns = sql.format_list(self._columns, brackets=False)
350
+ order = sql.format_list(self._order_by, brackets=False) if self._order_by else None
351
+ group = sql.format_list(self._group_by, brackets=False) if self._group_by else None
352
+ columns = sql.format_list(self._columns, brackets=False) if self._columns else None
345
353
 
346
354
  columns = "*" if not columns else columns
347
355
  columns = columns if not self._aggregate else f"{self._aggregate}({columns})"
@@ -353,7 +361,14 @@ class Select(Statement):
353
361
  else:
354
362
  limit = None
355
363
 
356
- query = sql.select(self._tableschema["tablename"], columns, where_clause, order, limit)
364
+ query = sql.select(
365
+ tablename = self._tableschema["tablename"],
366
+ columns = columns,
367
+ where_clause= where_clause,
368
+ order_by = order,
369
+ group_by = group,
370
+ limit = limit,
371
+ )
357
372
 
358
373
  return query, args
359
374
 
@@ -361,6 +376,7 @@ class Select(Statement):
361
376
  def _reset(self) -> None:
362
377
  self._columns = []
363
378
  self._order_by = []
379
+ self._group_by = []
364
380
  self._aggregate = None
365
381
  self._limit = None
366
382
 
@@ -428,4 +444,5 @@ class Update(MutationalStatement):
428
444
 
429
445
  def _reset(self) -> None:
430
446
  self._set_clauses = []
431
- self._set_args = []
447
+ self._set_args = []
448
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlengine-lite
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: Cute sqlite3 wrapper for sql tables
5
5
  Project-URL: Homepage, https://github.com/suffermuffin/SQL-Engine
6
6
  Project-URL: Repository, https://github.com/suffermuffin/SQL-Engine.git
File without changes
File without changes
File without changes