Chuyển tới nội dung chính

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.