Skip to content

Commit 832014b

Browse files
committed
migrated to sqlmodel
1 parent bedf645 commit 832014b

28 files changed

+222
-347
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
- [`Docker Compose`](https://docs.docker.com/compose/) With a single command, create and start all the services from your configuration.
4343
- [`NGINX`](https://nginx.org/en/) High-performance low resource consumption web server used for Reverse Proxy and Load Balancing.
4444

45+
> \[!TIP\]
46+
> If you want the `SQLAlchemy + Pydantic` version instead, head to [Fastapi-boilerplate](https://github.com/igorbenav/FastAPI-boilerplate).
47+
4548
## 1. Features
4649

4750
- ⚡️ Fully async

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ arq = "^0.25.0"
3131
gunicorn = "^22.0.0"
3232
bcrypt = "^4.1.1"
3333
fastcrud = "^0.12.0"
34+
sqlmodel = "^0.0.18"
3435

3536

3637
[build-system]

src/app/api/dependencies.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from ..crud.crud_tier import crud_tiers
1414
from ..crud.crud_users import crud_users
1515
from ..models.user import User
16-
from ..schemas.rate_limit import sanitize_path
16+
from ..models.rate_limit import sanitize_path
1717

1818
logger = logging.getLogger(__name__)
1919

src/app/api/v1/posts.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from ...core.utils.cache import cache
1111
from ...crud.crud_posts import crud_posts
1212
from ...crud.crud_users import crud_users
13-
from ...schemas.post import PostCreate, PostCreateInternal, PostRead, PostUpdate
14-
from ...schemas.user import UserRead
13+
from ...models.post import PostCreate, PostCreateInternal, PostRead, PostUpdate
14+
from ...models.user import UserRead
1515

1616
router = APIRouter(tags=["posts"])
1717

src/app/api/v1/rate_limits.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from ...core.exceptions.http_exceptions import DuplicateValueException, NotFoundException, RateLimitException
1010
from ...crud.crud_rate_limit import crud_rate_limits
1111
from ...crud.crud_tier import crud_tiers
12-
from ...schemas.rate_limit import RateLimitCreate, RateLimitCreateInternal, RateLimitRead, RateLimitUpdate
12+
from ...models.rate_limit import RateLimitCreate, RateLimitCreateInternal, RateLimitRead, RateLimitUpdate
1313

1414
router = APIRouter(tags=["rate_limits"])
1515

src/app/api/v1/tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from ...api.dependencies import rate_limiter
77
from ...core.utils import queue
8-
from ...schemas.job import Job
8+
from ...models.job import Job
99

1010
router = APIRouter(prefix="/tasks", tags=["tasks"])
1111

src/app/api/v1/tiers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from ...core.db.database import async_get_db
99
from ...core.exceptions.http_exceptions import DuplicateValueException, NotFoundException
1010
from ...crud.crud_tier import crud_tiers
11-
from ...schemas.tier import TierCreate, TierCreateInternal, TierRead, TierUpdate
11+
from ...models.tier import TierCreate, TierCreateInternal, TierRead, TierUpdate
1212

1313
router = APIRouter(tags=["tiers"])
1414

src/app/api/v1/users.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
from ...crud.crud_rate_limit import crud_rate_limits
1212
from ...crud.crud_tier import crud_tiers
1313
from ...crud.crud_users import crud_users
14-
from ...models.tier import Tier
15-
from ...schemas.tier import TierRead
16-
from ...schemas.user import UserCreate, UserCreateInternal, UserRead, UserTierUpdate, UserUpdate
14+
from ...models.tier import Tier, TierRead
15+
from ...models.user import UserCreate, UserCreateInternal, UserRead, UserTierUpdate, UserUpdate
1716

1817
router = APIRouter(tags=["users"])
1918

src/app/core/db/database.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
from sqlalchemy.ext.asyncio import create_async_engine
22
from sqlalchemy.ext.asyncio.session import AsyncSession
3-
from sqlalchemy.orm import DeclarativeBase, MappedAsDataclass, sessionmaker
3+
from sqlalchemy.orm import sessionmaker
44

55
from ..config import settings
66

77

8-
class Base(DeclarativeBase, MappedAsDataclass):
9-
pass
10-
11-
128
DATABASE_URI = settings.POSTGRES_URI
139
DATABASE_PREFIX = settings.POSTGRES_ASYNC_PREFIX
1410
DATABASE_URL = f"{DATABASE_PREFIX}{DATABASE_URI}"

src/app/core/db/token_blacklist.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
from datetime import datetime
2+
from sqlmodel import SQLModel, Field
23

3-
from sqlalchemy import DateTime, String
4-
from sqlalchemy.orm import Mapped, mapped_column
5-
6-
from .database import Base
7-
8-
9-
class TokenBlacklist(Base):
10-
__tablename__ = "token_blacklist"
11-
12-
id: Mapped[int] = mapped_column("id", autoincrement=True, nullable=False, unique=True, primary_key=True, init=False)
13-
token: Mapped[str] = mapped_column(String, unique=True, index=True)
14-
expires_at: Mapped[datetime] = mapped_column(DateTime)
4+
class TokenBlacklist(SQLModel, table=True):
5+
id: int = Field(default=None, primary_key=True, nullable=False)
6+
token: str = Field(index=True, nullable=False, unique=True)
7+
expires_at: datetime = Field(nullable=False)

0 commit comments

Comments
 (0)