"""
Generic utility function for data extraction and mapping
"""
from dateutil import parser
from datetime import datetime, date
# ======================================================================================================================
# ============================= UTILITY functions for Centralize messages process ======================================
[docs]
def get_updated_old_str(element, default: str = None) -> str | None:
return str(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_str(element, default: str = None) -> str | None:
return str(element.get("new")) if element.get("new") else default
[docs]
def get_updated_old_int(element, default: int = None) -> int | None:
return int(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_int(element, default: int = None) -> int | None:
return int(element.get("new")) if element.get("new") else default
[docs]
def get_updated_old_float(element, default: float = None) -> float | None:
return float(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_float(element, default: float = None) -> float | None:
return float(element.get("new")) if element.get("new") else default
[docs]
def get_updated_old_date(element, default: date = None) -> date | None:
return parser.parse(element.get("old")).date() if element.get("old") else default
[docs]
def get_updated_new_date(element, default: date = None) -> date | None:
return parser.parse(element.get("new")).date() if element.get("new") else default
[docs]
def get_updated_old_datetime(element, default: datetime = None) -> datetime | None:
return parser.parse(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_datetime(element, default: datetime = None) -> datetime | None:
return parser.parse(element.get("new")) if element.get("new") else default
[docs]
def reverse_sorting(sorting):
match sorting:
case "DESC":
return True
case "ASC":
return False
case _:
return False