from typing import List
from decouple import config
from pydantic import AnyHttpUrl,BaseSettings
class Settings(BaseSettings):
API_V1_STR: str = '/api/v1'
JWT_SECRET_KEY: str = config('JWT_SECRET_KEY', cast=str)
JWT_REFRESH_SECRET_KEY: str = config('JWT_REFRESH_SECRET_KEY', cast=str)
ALGORITHM ='HS256'
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60
REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7 dias
BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = [
'http://localhost:3000'
]
PROJECT_NAME: str = "TODOFast"
# Database
MONGO_CONNECTION_STRING: str = config("MONGO_CONNECTION_STRING", cast=str)
class Config:
case_sensitive = True
settings = Settings()
from fastapi import FastAPI
from core.config import settings
from beanie import init_beanie
from motor.motor_asyncio import AsyncIOMotorClient
from api.api_v1.router import router
from models.user_model import User
from models.task_model import Task
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI(
title=settings.PROJECT_NAME,
openapi_url=f'{settings.API_V1_STR}/openapi.json'
)
app.add_middleware(
CORSMiddleware,
allow_origins=settings.BACKEND_CORS_ORIGINS,
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*']
)
@app.on_event('startup')
async def app_init():
client_db = AsyncIOMotorClient(
settings.MONGO_CONNECTION_STRING).todoapp
await init_beanie(
database=client_db,
document_models=[
User,
Task
]
)
app.include_router(
router,
prefix=settings.API_V1_STR
)