Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
18bd7f4
feat(schemas): Implement enhanced pagination structure in AllUsersRes…
AbdurrahmanIdr Feb 28, 2025
50f859a
fix(routes): Correct NameError in /users/ endpoint by resolving schem…
AbdurrahmanIdr Feb 28, 2025
d94c84c
feat(users): Add search, filtering, and optimized pagination to UserS…
AbdurrahmanIdr Feb 28, 2025
a9bdb85
test(users): Introduce unit tests for UserService fetch_all enhancements
AbdurrahmanIdr Feb 28, 2025
82f40ae
fix(schemas): Resolve merge conflict in schema/user.py
AbdurrahmanIdr Mar 1, 2025
bacd21f
Merge branch 'dev' into filter
AbdurrahmanIdr Mar 1, 2025
3d5348e
Merge branch 'dev' into filter
AbdurrahmanIdr Mar 1, 2025
6e3233e
Merge branch 'dev' into filter
AbdurrahmanIdr Mar 1, 2025
5e40e29
fix(tests): Update user service and endpoint tests for new schema
AbdurrahmanIdr Mar 1, 2025
28e6879
Resolved merge conflicts and removed idea project
AbdurrahmanIdr Mar 1, 2025
99c8405
fix(settings): Add default value for APP_NAME in Settings
AbdurrahmanIdr Mar 1, 2025
143169b
Removed .idea and updated .gitignore
AbdurrahmanIdr Mar 1, 2025
56ef4bc
Merge branch 'dev' into filter
AbdurrahmanIdr Mar 1, 2025
a24b384
Removed create admin script and updated .gitignore
AbdurrahmanIdr Mar 1, 2025
8f0420d
Merge branch 'dev' into filter
joboy-dev Mar 2, 2025
6525c3d
Merge branch 'dev' into filter
AbdurrahmanIdr Mar 2, 2025
0c4ee15
Merge branch 'dev' into filter
AbdurrahmanIdr Mar 2, 2025
118a013
docs(services): Enhance fetch_all method comments in UserService
AbdurrahmanIdr Mar 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,9 @@ jeff.py
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
.idea/

alembic/versions

**/.DS_Store
**/.DS_Store.idea/
create_superadmin.py
10 changes: 0 additions & 10 deletions .idea/.gitignore

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/git_toolbox_blame.xml

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/hng_boilerplate_python_fastapi.iml

This file was deleted.

17 changes: 0 additions & 17 deletions .idea/hng_boilerplate_python_fastapi_web.iml

This file was deleted.

54 changes: 0 additions & 54 deletions .idea/inspectionProfiles/Project_Default.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/inspectionProfiles/profiles_settings.xml

This file was deleted.

12 changes: 0 additions & 12 deletions .idea/material_theme_project_new.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

4 changes: 2 additions & 2 deletions api/utils/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ class Settings(BaseSettings):
TWILIO_AUTH_TOKEN: str = config("TWILIO_AUTH_TOKEN")
TWILIO_PHONE_NUMBER: str = config("TWILIO_PHONE_NUMBER")

APP_NAME: str = config("APP_NAME")

APP_NAME: str = config("APP_NAME", default="HNG Boilerplate")
# Base URLs
ANCHOR_PYTHON_BASE_URL: str = config(
"ANCHOR_PYTHON_BASE_URL", default="https://anchor-python.teams.hng.tech"
Expand Down
33 changes: 12 additions & 21 deletions api/v1/routes/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,33 +117,24 @@ def delete_user(
async def get_users(
current_user: Annotated[User, Depends(user_service.get_current_super_admin)],
db: Annotated[Session, Depends(get_db)],
page: int = 1, per_page: int = 10,
is_active: Optional[bool] = Query(None),
is_deleted: Optional[bool] = Query(None),
is_verified: Optional[bool] = Query(None),
is_superadmin: Optional[bool] = Query(None)
page: int = Query(1, ge=1, description="Page number, starting from 1"),
limit: int = Query(20, ge=1, le=50, description="Users per page, max 50"),
search: Optional[str] = Query(None, description="Search term for first_name, last_name, or email"),
is_active: Optional[bool] = Query(None, description="Filter by active status"),
):
"""
Retrieves all users.
Retrieves all users with search, filtering, and pagination.
Args:
current_user: The current user(admin) making the request
current_user: The current superadmin making the request
db: database Session object
page: the page number
per_page: the maximum size of users for each page
is_active: boolean to filter active users
is_deleted: boolean to filter deleted users
is_verified: boolean to filter verified users
is_superadmin: boolean to filter users that are super admin
page: page number (default: 1)
limit: maximum users per page (default: 20, max: 50)
search: term to search in first_name, last_name, or email
is_active: filter by active status
Returns:
UserData
AllUsersResponse
"""
query_params = {
'is_active': is_active,
'is_deleted': is_deleted,
'is_verified': is_verified,
'is_superadmin': is_superadmin,
}
return user_service.fetch_all(db, page, per_page, **query_params)
return user_service.fetch_all(db, page, limit, search, is_active)

@user_router.post("", status_code=status.HTTP_201_CREATED, response_model=AdminCreateUserResponse)
def admin_registers_user(
Expand Down
Loading