原查询数据条件分页优化
This commit is contained in:
@@ -52,7 +52,7 @@ class BaseService(Generic[ModelType]):
|
||||
return db.query(self.model).filter(field == field_value).all()
|
||||
return []
|
||||
|
||||
def search_by_conditions(self, db: Session, conditions: Dict[str, Any]) -> List[ModelType]:
|
||||
def search_by_conditions(self, db: Session, conditions: Dict[str, Any], skip: int = 0, limit: Optional[int] = None) -> List[ModelType]:
|
||||
"""根据多个条件搜索记录"""
|
||||
query = db.query(self.model)
|
||||
for field_name, field_value in conditions.items():
|
||||
@@ -62,4 +62,19 @@ class BaseService(Generic[ModelType]):
|
||||
query = query.filter(field.like(f"{field_value}"))
|
||||
else:
|
||||
query = query.filter(field == field_value)
|
||||
return query.all()
|
||||
query = query.offset(skip)
|
||||
if limit is not None:
|
||||
query = query.limit(limit)
|
||||
return query.all()
|
||||
|
||||
def search_by_conditions_count(self, db: Session, conditions: Dict[str, Any]) -> int:
|
||||
"""根据多个条件搜索记录总数"""
|
||||
query = db.query(self.model)
|
||||
for field_name, field_value in conditions.items():
|
||||
if hasattr(self.model, field_name) and field_value is not None:
|
||||
field = getattr(self.model, field_name)
|
||||
if isinstance(field_value, str):
|
||||
query = query.filter(field.like(f"{field_value}"))
|
||||
else:
|
||||
query = query.filter(field == field_value)
|
||||
return query.count()
|
||||
Reference in New Issue
Block a user