# Import necessary modules and libraries
from decouple import config  # Import the config function from python-decouple for managing environment variables
from flask_cors import CORS  # Import CORS from Flask-CORS for Cross-Origin Resource Sharing
from flask_restx import Api  # Import Api class from Flask-RESTx for API configuration  
from flask_sqlalchemy import SQLAlchemy # Import SQLAlchemy from Flask-SQLAlchemy for database management 



# Initialize SQLAlchemy extension
db = SQLAlchemy()
 
# Get CORS attributes from .env file using python-decouple
cors_origins = config('CORS_ORIGINS', default='*', cast=str)  # Get allowed origins from .env, default to '*' if not specified
cors_headers = config('CORS_HEADERS', default='Content-Type, Authorization', cast=str)  # Get allowed headers from .env, default to standard headers if not specified
cors_supports_credentials = config('CORS_SUPPORTS_CREDENTIALS', default=False, cast=bool)  # Get CORS credentials support from .env, default to False if not specified

# Create a CORS instance for handling Cross-Origin Resource Sharing
cors = CORS(
    resources={r"*": {"origins": cors_origins}},  # Specify allowed origins for all paths
    allow_headers=cors_headers.split(','),  # Convert comma-separated headers to a list
    supports_credentials=cors_supports_credentials  # Specify whether credentials are supported
)

# Initialize the API instance for versioning and documentation
api = Api(
    version=config('API_VERSION', default='1.0.0', cast=str),  
    title=config('API_TITLE', default='Video Service API', cast=str), 
    description=config('API_DESCRIPTION', default='API for managing video files', cast=str),   
    prefix=config('API_PREFIX', default='/api/v1', cast=str),  
) 