Skip to content

Fastcrud paginated #123

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,6 @@ First, you may want to take a look at the project structure and understand what
│ ├── api # Folder containing API-related logic.
│ │ ├── __init__.py
│ │ ├── dependencies.py # Defines dependencies for use across API endpoints.
│ │ ├── paginated.py # Utilities for API response pagination.
│ │ │
│ │ └── v1 # Version 1 of the API.
│ │ ├── __init__.py
Expand Down Expand Up @@ -1020,10 +1019,10 @@ With the `get_multi` method we get a python `dict` with full suport for paginati
}
```

And in the endpoint, we can import from `app/api/paginated` the following functions and Pydantic Schema:
And in the endpoint, we can import from `fastcrud.paginated` the following functions and Pydantic Schema:

```python
from app.api.paginated import (
from fastcrud.paginated import (
PaginatedListResponse, # What you'll use as a response_model to validate
paginated_response, # Creates a paginated response based on the parameters
compute_offset, # Calculate the offset for pagination ((page - 1) * items_per_page)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ redis = "^5.0.1"
arq = "^0.25.0"
gunicorn = "^21.2.0"
bcrypt = "^4.1.1"
fastcrud = "^0.6.0"
fastcrud = "^0.7.0"


[build-system]
Expand Down
75 changes: 0 additions & 75 deletions src/app/api/paginated.py

This file was deleted.

5 changes: 2 additions & 3 deletions src/app/api/v1/login.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
from datetime import timedelta
from typing import Annotated

import fastapi
from fastapi import Depends, Request, Response
from fastapi import APIRouter, Depends, Request, Response
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.ext.asyncio import AsyncSession

Expand All @@ -18,7 +17,7 @@
verify_token,
)

router = fastapi.APIRouter(tags=["login"])
router = APIRouter(tags=["login"])


@router.post("/login", response_model=Token)
Expand Down
7 changes: 3 additions & 4 deletions src/app/api/v1/posts.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
from typing import Annotated

import fastapi
from fastapi import Depends, Request
from fastapi import APIRouter, Depends, Request
from fastcrud.paginated import PaginatedListResponse, compute_offset, paginated_response
from sqlalchemy.ext.asyncio import AsyncSession

from ...api.dependencies import get_current_superuser, get_current_user
from ...api.paginated import PaginatedListResponse, compute_offset, paginated_response
from ...core.db.database import async_get_db
from ...core.exceptions.http_exceptions import ForbiddenException, NotFoundException
from ...core.utils.cache import cache
Expand All @@ -14,7 +13,7 @@
from ...schemas.post import PostCreate, PostCreateInternal, PostRead, PostUpdate
from ...schemas.user import UserRead

router = fastapi.APIRouter(tags=["posts"])
router = APIRouter(tags=["posts"])


@router.post("/{username}/post", response_model=PostRead, status_code=201)
Expand Down
7 changes: 3 additions & 4 deletions src/app/api/v1/rate_limits.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
from typing import Annotated

import fastapi
from fastapi import Depends, Request
from fastapi import APIRouter, Depends, Request
from fastcrud.paginated import PaginatedListResponse, compute_offset, paginated_response
from sqlalchemy.ext.asyncio import AsyncSession

from ...api.dependencies import get_current_superuser
from ...api.paginated import PaginatedListResponse, compute_offset, paginated_response
from ...core.db.database import async_get_db
from ...core.exceptions.http_exceptions import DuplicateValueException, NotFoundException, RateLimitException
from ...crud.crud_rate_limit import crud_rate_limits
from ...crud.crud_tier import crud_tiers
from ...schemas.rate_limit import RateLimitCreate, RateLimitCreateInternal, RateLimitRead, RateLimitUpdate

router = fastapi.APIRouter(tags=["rate_limits"])
router = APIRouter(tags=["rate_limits"])


@router.post("/tier/{tier_name}/rate_limit", dependencies=[Depends(get_current_superuser)], status_code=201)
Expand Down
7 changes: 3 additions & 4 deletions src/app/api/v1/tiers.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
from typing import Annotated

import fastapi
from fastapi import Depends, Request
from fastapi import APIRouter, Depends, Request
from sqlalchemy.ext.asyncio import AsyncSession
from fastcrud.paginated import PaginatedListResponse, compute_offset, paginated_response

from ...api.dependencies import get_current_superuser
from ...api.paginated import PaginatedListResponse, compute_offset, paginated_response
from ...core.db.database import async_get_db
from ...core.exceptions.http_exceptions import DuplicateValueException, NotFoundException
from ...crud.crud_tier import crud_tiers
from ...schemas.tier import TierCreate, TierCreateInternal, TierRead, TierUpdate

router = fastapi.APIRouter(tags=["tiers"])
router = APIRouter(tags=["tiers"])


@router.post("/tier", dependencies=[Depends(get_current_superuser)], status_code=201)
Expand Down
7 changes: 3 additions & 4 deletions src/app/api/v1/users.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
from typing import Annotated, Any

import fastapi
from fastapi import Depends, Request
from fastapi import APIRouter, Depends, Request
from sqlalchemy.ext.asyncio import AsyncSession
from fastcrud.paginated import PaginatedListResponse, compute_offset, paginated_response

from ...api.dependencies import get_current_superuser, get_current_user
from ...api.paginated import PaginatedListResponse, compute_offset, paginated_response
from ...core.db.database import async_get_db
from ...core.exceptions.http_exceptions import DuplicateValueException, ForbiddenException, NotFoundException
from ...core.security import blacklist_token, get_password_hash, oauth2_scheme
Expand All @@ -16,7 +15,7 @@
from ...schemas.tier import TierRead
from ...schemas.user import UserCreate, UserCreateInternal, UserRead, UserTierUpdate, UserUpdate

router = fastapi.APIRouter(tags=["users"])
router = APIRouter(tags=["users"])


@router.post("/user", response_model=UserRead, status_code=201)
Expand Down