from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_jwt_extended import JWTManager
from flask_cors import CORS
from flask_login import LoginManager
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
from flask_wtf.csrf import CSRFProtect
import os

db = SQLAlchemy()
migrate = Migrate()
jwt = JWTManager()
cors = CORS()
login_manager = LoginManager()
limiter = Limiter(
    key_func=get_remote_address,
    default_limits=["100000 per day", "10000 per hour"],
    storage_uri=os.getenv("LIMITER_STORAGE_URI", "memory://")
)
csrf = CSRFProtect()