Query Module Overview
info
The Query module provides flexible query building and filtering for data retrieval.
Introduction
The Query module enables:
- Type-safe query building
- Complex filtering
- Sorting and pagination
- Field selection
- Frontend query translation
Quick Start
Define Query Resource
from fluvius.query import QueryResource, Field, endpoint
class UserQueryResource(QueryResource):
class Meta:
resource = 'user'
model = UserModel
name = Field(str, filterable=True, sortable=True)
email = Field(str, filterable=True)
active = Field(bool, filterable=True)
@endpoint('/users/search')
async def search_users(self, query):
# Custom search logic
pass
Build Queries
from fluvius.query import QueryManager
manager = QueryManager()
# Simple query
query = manager.build_query('user', {
'filter': {'active': True},
'sort': [{'field': 'name', 'order': 'asc'}],
'limit': 10
})
# Complex query
query = manager.build_query('user', {
'filter': {
'and': [
{'active': True},
{'or': [
{'name': {'like': 'John%'}},
{'email': {'like': '%@example.com'}}
]}
]
},
'sort': [{'field': 'created_at', 'order': 'desc'}],
'offset': 0,
'limit': 20
})
Execute Queries
# With domain state manager
results = await domain.statemgr.query(query)
# With data manager
results = await data_manager.query(query)
Filter Operators
eq: Equalne: Not equalgt: Greater thangte: Greater than or equallt: Less thanlte: Less than or equallike: Pattern matchingin: In listand: Logical ANDor: Logical OR
Next Steps
- Read the Query API Reference
- Learn about Filtering
- Check out Examples