Query Module
fluvius.query declares validated read resources and maps frontend filters, selection, sorting, pagination, and reports to a data manager.
from fluvius.query import DomainQueryManager, QueryResource
from fluvius.query.field import StringField
class CompanyQuery(QueryResource):
business_name: str = StringField("Business name", identifier=True)
class Meta:
identifier = "company-query"
backend_model = "company"
auth_required = True
policy_required = True
default_order = ("_id.desc",)
class AppQueryManager(DomainQueryManager):
__data_manager__ = AppDataManager
class Meta(DomainQueryManager.Meta):
query_resources = ("myapp.query:CompanyQuery",)
Mount managers positionally:
app = app | configure_query_manager(AppQueryManager)
QueryParams and FrontendQuery represent client requests; Filter and FilterPreset constrain filtering; ReportResource handles report-shaped output. Limits default to 25 and are capped by FLUVIUS_MAX_QUERY_LIMIT.
For direct storage access, use BackendQuery from fluvius.data. Query resources are the preferred HTTP boundary because they declare fields, auth, policy, sortable fields, and backend model metadata.