"""
Service layer for CountryRuleOct.
"""

from sqlalchemy.orm import Session

from . import dto, models


class CountryRuleOctService:
    @staticmethod
    def get_country_by_keys(
        db: Session, permission: str, line: int, fraction: str, country_code: str
    ):
        return (
            db.query(models.CountryRuleOct)
            .filter(
                models.CountryRuleOct.permission == permission,
                models.CountryRuleOct.line == line,
                models.CountryRuleOct.fraction == fraction,
                models.CountryRuleOct.country_code == country_code,
            )
            .first()
        )

    @staticmethod
    def create_country_rule(db: Session, country_data: dto.CountryRuleOctCreateDTO):
        new_country = models.CountryRuleOct(**country_data.dict())
        db.add(new_country)
        db.commit()
        db.refresh(new_country)
        return new_country

    @staticmethod
    def delete_country_rule(
        db: Session, permission: str, line: int, fraction: str, country_code: str
    ):
        country = CountryRuleOctService.get_country_by_keys(
            db, permission, line, fraction, country_code
        )
        if country:
            db.delete(country)
            db.commit()
        return country
