Parcourir la source

refactor: update Redis client configuration to use DEVELOPMENT setting

Erwin Jacimino il y a 8 mois
Parent
commit
03e1e6e492
5 fichiers modifiés avec 12 ajouts et 22 suppressions
  1. 2 1
      fudo/fudo.py
  2. 2 2
      main.py
  3. 3 9
      routes/chat.py
  4. 2 6
      routes/users.py
  5. 3 4
      services/recovery_service.py

+ 2 - 1
fudo/fudo.py

@@ -1,6 +1,7 @@
 import math
 from time import time
 import requests
+from config.settings import DEVELOPMENT
 import os
 import redis
 from logging import getLogger
@@ -17,7 +18,7 @@ token_exp = None
 redis_client = redis.Redis(
     host=os.getenv('REDIS_HOST', 'localhost'),
     port=int(os.getenv('REDIS_PORT', 6379)),
-    db=int(os.getenv('REDIS_DB', 0)),
+    db=1 if DEVELOPMENT else 0,
     decode_responses=True
 )
 

+ 2 - 2
main.py

@@ -1,6 +1,6 @@
 #!/home/superti/miniconda3/envs/pedidos_express/bin/python
 
-from config.settings import PORT, BG_DATA_PATH,  validate_config
+from config.settings import PORT, BG_DATA_PATH,  validate_config, DEVELOPMENT
 import os
 import uvicorn
 from app import create_app, setup_routes
@@ -26,7 +26,7 @@ def main():
         setup_routes(app)
         # Initialize database
         logger.info("Initializing database")
-        redis_client = redis.Redis(host='localhost', port=6379, db=0)
+        redis_client = redis.Redis(host='localhost', port=6379, db=1 if DEVELOPMENT else 0)
         # eliminar la lista de usuarios conectados al iniciar
         redis_client.delete("connected_users")
         initialize_db()

+ 3 - 9
routes/chat.py

@@ -2,26 +2,20 @@ import asyncio
 import json
 import logging
 from typing import Optional
-from fastapi import Query, Request, HTTPException, Depends, APIRouter, WebSocket, WebSocketDisconnect
-from fastapi.responses import JSONResponse
+from fastapi import Query, Depends, APIRouter, WebSocket, WebSocketDisconnect
 from fastapi.security import HTTPAuthorizationCredentials
-from pydantic import BaseModel, ConfigDict
 from broadcaster import Broadcast
 
-from models.chat import ChatCompletionRequest
+from config.settings import DEVELOPMENT
 from models.user import User
 from services.openai_service.openai_service import generate_completion
 from auth.security import get_current_user
-from config.messages import SuccessResponse
 from redis import Redis
 
 logger = logging.getLogger(__name__)
 chat_router = APIRouter()
 
-redis_client = Redis(host='localhost', port=6379, db=0, decode_responses=True)
-
-
-
+redis_client = Redis(host='localhost', port=6379, db=1 if DEVELOPMENT else 0, decode_responses=True)
 
 @chat_router.websocket("/ws")
 async def chat_irc_endpoint(websocket: WebSocket):

+ 2 - 6
routes/users.py

@@ -15,7 +15,7 @@ from auth.security import generate_token
 from auth.security import get_current_user
 from config.mails import REGISTER_MAIL, PIN_RECOVERY_MAIL, PIN_SUCCESSFULLY
 from config.messages import ErrorResponse, SuccessResponse, UserResponse
-from config.settings import APPNAME, PIN_KEY
+from config.settings import APPNAME, DEVELOPMENT, PIN_KEY
 from models.user import LoginRequest, PinRecoveryRequest, PinRecoveryValidateRequest, PinUserRequest, RegisterUserRequest, User, UserIDRequest, UserMail, UserRewardRequest
 from services.data_service import BlacklistDataService, UserDataService
 from services.email_service import get_email_sender
@@ -29,6 +29,7 @@ user_data_service = UserDataService()
 blacklist_data_service = BlacklistDataService()
 user_router = APIRouter()
 
+redis_client = redis.Redis(host='localhost', port=6379, db=1 if DEVELOPMENT else 0, decode_responses=True)
 
 def unique_pin_generate():
     """Generate a unique 4-digit PIN"""
@@ -81,8 +82,6 @@ async def register_user(request: RegisterUserRequest):
     logger.info(f"Registering user: {request.email}")
     
     try:
-        # Setup Redis client and verification code
-        redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
         verification_code = str(uuid4())
         
         user_data = {
@@ -118,7 +117,6 @@ async def register_user(request: RegisterUserRequest):
 @user_router.post("/create-user")
 async def create_user(request: PinUserRequest, q: str):
     """Create a new user with PIN"""
-    redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
     data = redis_client.get(f"verify:{q}")
     if not redis_client.get(f"verify:{q}"):
         return JSONResponse(status_code=400, content={"message": ErrorResponse.INVALID_VERIFICATION_CODE})
@@ -151,7 +149,6 @@ async def login_user(request: LoginRequest, http_request: Request):
     
     
     try:
-        redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
         is_blocked = redis_client.get(f"blocked:{request.email}")
 
         if is_blocked:
@@ -313,7 +310,6 @@ verify_router = APIRouter()
 async def verify_user(q: str = Query(..., description="q parameter")):
     """Verify a user by ID"""
     # get url params
-    redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
     if not redis_client.get(f"verify:{q}"):
         return HTMLResponse(
             content="<h1>Invalid verification code</h1>",

+ 3 - 4
services/recovery_service.py

@@ -2,31 +2,30 @@ import json
 import redis
 from pydantic import BaseModel
 import random
+
+from config.settings import DEVELOPMENT
 class RedisRecoveryData(BaseModel):
     code: int
 
+redis_client = redis.Redis(host='localhost', port=6379, db=1 if DEVELOPMENT else 0, decode_responses=True)
 RECOVERY_REDIS_KEY = "pin_recovery_{user_id}"
 
 def generate_recovery_key(user_id:int):
     pin_code = str(random.randint(100000, 999999))
-    redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
     redis_client.set(RECOVERY_REDIS_KEY.format(user_id=user_id), json.dumps({"code": pin_code}))
     redis_client.expire(RECOVERY_REDIS_KEY.format(user_id=user_id), 900)  # Expire in 15 minutes
     return pin_code
 
 def add_token(user_id, token):
-    redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
     redis_client.delete(RECOVERY_REDIS_KEY.format(user_id=user_id))
     redis_client.set(RECOVERY_REDIS_KEY.format(user_id=user_id), json.dumps({"token": token}))
 
 def get_token(user_id):
-    redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
     data = redis_client.get(RECOVERY_REDIS_KEY.format(user_id=user_id))
     json_data = json.loads(str(data)) if data else None
     return json_data.get("token") if json_data else None
 
 def get_recovery_data(user_id: int) -> RedisRecoveryData:
-    redis_client = redis.Redis(host='localhost', port=6379, db=0,decode_responses=True)
     data = redis_client.get(RECOVERY_REDIS_KEY.format(user_id=user_id))
     json_data = json.loads(str(data)) if data else None
     if json_data: