from .middleware import get_db_name

class MaestraRouter:
    tablas_maestras = {
        'banco_list',
        'caltlog_prod',
        'catalogo03',
        'catalogo07',
        'catalogo10',
        'catalogo17',
        'catalogo54',
        'guiamot',
        'motivo',
        'tbl1_tipoope',
        'tbl2_tipdoc',
        'tip_exitbl05',
        'tip_opetbl12', 
    } 

    def db_for_read(self, model, **hints):
        # Valida el nombre de la tabla SQL y el nombre del modelo interno
        if model._meta.db_table in self.tablas_maestras or model._meta.model_name in self.tablas_maestras:
            return 'maestra'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.db_table in self.tablas_maestras or model._meta.model_name in self.tablas_maestras:
            return 'maestra'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        obj1_match = obj1._meta.db_table in self.tablas_maestras or obj1._meta.model_name in self.tablas_maestras
        obj2_match = obj2._meta.db_table in self.tablas_maestras or obj2._meta.model_name in self.tablas_maestras
        if obj1_match or obj2_match:
            return True
        return None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        return None


class SubdomainRouter:
    def db_for_read(self, model, **hints):
        return get_db_name()

    def db_for_write(self, model, **hints):
        return get_db_name()

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label in ['auth', 'contenttypes', 'sessions']:
            return db in ['default']
        return True

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label in ['auth', 'contenttypes', 'sessions'] or obj2._meta.app_label in ['auth', 'contenttypes', 'sessions']:
            return True
        return None