Aggregate Provider¶
When building application with large dataset, it is common to pre-aggregate data on the data management layer and only query for aggregate from precomputed aggregate storage.
MorpFW provides a overrideable aggregate provider API for you to intercept the aggregate mechanism and put your own aggregate logic.
Overriding Aggregate Provider¶
import typing
import morpfw
from .app import App
from .model import PageCollection
class PagesAggregateProvider(morpfw.AggregateProvider):
def aggregate(self, query=None, group=None, order_by=None):
"""search for resources, aggregate and return aggregate result"""
result = []
# do something here
return result
@App.aggregateprovider(model=PageCollection)
def get_aggregateprovider(context):
return PagesAggregateProvider(context)