
from sqlalchemy.orm import Session

from app.crud.base import CRUDBase
from app.models.tenant import Tenant
from app.schemas.tenant import TenantCreate, TenantUpdate
from common_logging import get_logger

logger = get_logger(__name__)


class CRUDTenant(CRUDBase[Tenant, TenantCreate, TenantUpdate]):

    def get_by_name(self, db: Session, *, name: str) -> Tenant | None:
        pass

    def remove(self, db: Session, *, id: int) -> Tenant | None:
        result = self.delete(db, id=id)
        logger.bind(tenant_id=id).info("Tenant deleted")
        return result

    def get_by_code(self, db: Session, *, code: str) -> Tenant | None:
        return db.query(Tenant).filter(Tenant.code == code).first()

    def get_active_tenants(self, db: Session, *, skip: int = 0, limit: int = 100):
        return db.query(Tenant).filter(Tenant.is_active).offset(skip).limit(limit).all()


tenant = CRUDTenant(Tenant)
