Skip to content

Commit 5af3789

Browse files
committed
100% async db access and views.
1 parent 5145aab commit 5af3789

File tree

5 files changed

+17
-11
lines changed

5 files changed

+17
-11
lines changed
0 Bytes
Binary file not shown.

code/ch8-async-databases/services/package_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,6 @@ async def get_latest_release_for_package(package_name: str) -> Optional[Release]
5454
.order_by(Release.created_date.desc())
5555

5656
results = await session.execute(query)
57-
release = results.scalar_one_or_none()
57+
release = results.scalar()
5858

5959
return release

code/ch8-async-databases/viewmodels/home/indexviewmodel.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from starlette.requests import Request
44

5+
from data.package import Package
56
from services import package_service, user_service
67
from viewmodels.shared.viewmodel import ViewModelBase
78

@@ -13,10 +14,10 @@ def __init__(self, request: Request):
1314
self.release_count: int = 0
1415
self.user_count: int = 0
1516
self.package_count: int = 0
16-
self.packages: List = []
17+
self.packages: List = [Package]
1718

1819
async def load(self):
19-
self.release_count: int = package_service.release_count()
20+
self.release_count: int = await package_service.release_count()
2021
self.user_count: int = await user_service.user_count()
21-
self.package_count: int = package_service.package_count()
22-
self.packages: List = package_service.latest_packages(limit=7)
22+
self.package_count: int = await package_service.package_count()
23+
self.packages = await package_service.latest_packages(limit=7)

code/ch8-async-databases/viewmodels/packages/details_viewmodel.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from starlette.requests import Request
55

6+
from data.package import Package
67
from data.release import Release
78
from services import package_service, user_service
89
from viewmodels.shared.viewmodel import ViewModelBase
@@ -13,16 +14,18 @@ def __init__(self, package_name: str, request: Request):
1314
super().__init__(request)
1415

1516
self.package_name = package_name
16-
self.package = package_service.get_package_by_id(package_name)
17-
self.latest_release = package_service.get_latest_release_for_package(package_name)
1817
self.latest_version = "0.0.0"
1918
self.is_latest = True
2019
self.maintainers = []
20+
self.package: Optional[Package] = None
21+
self.latest_release: Optional[Release] = None
22+
23+
async def load(self):
24+
self.package = await package_service.get_package_by_id(self.package_name)
25+
self.latest_release = await package_service.get_latest_release_for_package(self.package_name)
2126

2227
if not self.package or not self.latest_release:
2328
return
2429

2530
r = self.latest_release
2631
self.latest_version = f'{r.major_ver}.{r.minor_ver}.{r.build_ver}'
27-
self.maintainers = []
28-

code/ch8-async-databases/views/packages.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
@router.get('/project/{package_name}')
1111
@template(template_file='packages/details.pt')
12-
def details(package_name: str, request: Request):
12+
async def details(package_name: str, request: Request):
1313
vm = DetailsViewModel(package_name, request)
14-
return vm.to_dict()
14+
await vm.load()
15+
16+
return vm.to_dict()

0 commit comments

Comments
 (0)