Source code for easydata.queries.clause

from typing import Any, Optional

from easydata.queries.base import QuerySearchBase

__all__ = (
    "OrClause",
    "WithClause",
)


[docs]class OrClause(QuerySearchBase): def __init__( self, *query_searches, strict_none: bool = True, ): self._strict_none = strict_none self._query_searches = query_searches def get( self, data: Any, source: str = "main", parent_data: Optional[Any] = None, ) -> Any: for query_search in self._query_searches: value = query_search.get( data=data, source=source, parent_data=parent_data, ) if self._strict_none and value is not None: return value elif not self._strict_none and value: return value return None
[docs]class WithClause(QuerySearchBase): def __init__(self, *query_searches): self._query_searches = query_searches def get( self, data: Any, source: str = "main", parent_data: Optional[Any] = None, ) -> Any: query_searches = list(self._query_searches) init_query_search = query_searches.pop(0) query = init_query_search.query value = init_query_search.get( data=data, source=source, parent_data=parent_data, ) for query_search in query_searches: if not value: raise ValueError("Value cannot be empty for query: %s " % query) query = query_search.query value = query_search.get(value) return value