Skip to main content

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: Equal
  • ne: Not equal
  • gt: Greater than
  • gte: Greater than or equal
  • lt: Less than
  • lte: Less than or equal
  • like: Pattern matching
  • in: In list
  • and: Logical AND
  • or: Logical OR

Next Steps