Skip to content

Commit 6781103

Browse files
authored
Merge pull request #220 from benavlabs/update-fastcrud
fastcrud 0.19.2
2 parents b5a9e0a + de6775d commit 6781103

File tree

7 files changed

+18
-33
lines changed

7 files changed

+18
-33
lines changed

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[project]
22
name = "fastapi-boilerplate"
33
version = "0.1.0"
4-
description = "A fully Async FastAPI boilerplate using SQLAlchemy and Pydantic 2"
5-
authors = [{ name = "Igor Magalhaes", email = "[email protected]" }]
4+
description = "Batteries-included FastAPI starter with production-ready defaults, optional modules, and clear docs."
5+
authors = [{ name = "Benav Labs", email = "[email protected]" }]
66
license = { text = "MIT" }
77
readme = "README.md"
88
requires-python = ">=3.11, <4"
@@ -28,7 +28,7 @@ dependencies = [
2828
"arq>=0.25.0",
2929
"bcrypt>=4.1.1",
3030
"psycopg2-binary>=2.9.9",
31-
"fastcrud>=0.19.1",
31+
"fastcrud>=0.19.2",
3232
"crudadmin>=0.4.2",
3333
"gunicorn>=23.0.0",
3434
"ruff>=0.11.13",

src/app/api/v1/posts.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,12 @@ async def write_post(
3535
post_internal_dict["created_by_user_id"] = db_user["id"]
3636

3737
post_internal = PostCreateInternal(**post_internal_dict)
38-
created_post = await crud_posts.create(db=db, object=post_internal)
38+
created_post = await crud_posts.create(db=db, object=post_internal, schema_to_select=PostRead)
3939

4040
if created_post is None:
4141
raise NotFoundException("Failed to create post")
4242

43-
post_read = await crud_posts.get(db=db, id=created_post["id"], schema_to_select=PostRead)
44-
if post_read is None:
45-
raise NotFoundException("Created post not found")
46-
47-
return post_read
43+
return created_post
4844

4945

5046
@router.get("/{username}/posts", response_model=PaginatedListResponse[PostRead])

src/app/api/v1/rate_limits.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,14 @@ async def write_rate_limit(
3131
raise DuplicateValueException("Rate Limit Name not available")
3232

3333
rate_limit_internal = RateLimitCreateInternal(**rate_limit_internal_dict)
34-
created_rate_limit = await crud_rate_limits.create(db=db, object=rate_limit_internal)
34+
created_rate_limit = await crud_rate_limits.create(
35+
db=db, object=rate_limit_internal, schema_to_select=RateLimitRead
36+
)
3537

3638
if created_rate_limit is None:
3739
raise NotFoundException("Failed to create rate limit")
3840

39-
rate_limit_read = await crud_rate_limits.get(db=db, id=created_rate_limit["id"], schema_to_select=RateLimitRead)
40-
if rate_limit_read is None:
41-
raise NotFoundException("Created rate limit not found")
42-
43-
return rate_limit_read
41+
return created_rate_limit
4442

4543

4644
@router.get("/tier/{tier_name}/rate_limits", response_model=PaginatedListResponse[RateLimitRead])

src/app/api/v1/tiers.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,12 @@ async def write_tier(
2323
raise DuplicateValueException("Tier Name not available")
2424

2525
tier_internal = TierCreateInternal(**tier_internal_dict)
26-
created_tier = await crud_tiers.create(db=db, object=tier_internal)
26+
created_tier = await crud_tiers.create(db=db, object=tier_internal, schema_to_select=TierRead)
2727

2828
if created_tier is None:
2929
raise NotFoundException("Failed to create tier")
3030

31-
tier_read = await crud_tiers.get(db=db, id=created_tier["id"], schema_to_select=TierRead)
32-
if tier_read is None:
33-
raise NotFoundException("Created tier not found")
34-
35-
return tier_read
31+
return created_tier
3632

3733

3834
@router.get("/tiers", response_model=PaginatedListResponse[TierRead])

src/app/api/v1/users.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,12 @@ async def write_user(
3434
del user_internal_dict["password"]
3535

3636
user_internal = UserCreateInternal(**user_internal_dict)
37-
created_user = await crud_users.create(db=db, object=user_internal)
37+
created_user = await crud_users.create(db=db, object=user_internal, schema_to_select=UserRead)
3838

3939
if created_user is None:
4040
raise NotFoundException("Failed to create user")
4141

42-
user_read = await crud_users.get(db=db, id=created_user["id"], schema_to_select=UserRead)
43-
if user_read is None:
44-
raise NotFoundException("Created user not found")
45-
46-
return user_read
42+
return created_user
4743

4844

4945
@router.get("/users", response_model=PaginatedListResponse[UserRead])

tests/test_user.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ async def test_create_user_success(self, mock_db, sample_user_data, sample_user_
2020
with patch("src.app.api.v1.users.crud_users") as mock_crud:
2121
# Mock that email and username don't exist
2222
mock_crud.exists = AsyncMock(side_effect=[False, False]) # email, then username
23-
mock_crud.create = AsyncMock(return_value={"id": 1})
24-
mock_crud.get = AsyncMock(return_value=sample_user_read.model_dump())
23+
mock_crud.create = AsyncMock(return_value=sample_user_read.model_dump())
2524

2625
with patch("src.app.api.v1.users.get_password_hash") as mock_hash:
2726
mock_hash.return_value = "hashed_password"

uv.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)