Uprava queries a dotazovani se pres base query builder, fix nahledu fotky pro editor, cache na fotky

This commit is contained in:
Michal Kváček
2024-02-13 22:59:51 +01:00
parent 51316c492b
commit e28a6fce57
14 changed files with 209 additions and 90 deletions
+27 -14
View File
@@ -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)