Skip to content

Commit 1ac2bde

Browse files
committed
chore: add ci/cd
1 parent c59adf2 commit 1ac2bde

4 files changed

Lines changed: 17 additions & 27 deletions

File tree

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,12 @@ Expected values:
230230

231231
```env
232232
APP_NAME=Todo Modulith API
233+
POSTGRES_USER=postgres
234+
POSTGRES_PASSWORD=
235+
POSTGRES_DB=todo_db
236+
REDIS_PASSWORD=
233237
DATABASE_URL=
238+
REDIS_URL=
234239
SECRET_KEY=
235240
ALGORITHM=HS256
236241
JWT_ISSUER=todo-modulith-api

src/core/config/setting.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ class Settings(BaseSettings):
1212
APP_ENV: str = Field(alias="APP_ENV", default="development")
1313
DATABASE_URL: str = Field(
1414
alias="DATABASE_URL",
15-
default="postgresql+asyncpg://user:password@localhost:5432/todo_db",
15+
default="postgresql+asyncpg://postgres@localhost:5432/todo_db",
1616
)
1717
REDIS_URL: str = Field(
1818
alias="REDIS_URL",
19-
default="redis://:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81@127.0.0.1:6379/0",
19+
default="redis://127.0.0.1:6379/0",
2020
)
2121
SECRET_KEY: str = Field(alias="SECRET_KEY", default=DEFAULT_SECRET_KEY)
2222
ALGORITHM: str = Field(alias="ALGORITHM", default="HS256")

src/core/dependency/auth.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
from uuid import UUID
22

33
from fastapi import Depends, HTTPException, Request, status
4-
from fastapi.security import HTTPBearer
4+
from fastapi.security import OAuth2PasswordBearer
55
from sqlalchemy.ext.asyncio import AsyncSession
66

77
from src.core.database.postgres.session import get_db
88
from src.modules.user.infrastructure.repositories.user_repository import (
99
SQLAlchemyUserRepository,
1010
)
1111

12-
# oauth2_scheme = OAuth2PasswordBearer(
13-
# tokenUrl="/api/v1/auth/login",
14-
# refreshUrl="/api/v1/auth/refresh",
15-
# )
16-
17-
oauth2_scheme = HTTPBearer(scheme_name="Authorization", auto_error=False)
12+
oauth2_scheme = OAuth2PasswordBearer(
13+
tokenUrl="/api/v1/auth/login",
14+
refreshUrl="/api/v1/auth/refresh",
15+
auto_error=False,
16+
)
1817

1918

2019
async def get_current_user(

src/core/dependency/rate_limit.py

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
from fastapi import HTTPException, Request
1+
from fastapi import Request
22
from fastapi_limiter import FastAPILimiter
3+
from fastapi_limiter.depends import RateLimiter
34

45
from src.core.config.setting import get_settings
56
from src.core.database.redis.client import get_redis_client
@@ -54,20 +55,5 @@ async def apply_global_rate_limit(request: Request):
5455
times = int(times_str)
5556
seconds = 60 if "minute" in period else 1
5657

57-
# Get identifier for this request
58-
identifier = await custom_identifier(request)
59-
60-
# Check rate limit
61-
is_rate_limited = await FastAPILimiter.redis.incr(
62-
f"fastapi-limiter:{identifier}:{request.scope.get('path')}"
63-
)
64-
65-
# Set expiry on first request
66-
if is_rate_limited == 1:
67-
await FastAPILimiter.redis.expire(
68-
f"fastapi-limiter:{identifier}:{request.scope.get('path')}", seconds
69-
)
70-
71-
# Check if rate limit exceeded
72-
if is_rate_limited > times:
73-
raise HTTPException(status_code=429, detail="Rate limit exceeded")
58+
limiter = RateLimiter(times=times, seconds=seconds)
59+
await limiter(request)

0 commit comments

Comments
 (0)