from django.db.backends.mysql.base import DatabaseWrapper as _DjangoMySQLDatabaseWrapper
from django.db.backends.mysql.features import DatabaseFeatures as _DjangoMySQLDatabaseFeatures

class DatabaseFeatures(_DjangoMySQLDatabaseFeatures):
    # Force Django 4.2 behavior to allow MySQL 5.7 on shared hosting
    @property
    def minimum_database_version(self):
        return (5, 7)

class DatabaseWrapper(_DjangoMySQLDatabaseWrapper):
    features_class = DatabaseFeatures
    
    def get_connection_params(self):
            params = super().get_connection_params()
            # Ensure utf8mb4 even if OPTIONS forgot it
            params.setdefault("charset", "utf8mb4")
            # Ensure init_command includes SET NAMES utf8mb4
            init = params.get("init_command", "")
            if "SET NAMES" not in init:
                init = (init + "; " if init else "") + "SET NAMES utf8mb4"
                params["init_command"] = init
            return params