29 lines
900 B
Python
29 lines
900 B
Python
"""Flask extensions initialization."""
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_migrate import Migrate
|
|
from flask_bcrypt import Bcrypt
|
|
from flask_cors import CORS
|
|
from flask_marshmallow import Marshmallow
|
|
from flask_limiter import Limiter
|
|
from flask_limiter.util import get_remote_address
|
|
from flask_session import Session
|
|
|
|
# Initialize extensions
|
|
db = SQLAlchemy()
|
|
migrate = Migrate()
|
|
bcrypt = Bcrypt()
|
|
cors = CORS(
|
|
supports_credentials=True,
|
|
resources={r"/api/*": {"origins": "*"}}, # Apply CORS to all API routes
|
|
allow_headers=["Content-Type", "Authorization", "X-Request-ID"],
|
|
methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
|
|
expose_headers=["X-Request-ID"],
|
|
)
|
|
ma = Marshmallow()
|
|
limiter = Limiter(
|
|
key_func=get_remote_address,
|
|
default_limits=["100 per hour"],
|
|
storage_uri="memory://", # Will be overridden by config
|
|
)
|
|
session = Session()
|