from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import MetaData
from flask_migrate import Migrate
from flask_login import LoginManager
from flask_bcrypt import Bcrypt
from flask_mail import Mail
from flask_caching import Cache
from authlib.integrations.flask_client import OAuth

convention = {
  "ix": "ix_%(column_0_label)s",
  "uq": "uq_%(table_name)s_%(column_0_name)s",
  "ck": "ck_%(table_name)s_%(constraint_name)s",
  "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
  "pk": "pk_%(table_name)s"
}

metadata = MetaData(naming_convention=convention)

db = SQLAlchemy(metadata=MetaData(naming_convention=convention))
migrate = Migrate()
login = LoginManager()
bcrypt = Bcrypt()
oauth = OAuth()
mail = Mail()
cache = Cache()

login.login_view = 'main.login'
login.login_message = "Please log in to access this page."
login.login_message_category = "info"
