visafly_config_service.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from sqlalchemy.orm import Session
  2. from app.models.visafly_config import VisaflyConfig
  3. from app.schemas.visafly_config import VisaflyConfigCreate
  4. from typing import List
  5. class VisaflyConfigService:
  6. @staticmethod
  7. def create(db: Session, obj_in: VisaflyConfigCreate) -> VisaflyConfig:
  8. db_obj = VisaflyConfig(**obj_in.dict())
  9. db.add(db_obj)
  10. db.commit()
  11. db.refresh(db_obj)
  12. return db_obj
  13. @staticmethod
  14. def get_submission_countries(db: Session) -> List[dict]:
  15. rows = db.query(
  16. VisaflyConfig.submission_country,
  17. VisaflyConfig.submission_country_code
  18. ).distinct().all()
  19. return [{"country": r[0], "country_code": r[1]} for r in rows]
  20. @staticmethod
  21. def get_cities_by_country(db: Session, country_code: str) -> List[dict]:
  22. rows = db.query(
  23. VisaflyConfig.submission_city,
  24. VisaflyConfig.submission_city_code
  25. ).filter(VisaflyConfig.submission_country_code == country_code).distinct().all()
  26. return [{"city": r[0], "city_code": r[1]} for r in rows]
  27. @staticmethod
  28. def get_travel_countries_by_city(db: Session, city_code: str) -> List[dict]:
  29. rows = db.query(
  30. VisaflyConfig.travel_country,
  31. VisaflyConfig.travel_country_code,
  32. VisaflyConfig.visa_type,
  33. VisaflyConfig.provider,
  34. VisaflyConfig.field_requirement_type
  35. ).filter(VisaflyConfig.submission_city_code == city_code).all()
  36. return [
  37. {
  38. "travel_country": r[0],
  39. "travel_country_code": r[1],
  40. "visa_type": r[2],
  41. "provider": r[3],
  42. "field_requirement_type": r[4]
  43. } for r in rows
  44. ]