rb-commons 0.4.10__tar.gz → 0.4.11__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 (31) hide show
  1. {rb_commons-0.4.10 → rb_commons-0.4.11}/PKG-INFO +1 -1
  2. rb_commons-0.4.11/rb_commons/schemes/pagination.py +47 -0
  3. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons.egg-info/PKG-INFO +1 -1
  4. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons.egg-info/SOURCES.txt +1 -0
  5. {rb_commons-0.4.10 → rb_commons-0.4.11}/setup.py +1 -1
  6. {rb_commons-0.4.10 → rb_commons-0.4.11}/README.md +0 -0
  7. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/__init__.py +0 -0
  8. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/broker/__init__.py +0 -0
  9. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/broker/consumer.py +0 -0
  10. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/configs/__init__.py +0 -0
  11. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/configs/config.py +0 -0
  12. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/configs/injections.py +0 -0
  13. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/configs/rabbitmq.py +0 -0
  14. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/http/__init__.py +0 -0
  15. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/http/base_api.py +0 -0
  16. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/http/consul.py +0 -0
  17. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/http/exceptions.py +0 -0
  18. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/orm/__init__.py +0 -0
  19. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/orm/exceptions.py +0 -0
  20. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/orm/managers.py +0 -0
  21. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/orm/services.py +0 -0
  22. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/permissions/__init__.py +0 -0
  23. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/permissions/role_permissions.py +0 -0
  24. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/schemes/__init__.py +0 -0
  25. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/schemes/jwt.py +0 -0
  26. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/utils/__init__.py +0 -0
  27. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons/utils/media.py +0 -0
  28. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons.egg-info/dependency_links.txt +0 -0
  29. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons.egg-info/requires.txt +0 -0
  30. {rb_commons-0.4.10 → rb_commons-0.4.11}/rb_commons.egg-info/top_level.txt +0 -0
  31. {rb_commons-0.4.10 → rb_commons-0.4.11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rb-commons
3
- Version: 0.4.10
3
+ Version: 0.4.11
4
4
  Summary: Commons of project and simplified orm based on sqlalchemy.
5
5
  Home-page: https://github.com/RoboSell-organization/rb-commons
6
6
  Author: Abdulvoris
@@ -0,0 +1,47 @@
1
+ from typing import Generic, TypeVar, Optional
2
+ from pydantic import BaseModel, Field
3
+
4
+ T = TypeVar('T')
5
+
6
+ class PaginationParams(BaseModel):
7
+ """Pagination parameters for querying."""
8
+ page: int = Field(default=1, ge=1, description="Page number")
9
+ per_page: int = Field(default=10, ge=1, le=100, description="Items per page")
10
+ sort_by: Optional[str] = Field(default=None, description="Field to sort by")
11
+ sort_order: Optional[str] = Field(default="desc", description="Sort order (asc/desc)")
12
+
13
+ class PaginationMeta(BaseModel):
14
+ """Metadata for paginated responses."""
15
+ total: int = Field(..., description="Total number of items")
16
+ page: int = Field(..., description="Current page number")
17
+ per_page: int = Field(..., description="Items per page")
18
+ total_pages: int = Field(..., description="Total number of pages")
19
+ has_next: bool = Field(..., description="Whether there is a next page")
20
+ has_prev: bool = Field(..., description="Whether there is a previous page")
21
+
22
+ class PaginatedResponse(BaseModel, Generic[T]):
23
+ """Generic paginated response."""
24
+ items: list[T] = Field(..., description="List of items")
25
+ meta: PaginationMeta = Field(..., description="Pagination metadata")
26
+
27
+ @classmethod
28
+ def create(
29
+ cls,
30
+ items: list[T],
31
+ total: int,
32
+ page: int,
33
+ per_page: int
34
+ ) -> "PaginatedResponse[T]":
35
+ """Create a paginated response with calculated metadata."""
36
+ total_pages = (total + per_page - 1) // per_page
37
+ return cls(
38
+ items=items,
39
+ meta=PaginationMeta(
40
+ total=total,
41
+ page=page,
42
+ per_page=per_page,
43
+ total_pages=total_pages,
44
+ has_next=page < total_pages,
45
+ has_prev=page > 1
46
+ )
47
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rb-commons
3
- Version: 0.4.10
3
+ Version: 0.4.11
4
4
  Summary: Commons of project and simplified orm based on sqlalchemy.
5
5
  Home-page: https://github.com/RoboSell-organization/rb-commons
6
6
  Author: Abdulvoris
@@ -24,5 +24,6 @@ rb_commons/permissions/__init__.py
24
24
  rb_commons/permissions/role_permissions.py
25
25
  rb_commons/schemes/__init__.py
26
26
  rb_commons/schemes/jwt.py
27
+ rb_commons/schemes/pagination.py
27
28
  rb_commons/utils/__init__.py
28
29
  rb_commons/utils/media.py
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="rb-commons",
8
- version="0.4.10",
8
+ version="0.4.11",
9
9
  author="Abdulvoris",
10
10
  author_email="erkinovabdulvoris101@gmail.com",
11
11
  description="Commons of project and simplified orm based on sqlalchemy.",
File without changes
File without changes