Uprava queries a dotazovani se pres base query builder, fix nahledu fotky pro editor, cache na fotky
This commit is contained in:
@@ -35,38 +35,51 @@ class BaseQueryResolver(BaseResolver):
|
||||
object_id: Optional[int] = None,
|
||||
order_by: Optional[list] = None,
|
||||
only_public: Optional[bool] = False,
|
||||
only_my: Optional[bool] = False,
|
||||
url_slug: Optional[str] = None,
|
||||
**kwargs,
|
||||
):
|
||||
query = self.query_builder.get_simple_query(created_by_id=user_id, order_by=order_by, only_public=only_public)
|
||||
query = self.query_builder.get_simple_query(
|
||||
created_by_id=user_id,
|
||||
order_by=order_by,
|
||||
only_public=only_public,
|
||||
only_my=only_my,
|
||||
url_slug=url_slug
|
||||
)
|
||||
|
||||
if object_id:
|
||||
if not hasattr(self.model, "id"):
|
||||
raise AssertionError(f"Model {self.model} has no ID column! Cannot query by ID!")
|
||||
query = query.filter(self.model.id == object_id)
|
||||
|
||||
search = kwargs.pop("search", None)
|
||||
if search:
|
||||
search_clauses = []
|
||||
if hasattr(self.model, "name"):
|
||||
search_clauses.append(self.model.name.contains(search))
|
||||
|
||||
if hasattr(self.model, "description"):
|
||||
search_clauses.append(self.model.description.contains(search))
|
||||
|
||||
if search_clauses:
|
||||
query = query.filter(or_(*search_clauses))
|
||||
query = self._handle_search(query, kwargs.pop("search", None))
|
||||
|
||||
if kwargs:
|
||||
query = query.filter_by(**kwargs)
|
||||
|
||||
return query
|
||||
|
||||
def _handle_search(self, query, search):
|
||||
if not search:
|
||||
return query
|
||||
|
||||
search_clauses = []
|
||||
if hasattr(self.model, "name"):
|
||||
search_clauses.append(self.model.name.contains(search))
|
||||
|
||||
if hasattr(self.model, "description"):
|
||||
search_clauses.append(self.model.description.contains(search))
|
||||
|
||||
if search_clauses:
|
||||
query = query.filter(or_(*search_clauses))
|
||||
return query
|
||||
|
||||
async def get_list(self, user_id: Optional[int] = None, **kwargs) -> List[GQL_TYPE]:
|
||||
query = self.get_query(user_id, **kwargs)
|
||||
query = self.get_query(user_id=user_id, **kwargs)
|
||||
return await self._get_list(query)
|
||||
|
||||
async def get_one(self, user_id: Optional[int] = None, **kwargs) -> GQL_TYPE:
|
||||
query = self.get_query(user_id, **kwargs)
|
||||
query = self.get_query(user_id=user_id, **kwargs)
|
||||
return await self._get_one(query)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user