[{"data":1,"prerenderedAt":4716},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-auto/auto-api/aggregations-en":444,"/docs/nuxt-auto/auto-api/aggregations-surround-en":4711},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"page":445,"fallbackPage":4707},{"id":446,"title":211,"body":447,"description":457,"extension":4706,"links":4707,"meta":4708,"navigation":4707,"ogImage":4707,"path":212,"seo":4709,"stem":213,"__hash__":4710},"nuxt_auto/0.docs/3.nuxt-auto/2.auto-api/10.aggregations.md",{"type":448,"value":449,"toc":4666},"minimark",[450,454,458,463,471,647,652,655,769,773,870,874,877,976,980,987,1197,1201,1419,1423,1430,1593,1597,1702,1706,1712,1815,1819,1823,1976,2120,2124,2128,2255,2259,2370,2374,2541,2545,2646,2650,2759,2763,2770,2827,2830,2840,2844,2848,2851,2865,2910,2914,2917,3042,3046,3049,3170,3174,3177,3348,3351,3520,3524,3528,3791,3795,3932,3936,4234,4238,4266,4269,4280,4284,4457,4461,4605,4609,4662],[451,452,211],"h1",{"id":453},"aggregations",[455,456,457],"p",{},"Nuxt Auto API provides powerful aggregation capabilities for analyzing your data, including simple aggregates on list endpoints and complex grouped aggregations.",[459,460,462],"h2",{"id":461},"simple-aggregations","Simple Aggregations",[455,464,465,466,470],{},"Add aggregate functions to list requests using the ",[467,468,469],"code",{},"aggregate"," query parameter:",[472,473,478],"pre",{"className":474,"code":475,"language":476,"meta":477,"style":477},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// GET /api/orders?aggregate=count\n\n{\n  \"data\": [/* order records */],\n  \"meta\": {\n    \"total\": 150,\n    \"limit\": 20,\n    \"page\": 1,\n    \"aggregates\": {\n      \"count\": 150\n    }\n  }\n}\n","typescript","",[467,479,480,489,496,503,529,544,564,581,598,613,629,635,641],{"__ignoreMap":477},[481,482,485],"span",{"class":483,"line":484},"line",1,[481,486,488],{"class":487},"sHwdD","// GET /api/orders?aggregate=count\n",[481,490,492],{"class":483,"line":491},2,[481,493,495],{"emptyLinePlaceholder":494},true,"\n",[481,497,499],{"class":483,"line":498},3,[481,500,502],{"class":501},"sMK4o","{\n",[481,504,506,509,513,516,520,523,526],{"class":483,"line":505},4,[481,507,508],{"class":501},"  \"",[481,510,512],{"class":511},"sfazB","data",[481,514,515],{"class":501},"\"",[481,517,519],{"class":518},"swJcz",": [",[481,521,522],{"class":487},"/* order records */",[481,524,525],{"class":518},"]",[481,527,528],{"class":501},",\n",[481,530,532,534,537,539,542],{"class":483,"line":531},5,[481,533,508],{"class":501},[481,535,536],{"class":511},"meta",[481,538,515],{"class":501},[481,540,541],{"class":518},": ",[481,543,502],{"class":501},[481,545,547,550,553,555,558,562],{"class":483,"line":546},6,[481,548,549],{"class":501},"    \"",[481,551,552],{"class":518},"total",[481,554,515],{"class":501},[481,556,557],{"class":501},":",[481,559,561],{"class":560},"sbssI"," 150",[481,563,528],{"class":501},[481,565,567,569,572,574,576,579],{"class":483,"line":566},7,[481,568,549],{"class":501},[481,570,571],{"class":518},"limit",[481,573,515],{"class":501},[481,575,557],{"class":501},[481,577,578],{"class":560}," 20",[481,580,528],{"class":501},[481,582,584,586,589,591,593,596],{"class":483,"line":583},8,[481,585,549],{"class":501},[481,587,588],{"class":518},"page",[481,590,515],{"class":501},[481,592,557],{"class":501},[481,594,595],{"class":560}," 1",[481,597,528],{"class":501},[481,599,601,603,606,608,610],{"class":483,"line":600},9,[481,602,549],{"class":501},[481,604,605],{"class":518},"aggregates",[481,607,515],{"class":501},[481,609,557],{"class":501},[481,611,612],{"class":501}," {\n",[481,614,616,619,622,624,626],{"class":483,"line":615},10,[481,617,618],{"class":501},"      \"",[481,620,621],{"class":518},"count",[481,623,515],{"class":501},[481,625,557],{"class":501},[481,627,628],{"class":560}," 150\n",[481,630,632],{"class":483,"line":631},11,[481,633,634],{"class":501},"    }\n",[481,636,638],{"class":483,"line":637},12,[481,639,640],{"class":501},"  }\n",[481,642,644],{"class":483,"line":643},13,[481,645,646],{"class":501},"}\n",[648,649,651],"h3",{"id":650},"multiple-aggregates","Multiple Aggregates",[455,653,654],{},"Combine multiple aggregate functions:",[472,656,658],{"className":474,"code":657,"language":476,"meta":477,"style":477},"// GET /api/orders?aggregate=count,sum(amount),avg(amount)\n\n{\n  \"data\": [/* order records */],\n  \"meta\": {\n    \"aggregates\": {\n      \"count\": 150,\n      \"sum_amount\": 45000.00,\n      \"avg_amount\": 300.00\n    }\n  }\n}\n",[467,659,660,665,669,673,689,701,713,727,743,757,761,765],{"__ignoreMap":477},[481,661,662],{"class":483,"line":484},[481,663,664],{"class":487},"// GET /api/orders?aggregate=count,sum(amount),avg(amount)\n",[481,666,667],{"class":483,"line":491},[481,668,495],{"emptyLinePlaceholder":494},[481,670,671],{"class":483,"line":498},[481,672,502],{"class":501},[481,674,675,677,679,681,683,685,687],{"class":483,"line":505},[481,676,508],{"class":501},[481,678,512],{"class":511},[481,680,515],{"class":501},[481,682,519],{"class":518},[481,684,522],{"class":487},[481,686,525],{"class":518},[481,688,528],{"class":501},[481,690,691,693,695,697,699],{"class":483,"line":531},[481,692,508],{"class":501},[481,694,536],{"class":511},[481,696,515],{"class":501},[481,698,541],{"class":518},[481,700,502],{"class":501},[481,702,703,705,707,709,711],{"class":483,"line":546},[481,704,549],{"class":501},[481,706,605],{"class":518},[481,708,515],{"class":501},[481,710,557],{"class":501},[481,712,612],{"class":501},[481,714,715,717,719,721,723,725],{"class":483,"line":566},[481,716,618],{"class":501},[481,718,621],{"class":518},[481,720,515],{"class":501},[481,722,557],{"class":501},[481,724,561],{"class":560},[481,726,528],{"class":501},[481,728,729,731,734,736,738,741],{"class":483,"line":583},[481,730,618],{"class":501},[481,732,733],{"class":518},"sum_amount",[481,735,515],{"class":501},[481,737,557],{"class":501},[481,739,740],{"class":560}," 45000.00",[481,742,528],{"class":501},[481,744,745,747,750,752,754],{"class":483,"line":600},[481,746,618],{"class":501},[481,748,749],{"class":518},"avg_amount",[481,751,515],{"class":501},[481,753,557],{"class":501},[481,755,756],{"class":560}," 300.00\n",[481,758,759],{"class":483,"line":615},[481,760,634],{"class":501},[481,762,763],{"class":483,"line":631},[481,764,640],{"class":501},[481,766,767],{"class":483,"line":637},[481,768,646],{"class":501},[648,770,772],{"id":771},"available-functions","Available Functions",[774,775,776,792],"table",{},[777,778,779],"thead",{},[780,781,782,786,789],"tr",{},[783,784,785],"th",{},"Function",[783,787,788],{},"Description",[783,790,791],{},"Example",[793,794,795,810,825,840,855],"tbody",{},[780,796,797,802,805],{},[798,799,800],"td",{},[467,801,621],{},[798,803,804],{},"Count records",[798,806,807],{},[467,808,809],{},"aggregate=count",[780,811,812,817,820],{},[798,813,814],{},[467,815,816],{},"sum(field)",[798,818,819],{},"Sum of field values",[798,821,822],{},[467,823,824],{},"aggregate=sum(amount)",[780,826,827,832,835],{},[798,828,829],{},[467,830,831],{},"avg(field)",[798,833,834],{},"Average of field values",[798,836,837],{},[467,838,839],{},"aggregate=avg(price)",[780,841,842,847,850],{},[798,843,844],{},[467,845,846],{},"min(field)",[798,848,849],{},"Minimum value",[798,851,852],{},[467,853,854],{},"aggregate=min(price)",[780,856,857,862,865],{},[798,858,859],{},[467,860,861],{},"max(field)",[798,863,864],{},"Maximum value",[798,866,867],{},[467,868,869],{},"aggregate=max(price)",[459,871,873],{"id":872},"aggregates-with-filters","Aggregates with Filters",[455,875,876],{},"Combine aggregations with filters:",[472,878,880],{"className":474,"code":879,"language":476,"meta":477,"style":477},"// GET /api/orders?aggregate=sum(amount),count&filter[status]=completed\n\n{\n  \"data\": [/* completed orders */],\n  \"meta\": {\n    \"aggregates\": {\n      \"count\": 100,\n      \"sum_amount\": 30000.00\n    }\n  }\n}\n",[467,881,882,887,891,895,912,924,936,951,964,968,972],{"__ignoreMap":477},[481,883,884],{"class":483,"line":484},[481,885,886],{"class":487},"// GET /api/orders?aggregate=sum(amount),count&filter[status]=completed\n",[481,888,889],{"class":483,"line":491},[481,890,495],{"emptyLinePlaceholder":494},[481,892,893],{"class":483,"line":498},[481,894,502],{"class":501},[481,896,897,899,901,903,905,908,910],{"class":483,"line":505},[481,898,508],{"class":501},[481,900,512],{"class":511},[481,902,515],{"class":501},[481,904,519],{"class":518},[481,906,907],{"class":487},"/* completed orders */",[481,909,525],{"class":518},[481,911,528],{"class":501},[481,913,914,916,918,920,922],{"class":483,"line":531},[481,915,508],{"class":501},[481,917,536],{"class":511},[481,919,515],{"class":501},[481,921,541],{"class":518},[481,923,502],{"class":501},[481,925,926,928,930,932,934],{"class":483,"line":546},[481,927,549],{"class":501},[481,929,605],{"class":518},[481,931,515],{"class":501},[481,933,557],{"class":501},[481,935,612],{"class":501},[481,937,938,940,942,944,946,949],{"class":483,"line":566},[481,939,618],{"class":501},[481,941,621],{"class":518},[481,943,515],{"class":501},[481,945,557],{"class":501},[481,947,948],{"class":560}," 100",[481,950,528],{"class":501},[481,952,953,955,957,959,961],{"class":483,"line":583},[481,954,618],{"class":501},[481,956,733],{"class":518},[481,958,515],{"class":501},[481,960,557],{"class":501},[481,962,963],{"class":560}," 30000.00\n",[481,965,966],{"class":483,"line":600},[481,967,634],{"class":501},[481,969,970],{"class":483,"line":615},[481,971,640],{"class":501},[481,973,974],{"class":483,"line":631},[481,975,646],{"class":501},[459,977,979],{"id":978},"complex-aggregations-grouped","Complex Aggregations (Grouped)",[455,981,982,983,986],{},"Use the dedicated ",[467,984,985],{},"/aggregate"," endpoint for complex grouped aggregations:",[472,988,990],{"className":474,"code":989,"language":476,"meta":477,"style":477},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status\n\n{\n  \"data\": [\n    {\n      \"group\": { \"status\": \"pending\" },\n      \"count\": 50,\n      \"sum_amount\": 15000.00\n    },\n    {\n      \"group\": { \"status\": \"completed\" },\n      \"count\": 100,\n      \"sum_amount\": 30000.00\n    }\n  ],\n  \"meta\": {\n    \"total\": 2\n  }\n}\n",[467,991,992,997,1001,1005,1016,1021,1055,1070,1083,1088,1092,1121,1135,1147,1152,1160,1173,1187,1192],{"__ignoreMap":477},[481,993,994],{"class":483,"line":484},[481,995,996],{"class":487},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status\n",[481,998,999],{"class":483,"line":491},[481,1000,495],{"emptyLinePlaceholder":494},[481,1002,1003],{"class":483,"line":498},[481,1004,502],{"class":501},[481,1006,1007,1009,1011,1013],{"class":483,"line":505},[481,1008,508],{"class":501},[481,1010,512],{"class":511},[481,1012,515],{"class":501},[481,1014,1015],{"class":518},": [\n",[481,1017,1018],{"class":483,"line":531},[481,1019,1020],{"class":501},"    {\n",[481,1022,1023,1025,1028,1030,1032,1035,1038,1041,1043,1045,1047,1050,1052],{"class":483,"line":546},[481,1024,618],{"class":501},[481,1026,1027],{"class":518},"group",[481,1029,515],{"class":501},[481,1031,557],{"class":501},[481,1033,1034],{"class":501}," {",[481,1036,1037],{"class":501}," \"",[481,1039,1040],{"class":518},"status",[481,1042,515],{"class":501},[481,1044,557],{"class":501},[481,1046,1037],{"class":501},[481,1048,1049],{"class":511},"pending",[481,1051,515],{"class":501},[481,1053,1054],{"class":501}," },\n",[481,1056,1057,1059,1061,1063,1065,1068],{"class":483,"line":566},[481,1058,618],{"class":501},[481,1060,621],{"class":518},[481,1062,515],{"class":501},[481,1064,557],{"class":501},[481,1066,1067],{"class":560}," 50",[481,1069,528],{"class":501},[481,1071,1072,1074,1076,1078,1080],{"class":483,"line":583},[481,1073,618],{"class":501},[481,1075,733],{"class":518},[481,1077,515],{"class":501},[481,1079,557],{"class":501},[481,1081,1082],{"class":560}," 15000.00\n",[481,1084,1085],{"class":483,"line":600},[481,1086,1087],{"class":501},"    },\n",[481,1089,1090],{"class":483,"line":615},[481,1091,1020],{"class":501},[481,1093,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1117,1119],{"class":483,"line":631},[481,1095,618],{"class":501},[481,1097,1027],{"class":518},[481,1099,515],{"class":501},[481,1101,557],{"class":501},[481,1103,1034],{"class":501},[481,1105,1037],{"class":501},[481,1107,1040],{"class":518},[481,1109,515],{"class":501},[481,1111,557],{"class":501},[481,1113,1037],{"class":501},[481,1115,1116],{"class":511},"completed",[481,1118,515],{"class":501},[481,1120,1054],{"class":501},[481,1122,1123,1125,1127,1129,1131,1133],{"class":483,"line":637},[481,1124,618],{"class":501},[481,1126,621],{"class":518},[481,1128,515],{"class":501},[481,1130,557],{"class":501},[481,1132,948],{"class":560},[481,1134,528],{"class":501},[481,1136,1137,1139,1141,1143,1145],{"class":483,"line":643},[481,1138,618],{"class":501},[481,1140,733],{"class":518},[481,1142,515],{"class":501},[481,1144,557],{"class":501},[481,1146,963],{"class":560},[481,1148,1150],{"class":483,"line":1149},14,[481,1151,634],{"class":501},[481,1153,1155,1158],{"class":483,"line":1154},15,[481,1156,1157],{"class":518},"  ]",[481,1159,528],{"class":501},[481,1161,1163,1165,1167,1169,1171],{"class":483,"line":1162},16,[481,1164,508],{"class":501},[481,1166,536],{"class":511},[481,1168,515],{"class":501},[481,1170,541],{"class":518},[481,1172,502],{"class":501},[481,1174,1176,1178,1180,1182,1184],{"class":483,"line":1175},17,[481,1177,549],{"class":501},[481,1179,552],{"class":518},[481,1181,515],{"class":501},[481,1183,557],{"class":501},[481,1185,1186],{"class":560}," 2\n",[481,1188,1190],{"class":483,"line":1189},18,[481,1191,640],{"class":501},[481,1193,1195],{"class":483,"line":1194},19,[481,1196,646],{"class":501},[648,1198,1200],{"id":1199},"multiple-group-by-fields","Multiple Group By Fields",[472,1202,1204],{"className":474,"code":1203,"language":476,"meta":477,"style":477},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status,paymentMethod\n\n{\n  \"data\": [\n    {\n      \"group\": {\n        \"status\": \"completed\",\n        \"paymentMethod\": \"credit_card\"\n      },\n      \"count\": 60,\n      \"sum_amount\": 18000.00\n    },\n    {\n      \"group\": {\n        \"status\": \"completed\",\n        \"paymentMethod\": \"paypal\"\n      },\n      \"count\": 40,\n      \"sum_amount\": 12000.00\n    }\n  ]\n}\n",[467,1205,1206,1211,1215,1219,1229,1233,1245,1264,1283,1288,1303,1316,1320,1324,1336,1354,1371,1375,1390,1403,1408,1414],{"__ignoreMap":477},[481,1207,1208],{"class":483,"line":484},[481,1209,1210],{"class":487},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status,paymentMethod\n",[481,1212,1213],{"class":483,"line":491},[481,1214,495],{"emptyLinePlaceholder":494},[481,1216,1217],{"class":483,"line":498},[481,1218,502],{"class":501},[481,1220,1221,1223,1225,1227],{"class":483,"line":505},[481,1222,508],{"class":501},[481,1224,512],{"class":511},[481,1226,515],{"class":501},[481,1228,1015],{"class":518},[481,1230,1231],{"class":483,"line":531},[481,1232,1020],{"class":501},[481,1234,1235,1237,1239,1241,1243],{"class":483,"line":546},[481,1236,618],{"class":501},[481,1238,1027],{"class":518},[481,1240,515],{"class":501},[481,1242,557],{"class":501},[481,1244,612],{"class":501},[481,1246,1247,1250,1252,1254,1256,1258,1260,1262],{"class":483,"line":566},[481,1248,1249],{"class":501},"        \"",[481,1251,1040],{"class":518},[481,1253,515],{"class":501},[481,1255,557],{"class":501},[481,1257,1037],{"class":501},[481,1259,1116],{"class":511},[481,1261,515],{"class":501},[481,1263,528],{"class":501},[481,1265,1266,1268,1271,1273,1275,1277,1280],{"class":483,"line":583},[481,1267,1249],{"class":501},[481,1269,1270],{"class":518},"paymentMethod",[481,1272,515],{"class":501},[481,1274,557],{"class":501},[481,1276,1037],{"class":501},[481,1278,1279],{"class":511},"credit_card",[481,1281,1282],{"class":501},"\"\n",[481,1284,1285],{"class":483,"line":600},[481,1286,1287],{"class":501},"      },\n",[481,1289,1290,1292,1294,1296,1298,1301],{"class":483,"line":615},[481,1291,618],{"class":501},[481,1293,621],{"class":518},[481,1295,515],{"class":501},[481,1297,557],{"class":501},[481,1299,1300],{"class":560}," 60",[481,1302,528],{"class":501},[481,1304,1305,1307,1309,1311,1313],{"class":483,"line":631},[481,1306,618],{"class":501},[481,1308,733],{"class":518},[481,1310,515],{"class":501},[481,1312,557],{"class":501},[481,1314,1315],{"class":560}," 18000.00\n",[481,1317,1318],{"class":483,"line":637},[481,1319,1087],{"class":501},[481,1321,1322],{"class":483,"line":643},[481,1323,1020],{"class":501},[481,1325,1326,1328,1330,1332,1334],{"class":483,"line":1149},[481,1327,618],{"class":501},[481,1329,1027],{"class":518},[481,1331,515],{"class":501},[481,1333,557],{"class":501},[481,1335,612],{"class":501},[481,1337,1338,1340,1342,1344,1346,1348,1350,1352],{"class":483,"line":1154},[481,1339,1249],{"class":501},[481,1341,1040],{"class":518},[481,1343,515],{"class":501},[481,1345,557],{"class":501},[481,1347,1037],{"class":501},[481,1349,1116],{"class":511},[481,1351,515],{"class":501},[481,1353,528],{"class":501},[481,1355,1356,1358,1360,1362,1364,1366,1369],{"class":483,"line":1162},[481,1357,1249],{"class":501},[481,1359,1270],{"class":518},[481,1361,515],{"class":501},[481,1363,557],{"class":501},[481,1365,1037],{"class":501},[481,1367,1368],{"class":511},"paypal",[481,1370,1282],{"class":501},[481,1372,1373],{"class":483,"line":1175},[481,1374,1287],{"class":501},[481,1376,1377,1379,1381,1383,1385,1388],{"class":483,"line":1189},[481,1378,618],{"class":501},[481,1380,621],{"class":518},[481,1382,515],{"class":501},[481,1384,557],{"class":501},[481,1386,1387],{"class":560}," 40",[481,1389,528],{"class":501},[481,1391,1392,1394,1396,1398,1400],{"class":483,"line":1194},[481,1393,618],{"class":501},[481,1395,733],{"class":518},[481,1397,515],{"class":501},[481,1399,557],{"class":501},[481,1401,1402],{"class":560}," 12000.00\n",[481,1404,1406],{"class":483,"line":1405},20,[481,1407,634],{"class":501},[481,1409,1411],{"class":483,"line":1410},21,[481,1412,1413],{"class":518},"  ]\n",[481,1415,1417],{"class":483,"line":1416},22,[481,1418,646],{"class":501},[459,1420,1422],{"id":1421},"having-clause","Having Clause",[455,1424,1425,1426,1429],{},"Filter groups using the ",[467,1427,1428],{},"having"," parameter:",[472,1431,1433],{"className":474,"code":1432,"language":476,"meta":477,"style":477},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=userId&having={\"count\":{\"$gt\":5}}\n\n{\n  \"data\": [\n    {\n      \"group\": { \"userId\": 1 },\n      \"count\": 10,\n      \"sum_amount\": 3000.00\n    },\n    {\n      \"group\": { \"userId\": 2 },\n      \"count\": 7,\n      \"sum_amount\": 2100.00\n    }\n    // Only groups with count > 5\n  ]\n}\n",[467,1434,1435,1440,1444,1448,1458,1462,1487,1502,1515,1519,1523,1548,1563,1576,1580,1585,1589],{"__ignoreMap":477},[481,1436,1437],{"class":483,"line":484},[481,1438,1439],{"class":487},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=userId&having={\"count\":{\"$gt\":5}}\n",[481,1441,1442],{"class":483,"line":491},[481,1443,495],{"emptyLinePlaceholder":494},[481,1445,1446],{"class":483,"line":498},[481,1447,502],{"class":501},[481,1449,1450,1452,1454,1456],{"class":483,"line":505},[481,1451,508],{"class":501},[481,1453,512],{"class":511},[481,1455,515],{"class":501},[481,1457,1015],{"class":518},[481,1459,1460],{"class":483,"line":531},[481,1461,1020],{"class":501},[481,1463,1464,1466,1468,1470,1472,1474,1476,1479,1481,1483,1485],{"class":483,"line":546},[481,1465,618],{"class":501},[481,1467,1027],{"class":518},[481,1469,515],{"class":501},[481,1471,557],{"class":501},[481,1473,1034],{"class":501},[481,1475,1037],{"class":501},[481,1477,1478],{"class":518},"userId",[481,1480,515],{"class":501},[481,1482,557],{"class":501},[481,1484,595],{"class":560},[481,1486,1054],{"class":501},[481,1488,1489,1491,1493,1495,1497,1500],{"class":483,"line":566},[481,1490,618],{"class":501},[481,1492,621],{"class":518},[481,1494,515],{"class":501},[481,1496,557],{"class":501},[481,1498,1499],{"class":560}," 10",[481,1501,528],{"class":501},[481,1503,1504,1506,1508,1510,1512],{"class":483,"line":583},[481,1505,618],{"class":501},[481,1507,733],{"class":518},[481,1509,515],{"class":501},[481,1511,557],{"class":501},[481,1513,1514],{"class":560}," 3000.00\n",[481,1516,1517],{"class":483,"line":600},[481,1518,1087],{"class":501},[481,1520,1521],{"class":483,"line":615},[481,1522,1020],{"class":501},[481,1524,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1546],{"class":483,"line":631},[481,1526,618],{"class":501},[481,1528,1027],{"class":518},[481,1530,515],{"class":501},[481,1532,557],{"class":501},[481,1534,1034],{"class":501},[481,1536,1037],{"class":501},[481,1538,1478],{"class":518},[481,1540,515],{"class":501},[481,1542,557],{"class":501},[481,1544,1545],{"class":560}," 2",[481,1547,1054],{"class":501},[481,1549,1550,1552,1554,1556,1558,1561],{"class":483,"line":637},[481,1551,618],{"class":501},[481,1553,621],{"class":518},[481,1555,515],{"class":501},[481,1557,557],{"class":501},[481,1559,1560],{"class":560}," 7",[481,1562,528],{"class":501},[481,1564,1565,1567,1569,1571,1573],{"class":483,"line":643},[481,1566,618],{"class":501},[481,1568,733],{"class":518},[481,1570,515],{"class":501},[481,1572,557],{"class":501},[481,1574,1575],{"class":560}," 2100.00\n",[481,1577,1578],{"class":483,"line":1149},[481,1579,634],{"class":501},[481,1581,1582],{"class":483,"line":1154},[481,1583,1584],{"class":487},"    // Only groups with count > 5\n",[481,1586,1587],{"class":483,"line":1162},[481,1588,1413],{"class":518},[481,1590,1591],{"class":483,"line":1175},[481,1592,646],{"class":501},[648,1594,1596],{"id":1595},"having-operators","Having Operators",[774,1598,1599,1610],{},[777,1600,1601],{},[780,1602,1603,1606,1608],{},[783,1604,1605],{},"Operator",[783,1607,788],{},[783,1609,791],{},[793,1611,1612,1627,1642,1657,1672,1687],{},[780,1613,1614,1619,1622],{},[798,1615,1616],{},[467,1617,1618],{},"$gt",[798,1620,1621],{},"Greater than",[798,1623,1624],{},[467,1625,1626],{},"{\"count\":{\"$gt\":10}}",[780,1628,1629,1634,1637],{},[798,1630,1631],{},[467,1632,1633],{},"$gte",[798,1635,1636],{},"Greater than or equal",[798,1638,1639],{},[467,1640,1641],{},"{\"sum_amount\":{\"$gte\":1000}}",[780,1643,1644,1649,1652],{},[798,1645,1646],{},[467,1647,1648],{},"$lt",[798,1650,1651],{},"Less than",[798,1653,1654],{},[467,1655,1656],{},"{\"avg_price\":{\"$lt\":50}}",[780,1658,1659,1664,1667],{},[798,1660,1661],{},[467,1662,1663],{},"$lte",[798,1665,1666],{},"Less than or equal",[798,1668,1669],{},[467,1670,1671],{},"{\"count\":{\"$lte\":5}}",[780,1673,1674,1679,1682],{},[798,1675,1676],{},[467,1677,1678],{},"$eq",[798,1680,1681],{},"Equal",[798,1683,1684],{},[467,1685,1686],{},"{\"count\":{\"$eq\":0}}",[780,1688,1689,1694,1697],{},[798,1690,1691],{},[467,1692,1693],{},"$ne",[798,1695,1696],{},"Not equal",[798,1698,1699],{},[467,1700,1701],{},"{\"count\":{\"$ne\":0}}",[459,1703,1705],{"id":1704},"filters-with-aggregations","Filters with Aggregations",[455,1707,1708,1709,1429],{},"Apply filters before aggregation using the ",[467,1710,1711],{},"filter",[472,1713,1715],{"className":474,"code":1714,"language":476,"meta":477,"style":477},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status&filter[createdAt][$gte]=2024-01-01\n\n{\n  \"data\": [\n    {\n      \"group\": { \"status\": \"completed\" },\n      \"count\": 50,\n      \"sum_amount\": 15000.00\n    }\n    // Only orders created after 2024-01-01\n  ]\n}\n",[467,1716,1717,1722,1726,1730,1740,1744,1772,1786,1798,1802,1807,1811],{"__ignoreMap":477},[481,1718,1719],{"class":483,"line":484},[481,1720,1721],{"class":487},"// GET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status&filter[createdAt][$gte]=2024-01-01\n",[481,1723,1724],{"class":483,"line":491},[481,1725,495],{"emptyLinePlaceholder":494},[481,1727,1728],{"class":483,"line":498},[481,1729,502],{"class":501},[481,1731,1732,1734,1736,1738],{"class":483,"line":505},[481,1733,508],{"class":501},[481,1735,512],{"class":511},[481,1737,515],{"class":501},[481,1739,1015],{"class":518},[481,1741,1742],{"class":483,"line":531},[481,1743,1020],{"class":501},[481,1745,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770],{"class":483,"line":546},[481,1747,618],{"class":501},[481,1749,1027],{"class":518},[481,1751,515],{"class":501},[481,1753,557],{"class":501},[481,1755,1034],{"class":501},[481,1757,1037],{"class":501},[481,1759,1040],{"class":518},[481,1761,515],{"class":501},[481,1763,557],{"class":501},[481,1765,1037],{"class":501},[481,1767,1116],{"class":511},[481,1769,515],{"class":501},[481,1771,1054],{"class":501},[481,1773,1774,1776,1778,1780,1782,1784],{"class":483,"line":566},[481,1775,618],{"class":501},[481,1777,621],{"class":518},[481,1779,515],{"class":501},[481,1781,557],{"class":501},[481,1783,1067],{"class":560},[481,1785,528],{"class":501},[481,1787,1788,1790,1792,1794,1796],{"class":483,"line":583},[481,1789,618],{"class":501},[481,1791,733],{"class":518},[481,1793,515],{"class":501},[481,1795,557],{"class":501},[481,1797,1082],{"class":560},[481,1799,1800],{"class":483,"line":600},[481,1801,634],{"class":501},[481,1803,1804],{"class":483,"line":615},[481,1805,1806],{"class":487},"    // Only orders created after 2024-01-01\n",[481,1808,1809],{"class":483,"line":631},[481,1810,1413],{"class":518},[481,1812,1813],{"class":483,"line":637},[481,1814,646],{"class":501},[459,1816,1818],{"id":1817},"frontend-usage","Frontend Usage",[648,1820,1822],{"id":1821},"with-composables","With Composables",[472,1824,1826],{"className":474,"code":1825,"language":476,"meta":477,"style":477},"// Simple aggregations on list\nconst { data } = await useAutoApiFetch('orders', {\n  query: {\n    aggregate: 'count,sum(amount),avg(amount)',\n    filter: {\n      status: 'completed'\n    }\n  }\n})\n\nconsole.log(data.value.meta.aggregates)\n// { count: 100, sum_amount: 30000, avg_amount: 300 }\n",[467,1827,1828,1833,1875,1884,1901,1910,1924,1928,1932,1939,1943,1971],{"__ignoreMap":477},[481,1829,1830],{"class":483,"line":484},[481,1831,1832],{"class":487},"// Simple aggregations on list\n",[481,1834,1835,1839,1841,1845,1848,1851,1855,1859,1862,1865,1868,1870,1873],{"class":483,"line":491},[481,1836,1838],{"class":1837},"spNyl","const",[481,1840,1034],{"class":501},[481,1842,1844],{"class":1843},"sTEyZ"," data ",[481,1846,1847],{"class":501},"}",[481,1849,1850],{"class":501}," =",[481,1852,1854],{"class":1853},"s7zQu"," await",[481,1856,1858],{"class":1857},"s2Zo4"," useAutoApiFetch",[481,1860,1861],{"class":1843},"(",[481,1863,1864],{"class":501},"'",[481,1866,1867],{"class":511},"orders",[481,1869,1864],{"class":501},[481,1871,1872],{"class":501},",",[481,1874,612],{"class":501},[481,1876,1877,1880,1882],{"class":483,"line":498},[481,1878,1879],{"class":518},"  query",[481,1881,557],{"class":501},[481,1883,612],{"class":501},[481,1885,1886,1889,1891,1894,1897,1899],{"class":483,"line":505},[481,1887,1888],{"class":518},"    aggregate",[481,1890,557],{"class":501},[481,1892,1893],{"class":501}," '",[481,1895,1896],{"class":511},"count,sum(amount),avg(amount)",[481,1898,1864],{"class":501},[481,1900,528],{"class":501},[481,1902,1903,1906,1908],{"class":483,"line":531},[481,1904,1905],{"class":518},"    filter",[481,1907,557],{"class":501},[481,1909,612],{"class":501},[481,1911,1912,1915,1917,1919,1921],{"class":483,"line":546},[481,1913,1914],{"class":518},"      status",[481,1916,557],{"class":501},[481,1918,1893],{"class":501},[481,1920,1116],{"class":511},[481,1922,1923],{"class":501},"'\n",[481,1925,1926],{"class":483,"line":566},[481,1927,634],{"class":501},[481,1929,1930],{"class":483,"line":583},[481,1931,640],{"class":501},[481,1933,1934,1936],{"class":483,"line":600},[481,1935,1847],{"class":501},[481,1937,1938],{"class":1843},")\n",[481,1940,1941],{"class":483,"line":615},[481,1942,495],{"emptyLinePlaceholder":494},[481,1944,1945,1948,1951,1954,1957,1959,1962,1964,1966,1968],{"class":483,"line":631},[481,1946,1947],{"class":1843},"console",[481,1949,1950],{"class":501},".",[481,1952,1953],{"class":1857},"log",[481,1955,1956],{"class":1843},"(data",[481,1958,1950],{"class":501},[481,1960,1961],{"class":1843},"value",[481,1963,1950],{"class":501},[481,1965,536],{"class":1843},[481,1967,1950],{"class":501},[481,1969,1970],{"class":1843},"aggregates)\n",[481,1972,1973],{"class":483,"line":637},[481,1974,1975],{"class":487},"// { count: 100, sum_amount: 30000, avg_amount: 300 }\n",[472,1977,1979],{"className":474,"code":1978,"language":476,"meta":477,"style":477},"// Complex grouped aggregations\nconst { data } = await $fetch('/api/orders/aggregate', {\n  query: {\n    aggregate: 'count,sum(amount)',\n    groupBy: 'status',\n    having: {\n      count: { $gt: 10 }\n    }\n  }\n})\n\nconsole.log(data.data)\n// [{ group: { status: 'completed' }, count: 100, sum_amount: 30000 }]\n",[467,1980,1981,1986,2016,2024,2039,2054,2063,2082,2086,2090,2096,2100,2115],{"__ignoreMap":477},[481,1982,1983],{"class":483,"line":484},[481,1984,1985],{"class":487},"// Complex grouped aggregations\n",[481,1987,1988,1990,1992,1994,1996,1998,2000,2003,2005,2007,2010,2012,2014],{"class":483,"line":491},[481,1989,1838],{"class":1837},[481,1991,1034],{"class":501},[481,1993,1844],{"class":1843},[481,1995,1847],{"class":501},[481,1997,1850],{"class":501},[481,1999,1854],{"class":1853},[481,2001,2002],{"class":1857}," $fetch",[481,2004,1861],{"class":1843},[481,2006,1864],{"class":501},[481,2008,2009],{"class":511},"/api/orders/aggregate",[481,2011,1864],{"class":501},[481,2013,1872],{"class":501},[481,2015,612],{"class":501},[481,2017,2018,2020,2022],{"class":483,"line":498},[481,2019,1879],{"class":518},[481,2021,557],{"class":501},[481,2023,612],{"class":501},[481,2025,2026,2028,2030,2032,2035,2037],{"class":483,"line":505},[481,2027,1888],{"class":518},[481,2029,557],{"class":501},[481,2031,1893],{"class":501},[481,2033,2034],{"class":511},"count,sum(amount)",[481,2036,1864],{"class":501},[481,2038,528],{"class":501},[481,2040,2041,2044,2046,2048,2050,2052],{"class":483,"line":531},[481,2042,2043],{"class":518},"    groupBy",[481,2045,557],{"class":501},[481,2047,1893],{"class":501},[481,2049,1040],{"class":511},[481,2051,1864],{"class":501},[481,2053,528],{"class":501},[481,2055,2056,2059,2061],{"class":483,"line":546},[481,2057,2058],{"class":518},"    having",[481,2060,557],{"class":501},[481,2062,612],{"class":501},[481,2064,2065,2068,2070,2072,2075,2077,2079],{"class":483,"line":566},[481,2066,2067],{"class":518},"      count",[481,2069,557],{"class":501},[481,2071,1034],{"class":501},[481,2073,2074],{"class":518}," $gt",[481,2076,557],{"class":501},[481,2078,1499],{"class":560},[481,2080,2081],{"class":501}," }\n",[481,2083,2084],{"class":483,"line":583},[481,2085,634],{"class":501},[481,2087,2088],{"class":483,"line":600},[481,2089,640],{"class":501},[481,2091,2092,2094],{"class":483,"line":615},[481,2093,1847],{"class":501},[481,2095,1938],{"class":1843},[481,2097,2098],{"class":483,"line":631},[481,2099,495],{"emptyLinePlaceholder":494},[481,2101,2102,2104,2106,2108,2110,2112],{"class":483,"line":637},[481,2103,1947],{"class":1843},[481,2105,1950],{"class":501},[481,2107,1953],{"class":1857},[481,2109,1956],{"class":1843},[481,2111,1950],{"class":501},[481,2113,2114],{"class":1843},"data)\n",[481,2116,2117],{"class":483,"line":643},[481,2118,2119],{"class":487},"// [{ group: { status: 'completed' }, count: 100, sum_amount: 30000 }]\n",[459,2121,2123],{"id":2122},"real-world-examples","Real-World Examples",[648,2125,2127],{"id":2126},"sales-dashboard","Sales Dashboard",[472,2129,2131],{"className":474,"code":2130,"language":476,"meta":477,"style":477},"// Total sales by month\nconst salesByMonth = await $fetch('/api/orders/aggregate', {\n  query: {\n    aggregate: 'sum(amount),count',\n    groupBy: 'monthYear',  // Assumes computed field\n    filter: {\n      createdAt: {\n        $gte: '2024-01-01'\n      }\n    }\n  }\n})\n",[467,2132,2133,2138,2164,2172,2187,2205,2213,2222,2236,2241,2245,2249],{"__ignoreMap":477},[481,2134,2135],{"class":483,"line":484},[481,2136,2137],{"class":487},"// Total sales by month\n",[481,2139,2140,2142,2145,2148,2150,2152,2154,2156,2158,2160,2162],{"class":483,"line":491},[481,2141,1838],{"class":1837},[481,2143,2144],{"class":1843}," salesByMonth ",[481,2146,2147],{"class":501},"=",[481,2149,1854],{"class":1853},[481,2151,2002],{"class":1857},[481,2153,1861],{"class":1843},[481,2155,1864],{"class":501},[481,2157,2009],{"class":511},[481,2159,1864],{"class":501},[481,2161,1872],{"class":501},[481,2163,612],{"class":501},[481,2165,2166,2168,2170],{"class":483,"line":498},[481,2167,1879],{"class":518},[481,2169,557],{"class":501},[481,2171,612],{"class":501},[481,2173,2174,2176,2178,2180,2183,2185],{"class":483,"line":505},[481,2175,1888],{"class":518},[481,2177,557],{"class":501},[481,2179,1893],{"class":501},[481,2181,2182],{"class":511},"sum(amount),count",[481,2184,1864],{"class":501},[481,2186,528],{"class":501},[481,2188,2189,2191,2193,2195,2198,2200,2202],{"class":483,"line":531},[481,2190,2043],{"class":518},[481,2192,557],{"class":501},[481,2194,1893],{"class":501},[481,2196,2197],{"class":511},"monthYear",[481,2199,1864],{"class":501},[481,2201,1872],{"class":501},[481,2203,2204],{"class":487},"  // Assumes computed field\n",[481,2206,2207,2209,2211],{"class":483,"line":546},[481,2208,1905],{"class":518},[481,2210,557],{"class":501},[481,2212,612],{"class":501},[481,2214,2215,2218,2220],{"class":483,"line":566},[481,2216,2217],{"class":518},"      createdAt",[481,2219,557],{"class":501},[481,2221,612],{"class":501},[481,2223,2224,2227,2229,2231,2234],{"class":483,"line":583},[481,2225,2226],{"class":518},"        $gte",[481,2228,557],{"class":501},[481,2230,1893],{"class":501},[481,2232,2233],{"class":511},"2024-01-01",[481,2235,1923],{"class":501},[481,2237,2238],{"class":483,"line":600},[481,2239,2240],{"class":501},"      }\n",[481,2242,2243],{"class":483,"line":615},[481,2244,634],{"class":501},[481,2246,2247],{"class":483,"line":631},[481,2248,640],{"class":501},[481,2250,2251,2253],{"class":483,"line":637},[481,2252,1847],{"class":501},[481,2254,1938],{"class":1843},[648,2256,2258],{"id":2257},"user-activity-report","User Activity Report",[472,2260,2262],{"className":474,"code":2261,"language":476,"meta":477,"style":477},"// Active users by number of orders\nconst activeUsers = await $fetch('/api/orders/aggregate', {\n  query: {\n    aggregate: 'count',\n    groupBy: 'userId',\n    having: {\n      count: { $gte: 5 }\n    }\n  }\n})\n",[467,2263,2264,2269,2294,2302,2316,2330,2338,2356,2360,2364],{"__ignoreMap":477},[481,2265,2266],{"class":483,"line":484},[481,2267,2268],{"class":487},"// Active users by number of orders\n",[481,2270,2271,2273,2276,2278,2280,2282,2284,2286,2288,2290,2292],{"class":483,"line":491},[481,2272,1838],{"class":1837},[481,2274,2275],{"class":1843}," activeUsers ",[481,2277,2147],{"class":501},[481,2279,1854],{"class":1853},[481,2281,2002],{"class":1857},[481,2283,1861],{"class":1843},[481,2285,1864],{"class":501},[481,2287,2009],{"class":511},[481,2289,1864],{"class":501},[481,2291,1872],{"class":501},[481,2293,612],{"class":501},[481,2295,2296,2298,2300],{"class":483,"line":498},[481,2297,1879],{"class":518},[481,2299,557],{"class":501},[481,2301,612],{"class":501},[481,2303,2304,2306,2308,2310,2312,2314],{"class":483,"line":505},[481,2305,1888],{"class":518},[481,2307,557],{"class":501},[481,2309,1893],{"class":501},[481,2311,621],{"class":511},[481,2313,1864],{"class":501},[481,2315,528],{"class":501},[481,2317,2318,2320,2322,2324,2326,2328],{"class":483,"line":531},[481,2319,2043],{"class":518},[481,2321,557],{"class":501},[481,2323,1893],{"class":501},[481,2325,1478],{"class":511},[481,2327,1864],{"class":501},[481,2329,528],{"class":501},[481,2331,2332,2334,2336],{"class":483,"line":546},[481,2333,2058],{"class":518},[481,2335,557],{"class":501},[481,2337,612],{"class":501},[481,2339,2340,2342,2344,2346,2349,2351,2354],{"class":483,"line":566},[481,2341,2067],{"class":518},[481,2343,557],{"class":501},[481,2345,1034],{"class":501},[481,2347,2348],{"class":518}," $gte",[481,2350,557],{"class":501},[481,2352,2353],{"class":560}," 5",[481,2355,2081],{"class":501},[481,2357,2358],{"class":483,"line":583},[481,2359,634],{"class":501},[481,2361,2362],{"class":483,"line":600},[481,2363,640],{"class":501},[481,2365,2366,2368],{"class":483,"line":615},[481,2367,1847],{"class":501},[481,2369,1938],{"class":1843},[648,2371,2373],{"id":2372},"product-performance","Product Performance",[472,2375,2377],{"className":474,"code":2376,"language":476,"meta":477,"style":477},"// Best-selling products\nconst topProducts = await $fetch('/api/orderItems/aggregate', {\n  query: {\n    aggregate: 'sum(quantity),sum(total)',\n    groupBy: 'productId',\n    filter: {\n      createdAt: {\n        $gte: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString()\n      }\n    }\n  }\n})\n",[467,2378,2379,2384,2410,2418,2433,2448,2456,2464,2523,2527,2531,2535],{"__ignoreMap":477},[481,2380,2381],{"class":483,"line":484},[481,2382,2383],{"class":487},"// Best-selling products\n",[481,2385,2386,2388,2391,2393,2395,2397,2399,2401,2404,2406,2408],{"class":483,"line":491},[481,2387,1838],{"class":1837},[481,2389,2390],{"class":1843}," topProducts ",[481,2392,2147],{"class":501},[481,2394,1854],{"class":1853},[481,2396,2002],{"class":1857},[481,2398,1861],{"class":1843},[481,2400,1864],{"class":501},[481,2402,2403],{"class":511},"/api/orderItems/aggregate",[481,2405,1864],{"class":501},[481,2407,1872],{"class":501},[481,2409,612],{"class":501},[481,2411,2412,2414,2416],{"class":483,"line":498},[481,2413,1879],{"class":518},[481,2415,557],{"class":501},[481,2417,612],{"class":501},[481,2419,2420,2422,2424,2426,2429,2431],{"class":483,"line":505},[481,2421,1888],{"class":518},[481,2423,557],{"class":501},[481,2425,1893],{"class":501},[481,2427,2428],{"class":511},"sum(quantity),sum(total)",[481,2430,1864],{"class":501},[481,2432,528],{"class":501},[481,2434,2435,2437,2439,2441,2444,2446],{"class":483,"line":531},[481,2436,2043],{"class":518},[481,2438,557],{"class":501},[481,2440,1893],{"class":501},[481,2442,2443],{"class":511},"productId",[481,2445,1864],{"class":501},[481,2447,528],{"class":501},[481,2449,2450,2452,2454],{"class":483,"line":546},[481,2451,1905],{"class":518},[481,2453,557],{"class":501},[481,2455,612],{"class":501},[481,2457,2458,2460,2462],{"class":483,"line":566},[481,2459,2217],{"class":518},[481,2461,557],{"class":501},[481,2463,612],{"class":501},[481,2465,2466,2468,2470,2473,2476,2479,2481,2484,2487,2490,2493,2496,2499,2501,2503,2505,2507,2509,2512,2515,2517,2520],{"class":483,"line":583},[481,2467,2226],{"class":518},[481,2469,557],{"class":501},[481,2471,2472],{"class":501}," new",[481,2474,2475],{"class":1857}," Date",[481,2477,2478],{"class":1843},"(Date",[481,2480,1950],{"class":501},[481,2482,2483],{"class":1857},"now",[481,2485,2486],{"class":1843},"() ",[481,2488,2489],{"class":501},"-",[481,2491,2492],{"class":560}," 30",[481,2494,2495],{"class":501}," *",[481,2497,2498],{"class":560}," 24",[481,2500,2495],{"class":501},[481,2502,1300],{"class":560},[481,2504,2495],{"class":501},[481,2506,1300],{"class":560},[481,2508,2495],{"class":501},[481,2510,2511],{"class":560}," 1000",[481,2513,2514],{"class":1843},")",[481,2516,1950],{"class":501},[481,2518,2519],{"class":1857},"toISOString",[481,2521,2522],{"class":1843},"()\n",[481,2524,2525],{"class":483,"line":600},[481,2526,2240],{"class":501},[481,2528,2529],{"class":483,"line":615},[481,2530,634],{"class":501},[481,2532,2533],{"class":483,"line":631},[481,2534,640],{"class":501},[481,2536,2537,2539],{"class":483,"line":637},[481,2538,1847],{"class":501},[481,2540,1938],{"class":1843},[648,2542,2544],{"id":2543},"revenue-by-payment-method","Revenue by Payment Method",[472,2546,2548],{"className":474,"code":2547,"language":476,"meta":477,"style":477},"const revenueByPayment = await $fetch('/api/orders/aggregate', {\n  query: {\n    aggregate: 'sum(amount),count,avg(amount)',\n    groupBy: 'paymentMethod',\n    filter: {\n      status: 'completed'\n    }\n  }\n})\n",[467,2549,2550,2575,2583,2598,2612,2620,2632,2636,2640],{"__ignoreMap":477},[481,2551,2552,2554,2557,2559,2561,2563,2565,2567,2569,2571,2573],{"class":483,"line":484},[481,2553,1838],{"class":1837},[481,2555,2556],{"class":1843}," revenueByPayment ",[481,2558,2147],{"class":501},[481,2560,1854],{"class":1853},[481,2562,2002],{"class":1857},[481,2564,1861],{"class":1843},[481,2566,1864],{"class":501},[481,2568,2009],{"class":511},[481,2570,1864],{"class":501},[481,2572,1872],{"class":501},[481,2574,612],{"class":501},[481,2576,2577,2579,2581],{"class":483,"line":491},[481,2578,1879],{"class":518},[481,2580,557],{"class":501},[481,2582,612],{"class":501},[481,2584,2585,2587,2589,2591,2594,2596],{"class":483,"line":498},[481,2586,1888],{"class":518},[481,2588,557],{"class":501},[481,2590,1893],{"class":501},[481,2592,2593],{"class":511},"sum(amount),count,avg(amount)",[481,2595,1864],{"class":501},[481,2597,528],{"class":501},[481,2599,2600,2602,2604,2606,2608,2610],{"class":483,"line":505},[481,2601,2043],{"class":518},[481,2603,557],{"class":501},[481,2605,1893],{"class":501},[481,2607,1270],{"class":511},[481,2609,1864],{"class":501},[481,2611,528],{"class":501},[481,2613,2614,2616,2618],{"class":483,"line":531},[481,2615,1905],{"class":518},[481,2617,557],{"class":501},[481,2619,612],{"class":501},[481,2621,2622,2624,2626,2628,2630],{"class":483,"line":546},[481,2623,1914],{"class":518},[481,2625,557],{"class":501},[481,2627,1893],{"class":501},[481,2629,1116],{"class":511},[481,2631,1923],{"class":501},[481,2633,2634],{"class":483,"line":566},[481,2635,634],{"class":501},[481,2637,2638],{"class":483,"line":583},[481,2639,640],{"class":501},[481,2641,2642,2644],{"class":483,"line":600},[481,2643,1847],{"class":501},[481,2645,1938],{"class":1843},[459,2647,2649],{"id":2648},"configuration","Configuration",[472,2651,2653],{"className":474,"code":2652,"language":476,"meta":477,"style":477},"export default defineNuxtConfig({\n  autoApi: {\n    aggregations: {\n      // Enable/disable aggregations (default: true)\n      enabled: true,\n\n      // Allow groupBy (default: true)\n      allowGroupBy: true,\n\n      // Maximum number of groupBy fields (default: 5)\n      maxGroupByFields: 5\n    }\n  }\n})\n",[467,2654,2655,2670,2679,2688,2693,2706,2710,2715,2726,2730,2735,2745,2749,2753],{"__ignoreMap":477},[481,2656,2657,2660,2663,2666,2668],{"class":483,"line":484},[481,2658,2659],{"class":1853},"export",[481,2661,2662],{"class":1853}," default",[481,2664,2665],{"class":1857}," defineNuxtConfig",[481,2667,1861],{"class":1843},[481,2669,502],{"class":501},[481,2671,2672,2675,2677],{"class":483,"line":491},[481,2673,2674],{"class":518},"  autoApi",[481,2676,557],{"class":501},[481,2678,612],{"class":501},[481,2680,2681,2684,2686],{"class":483,"line":498},[481,2682,2683],{"class":518},"    aggregations",[481,2685,557],{"class":501},[481,2687,612],{"class":501},[481,2689,2690],{"class":483,"line":505},[481,2691,2692],{"class":487},"      // Enable/disable aggregations (default: true)\n",[481,2694,2695,2698,2700,2704],{"class":483,"line":531},[481,2696,2697],{"class":518},"      enabled",[481,2699,557],{"class":501},[481,2701,2703],{"class":2702},"sfNiH"," true",[481,2705,528],{"class":501},[481,2707,2708],{"class":483,"line":546},[481,2709,495],{"emptyLinePlaceholder":494},[481,2711,2712],{"class":483,"line":566},[481,2713,2714],{"class":487},"      // Allow groupBy (default: true)\n",[481,2716,2717,2720,2722,2724],{"class":483,"line":583},[481,2718,2719],{"class":518},"      allowGroupBy",[481,2721,557],{"class":501},[481,2723,2703],{"class":2702},[481,2725,528],{"class":501},[481,2727,2728],{"class":483,"line":600},[481,2729,495],{"emptyLinePlaceholder":494},[481,2731,2732],{"class":483,"line":615},[481,2733,2734],{"class":487},"      // Maximum number of groupBy fields (default: 5)\n",[481,2736,2737,2740,2742],{"class":483,"line":631},[481,2738,2739],{"class":518},"      maxGroupByFields",[481,2741,557],{"class":501},[481,2743,2744],{"class":560}," 5\n",[481,2746,2747],{"class":483,"line":637},[481,2748,634],{"class":501},[481,2750,2751],{"class":483,"line":643},[481,2752,640],{"class":501},[481,2754,2755,2757],{"class":483,"line":1149},[481,2756,1847],{"class":501},[481,2758,1938],{"class":1843},[459,2760,2762],{"id":2761},"authorization","Authorization",[455,2764,2765,2766,2769],{},"Aggregations require ",[467,2767,2768],{},"read"," permission on the resource:",[472,2771,2773],{"className":474,"code":2772,"language":476,"meta":477,"style":477},"// User must have permission to read orders\nGET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status\n",[467,2774,2775,2780],{"__ignoreMap":477},[481,2776,2777],{"class":483,"line":484},[481,2778,2779],{"class":487},"// User must have permission to read orders\n",[481,2781,2782,2785,2788,2791,2793,2795,2797,2799,2802,2804,2806,2808,2810,2813,2816,2819,2822,2824],{"class":483,"line":491},[481,2783,2784],{"class":1843},"GET ",[481,2786,2787],{"class":501},"/",[481,2789,2790],{"class":1843},"api",[481,2792,2787],{"class":501},[481,2794,1867],{"class":1843},[481,2796,2787],{"class":501},[481,2798,469],{"class":1843},[481,2800,2801],{"class":501},"?",[481,2803,469],{"class":1843},[481,2805,2147],{"class":501},[481,2807,621],{"class":1843},[481,2809,1872],{"class":501},[481,2811,2812],{"class":1857},"sum",[481,2814,2815],{"class":1843},"(amount)",[481,2817,2818],{"class":501},"&",[481,2820,2821],{"class":1843},"groupBy",[481,2823,2147],{"class":501},[481,2825,2826],{"class":1843},"status\n",[455,2828,2829],{},"Collection-level authorization applies (not object-level):",[2831,2832,2833,2837],"ul",{},[2834,2835,2836],"li",{},"User needs permission to query the resource",[2834,2838,2839],{},"Individual records are not checked (aggregates are anonymous)",[459,2841,2843],{"id":2842},"performance-considerations","Performance Considerations",[648,2845,2847],{"id":2846},"database-indexes","Database Indexes",[455,2849,2850],{},"Create indexes on fields used in:",[2831,2852,2853,2858,2862],{},[2834,2854,2855,2857],{},[467,2856,2821],{}," clauses",[2834,2859,2860,2857],{},[467,2861,1711],{},[2834,2863,2864],{},"Aggregate functions (for some databases)",[472,2866,2870],{"className":2867,"code":2868,"language":2869,"meta":477,"style":477},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Index for grouping\nCREATE INDEX idx_orders_status ON orders(status);\n\n-- Index for filtering\nCREATE INDEX idx_orders_created_at ON orders(created_at);\n\n-- Composite index for group + filter\nCREATE INDEX idx_orders_status_created ON orders(status, created_at);\n","sql",[467,2871,2872,2877,2882,2886,2891,2896,2900,2905],{"__ignoreMap":477},[481,2873,2874],{"class":483,"line":484},[481,2875,2876],{},"-- Index for grouping\n",[481,2878,2879],{"class":483,"line":491},[481,2880,2881],{},"CREATE INDEX idx_orders_status ON orders(status);\n",[481,2883,2884],{"class":483,"line":498},[481,2885,495],{"emptyLinePlaceholder":494},[481,2887,2888],{"class":483,"line":505},[481,2889,2890],{},"-- Index for filtering\n",[481,2892,2893],{"class":483,"line":531},[481,2894,2895],{},"CREATE INDEX idx_orders_created_at ON orders(created_at);\n",[481,2897,2898],{"class":483,"line":546},[481,2899,495],{"emptyLinePlaceholder":494},[481,2901,2902],{"class":483,"line":566},[481,2903,2904],{},"-- Composite index for group + filter\n",[481,2906,2907],{"class":483,"line":583},[481,2908,2909],{},"CREATE INDEX idx_orders_status_created ON orders(status, created_at);\n",[648,2911,2913],{"id":2912},"query-optimization","Query Optimization",[455,2915,2916],{},"Aggregations can be slow on large tables:",[472,2918,2920],{"className":474,"code":2919,"language":476,"meta":477,"style":477},"// Good: Filter before aggregating\nGET /api/orders/aggregate?\n  aggregate=count,sum(amount)&\n  groupBy=status&\n  filter[createdAt][$gte]=2024-01-01\n\n// Less efficient: Aggregate entire table\nGET /api/orders/aggregate?aggregate=count,sum(amount)&groupBy=status\n",[467,2921,2922,2927,2946,2964,2975,2995,2999,3004],{"__ignoreMap":477},[481,2923,2924],{"class":483,"line":484},[481,2925,2926],{"class":487},"// Good: Filter before aggregating\n",[481,2928,2929,2931,2933,2935,2937,2939,2941,2943],{"class":483,"line":491},[481,2930,2784],{"class":1843},[481,2932,2787],{"class":501},[481,2934,2790],{"class":1843},[481,2936,2787],{"class":501},[481,2938,1867],{"class":1843},[481,2940,2787],{"class":501},[481,2942,469],{"class":1843},[481,2944,2945],{"class":501},"?\n",[481,2947,2948,2951,2953,2955,2957,2959,2961],{"class":483,"line":498},[481,2949,2950],{"class":1843},"  aggregate",[481,2952,2147],{"class":501},[481,2954,621],{"class":1843},[481,2956,1872],{"class":501},[481,2958,2812],{"class":1857},[481,2960,2815],{"class":1843},[481,2962,2963],{"class":501},"&\n",[481,2965,2966,2969,2971,2973],{"class":483,"line":505},[481,2967,2968],{"class":1843},"  groupBy",[481,2970,2147],{"class":501},[481,2972,1040],{"class":1843},[481,2974,2963],{"class":501},[481,2976,2977,2980,2982,2985,2987,2990,2992],{"class":483,"line":531},[481,2978,2979],{"class":1843},"  filter[createdAt][$gte]",[481,2981,2147],{"class":501},[481,2983,2984],{"class":560},"2024",[481,2986,2489],{"class":501},[481,2988,2989],{"class":560},"01",[481,2991,2489],{"class":501},[481,2993,2994],{"class":560},"01\n",[481,2996,2997],{"class":483,"line":546},[481,2998,495],{"emptyLinePlaceholder":494},[481,3000,3001],{"class":483,"line":566},[481,3002,3003],{"class":487},"// Less efficient: Aggregate entire table\n",[481,3005,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038,3040],{"class":483,"line":583},[481,3007,2784],{"class":1843},[481,3009,2787],{"class":501},[481,3011,2790],{"class":1843},[481,3013,2787],{"class":501},[481,3015,1867],{"class":1843},[481,3017,2787],{"class":501},[481,3019,469],{"class":1843},[481,3021,2801],{"class":501},[481,3023,469],{"class":1843},[481,3025,2147],{"class":501},[481,3027,621],{"class":1843},[481,3029,1872],{"class":501},[481,3031,2812],{"class":1857},[481,3033,2815],{"class":1843},[481,3035,2818],{"class":501},[481,3037,2821],{"class":1843},[481,3039,2147],{"class":501},[481,3041,2826],{"class":1843},[648,3043,3045],{"id":3044},"limit-group-count","Limit Group Count",[455,3047,3048],{},"Avoid grouping by high-cardinality fields:",[472,3050,3052],{"className":474,"code":3051,"language":476,"meta":477,"style":477},"// Bad: Too many groups (one per user)\nGET /api/orders/aggregate?aggregate=count&groupBy=userId\n\n// Better: Limit with having clause\nGET /api/orders/aggregate?\n  aggregate=count&\n  groupBy=userId&\n  having={\"count\":{\"$gte\":10}}\n",[467,3053,3054,3059,3092,3096,3101,3119,3129,3139],{"__ignoreMap":477},[481,3055,3056],{"class":483,"line":484},[481,3057,3058],{"class":487},"// Bad: Too many groups (one per user)\n",[481,3060,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089],{"class":483,"line":491},[481,3062,2784],{"class":1843},[481,3064,2787],{"class":501},[481,3066,2790],{"class":1843},[481,3068,2787],{"class":501},[481,3070,1867],{"class":1843},[481,3072,2787],{"class":501},[481,3074,469],{"class":1843},[481,3076,2801],{"class":501},[481,3078,469],{"class":1843},[481,3080,2147],{"class":501},[481,3082,621],{"class":1843},[481,3084,2818],{"class":501},[481,3086,2821],{"class":1843},[481,3088,2147],{"class":501},[481,3090,3091],{"class":1843},"userId\n",[481,3093,3094],{"class":483,"line":498},[481,3095,495],{"emptyLinePlaceholder":494},[481,3097,3098],{"class":483,"line":505},[481,3099,3100],{"class":487},"// Better: Limit with having clause\n",[481,3102,3103,3105,3107,3109,3111,3113,3115,3117],{"class":483,"line":531},[481,3104,2784],{"class":1843},[481,3106,2787],{"class":501},[481,3108,2790],{"class":1843},[481,3110,2787],{"class":501},[481,3112,1867],{"class":1843},[481,3114,2787],{"class":501},[481,3116,469],{"class":1843},[481,3118,2945],{"class":501},[481,3120,3121,3123,3125,3127],{"class":483,"line":546},[481,3122,2950],{"class":1843},[481,3124,2147],{"class":501},[481,3126,621],{"class":1843},[481,3128,2963],{"class":501},[481,3130,3131,3133,3135,3137],{"class":483,"line":566},[481,3132,2968],{"class":1843},[481,3134,2147],{"class":501},[481,3136,1478],{"class":1843},[481,3138,2963],{"class":501},[481,3140,3141,3144,3147,3149,3151,3153,3156,3158,3160,3162,3164,3167],{"class":483,"line":583},[481,3142,3143],{"class":1843},"  having",[481,3145,3146],{"class":501},"={",[481,3148,515],{"class":501},[481,3150,621],{"class":518},[481,3152,515],{"class":501},[481,3154,3155],{"class":501},":{",[481,3157,515],{"class":501},[481,3159,1633],{"class":518},[481,3161,515],{"class":501},[481,3163,557],{"class":501},[481,3165,3166],{"class":560},"10",[481,3168,3169],{"class":501},"}}\n",[459,3171,3173],{"id":3172},"caching","Caching",[455,3175,3176],{},"Cache aggregation results for expensive queries:",[472,3178,3180],{"className":474,"code":3179,"language":476,"meta":477,"style":477},"// Frontend caching with TanStack Query\nconst { data } = useQuery({\n  queryKey: ['orders', 'aggregate', 'by-status'],\n  queryFn: () => $fetch('/api/orders/aggregate', {\n    query: {\n      aggregate: 'count,sum(amount)',\n      groupBy: 'status'\n    }\n  }),\n  staleTime: 5 * 60 * 1000,  // 5 minutes\n})\n",[467,3181,3182,3187,3206,3243,3270,3279,3294,3307,3311,3320,3342],{"__ignoreMap":477},[481,3183,3184],{"class":483,"line":484},[481,3185,3186],{"class":487},"// Frontend caching with TanStack Query\n",[481,3188,3189,3191,3193,3195,3197,3199,3202,3204],{"class":483,"line":491},[481,3190,1838],{"class":1837},[481,3192,1034],{"class":501},[481,3194,1844],{"class":1843},[481,3196,1847],{"class":501},[481,3198,1850],{"class":501},[481,3200,3201],{"class":1857}," useQuery",[481,3203,1861],{"class":1843},[481,3205,502],{"class":501},[481,3207,3208,3211,3213,3216,3218,3220,3222,3224,3226,3228,3230,3232,3234,3237,3239,3241],{"class":483,"line":498},[481,3209,3210],{"class":518},"  queryKey",[481,3212,557],{"class":501},[481,3214,3215],{"class":1843}," [",[481,3217,1864],{"class":501},[481,3219,1867],{"class":511},[481,3221,1864],{"class":501},[481,3223,1872],{"class":501},[481,3225,1893],{"class":501},[481,3227,469],{"class":511},[481,3229,1864],{"class":501},[481,3231,1872],{"class":501},[481,3233,1893],{"class":501},[481,3235,3236],{"class":511},"by-status",[481,3238,1864],{"class":501},[481,3240,525],{"class":1843},[481,3242,528],{"class":501},[481,3244,3245,3248,3250,3253,3256,3258,3260,3262,3264,3266,3268],{"class":483,"line":505},[481,3246,3247],{"class":1857},"  queryFn",[481,3249,557],{"class":501},[481,3251,3252],{"class":501}," ()",[481,3254,3255],{"class":1837}," =>",[481,3257,2002],{"class":1857},[481,3259,1861],{"class":1843},[481,3261,1864],{"class":501},[481,3263,2009],{"class":511},[481,3265,1864],{"class":501},[481,3267,1872],{"class":501},[481,3269,612],{"class":501},[481,3271,3272,3275,3277],{"class":483,"line":531},[481,3273,3274],{"class":518},"    query",[481,3276,557],{"class":501},[481,3278,612],{"class":501},[481,3280,3281,3284,3286,3288,3290,3292],{"class":483,"line":546},[481,3282,3283],{"class":518},"      aggregate",[481,3285,557],{"class":501},[481,3287,1893],{"class":501},[481,3289,2034],{"class":511},[481,3291,1864],{"class":501},[481,3293,528],{"class":501},[481,3295,3296,3299,3301,3303,3305],{"class":483,"line":566},[481,3297,3298],{"class":518},"      groupBy",[481,3300,557],{"class":501},[481,3302,1893],{"class":501},[481,3304,1040],{"class":511},[481,3306,1923],{"class":501},[481,3308,3309],{"class":483,"line":583},[481,3310,634],{"class":501},[481,3312,3313,3316,3318],{"class":483,"line":600},[481,3314,3315],{"class":501},"  }",[481,3317,2514],{"class":1843},[481,3319,528],{"class":501},[481,3321,3322,3325,3327,3329,3331,3333,3335,3337,3339],{"class":483,"line":615},[481,3323,3324],{"class":518},"  staleTime",[481,3326,557],{"class":501},[481,3328,2353],{"class":560},[481,3330,2495],{"class":501},[481,3332,1300],{"class":560},[481,3334,2495],{"class":501},[481,3336,2511],{"class":560},[481,3338,1872],{"class":501},[481,3340,3341],{"class":487},"  // 5 minutes\n",[481,3343,3344,3346],{"class":483,"line":631},[481,3345,1847],{"class":501},[481,3347,1938],{"class":1843},[455,3349,3350],{},"Server-side caching:",[472,3352,3354],{"className":474,"code":3353,"language":476,"meta":477,"style":477},"// server/api/reports/sales-summary.ts\nexport default defineEventHandler(async (event) => {\n  // Cache expensive aggregation\n  return await useStorage('cache').getItem('sales-summary', async () => {\n    return await $fetch('/api/orders/aggregate', {\n      query: {\n        aggregate: 'sum(amount),count',\n        groupBy: 'status'\n      }\n    })\n  })\n})\n",[467,3355,3356,3361,3388,3393,3439,3460,3469,3484,3497,3501,3508,3514],{"__ignoreMap":477},[481,3357,3358],{"class":483,"line":484},[481,3359,3360],{"class":487},"// server/api/reports/sales-summary.ts\n",[481,3362,3363,3365,3367,3370,3372,3375,3378,3382,3384,3386],{"class":483,"line":491},[481,3364,2659],{"class":1853},[481,3366,2662],{"class":1853},[481,3368,3369],{"class":1857}," defineEventHandler",[481,3371,1861],{"class":1843},[481,3373,3374],{"class":1837},"async",[481,3376,3377],{"class":501}," (",[481,3379,3381],{"class":3380},"sHdIc","event",[481,3383,2514],{"class":501},[481,3385,3255],{"class":1837},[481,3387,612],{"class":501},[481,3389,3390],{"class":483,"line":498},[481,3391,3392],{"class":487},"  // Cache expensive aggregation\n",[481,3394,3395,3398,3400,3403,3405,3407,3410,3412,3414,3416,3419,3421,3423,3426,3428,3430,3433,3435,3437],{"class":483,"line":505},[481,3396,3397],{"class":1853},"  return",[481,3399,1854],{"class":1853},[481,3401,3402],{"class":1857}," useStorage",[481,3404,1861],{"class":518},[481,3406,1864],{"class":501},[481,3408,3409],{"class":511},"cache",[481,3411,1864],{"class":501},[481,3413,2514],{"class":518},[481,3415,1950],{"class":501},[481,3417,3418],{"class":1857},"getItem",[481,3420,1861],{"class":518},[481,3422,1864],{"class":501},[481,3424,3425],{"class":511},"sales-summary",[481,3427,1864],{"class":501},[481,3429,1872],{"class":501},[481,3431,3432],{"class":1837}," async",[481,3434,3252],{"class":501},[481,3436,3255],{"class":1837},[481,3438,612],{"class":501},[481,3440,3441,3444,3446,3448,3450,3452,3454,3456,3458],{"class":483,"line":531},[481,3442,3443],{"class":1853},"    return",[481,3445,1854],{"class":1853},[481,3447,2002],{"class":1857},[481,3449,1861],{"class":518},[481,3451,1864],{"class":501},[481,3453,2009],{"class":511},[481,3455,1864],{"class":501},[481,3457,1872],{"class":501},[481,3459,612],{"class":501},[481,3461,3462,3465,3467],{"class":483,"line":546},[481,3463,3464],{"class":518},"      query",[481,3466,557],{"class":501},[481,3468,612],{"class":501},[481,3470,3471,3474,3476,3478,3480,3482],{"class":483,"line":566},[481,3472,3473],{"class":518},"        aggregate",[481,3475,557],{"class":501},[481,3477,1893],{"class":501},[481,3479,2182],{"class":511},[481,3481,1864],{"class":501},[481,3483,528],{"class":501},[481,3485,3486,3489,3491,3493,3495],{"class":483,"line":583},[481,3487,3488],{"class":518},"        groupBy",[481,3490,557],{"class":501},[481,3492,1893],{"class":501},[481,3494,1040],{"class":511},[481,3496,1923],{"class":501},[481,3498,3499],{"class":483,"line":600},[481,3500,2240],{"class":501},[481,3502,3503,3506],{"class":483,"line":615},[481,3504,3505],{"class":501},"    }",[481,3507,1938],{"class":518},[481,3509,3510,3512],{"class":483,"line":631},[481,3511,3315],{"class":501},[481,3513,1938],{"class":518},[481,3515,3516,3518],{"class":483,"line":637},[481,3517,1847],{"class":501},[481,3519,1938],{"class":1843},[459,3521,3523],{"id":3522},"common-patterns","Common Patterns",[648,3525,3527],{"id":3526},"dashboard-stats","Dashboard Stats",[472,3529,3531],{"className":474,"code":3530,"language":476,"meta":477,"style":477},"// Single request for multiple stats\nconst stats = await Promise.all([\n  // Total revenue\n  $fetch('/api/orders', {\n    query: { aggregate: 'sum(amount)' }\n  }),\n\n  // Orders by status\n  $fetch('/api/orders/aggregate', {\n    query: {\n      aggregate: 'count',\n      groupBy: 'status'\n    }\n  }),\n\n  // Top customers\n  $fetch('/api/orders/aggregate', {\n    query: {\n      aggregate: 'sum(amount),count',\n      groupBy: 'customerId',\n      having: { count: { $gte: 5 } }\n    }\n  })\n])\n",[467,3532,3533,3538,3561,3566,3584,3606,3614,3618,3623,3639,3647,3661,3673,3677,3685,3689,3694,3710,3718,3732,3747,3774,3778,3785],{"__ignoreMap":477},[481,3534,3535],{"class":483,"line":484},[481,3536,3537],{"class":487},"// Single request for multiple stats\n",[481,3539,3540,3542,3545,3547,3549,3553,3555,3558],{"class":483,"line":491},[481,3541,1838],{"class":1837},[481,3543,3544],{"class":1843}," stats ",[481,3546,2147],{"class":501},[481,3548,1854],{"class":1853},[481,3550,3552],{"class":3551},"sBMFI"," Promise",[481,3554,1950],{"class":501},[481,3556,3557],{"class":1857},"all",[481,3559,3560],{"class":1843},"([\n",[481,3562,3563],{"class":483,"line":498},[481,3564,3565],{"class":487},"  // Total revenue\n",[481,3567,3568,3571,3573,3575,3578,3580,3582],{"class":483,"line":505},[481,3569,3570],{"class":1857},"  $fetch",[481,3572,1861],{"class":1843},[481,3574,1864],{"class":501},[481,3576,3577],{"class":511},"/api/orders",[481,3579,1864],{"class":501},[481,3581,1872],{"class":501},[481,3583,612],{"class":501},[481,3585,3586,3588,3590,3592,3595,3597,3599,3602,3604],{"class":483,"line":531},[481,3587,3274],{"class":518},[481,3589,557],{"class":501},[481,3591,1034],{"class":501},[481,3593,3594],{"class":518}," aggregate",[481,3596,557],{"class":501},[481,3598,1893],{"class":501},[481,3600,3601],{"class":511},"sum(amount)",[481,3603,1864],{"class":501},[481,3605,2081],{"class":501},[481,3607,3608,3610,3612],{"class":483,"line":546},[481,3609,3315],{"class":501},[481,3611,2514],{"class":1843},[481,3613,528],{"class":501},[481,3615,3616],{"class":483,"line":566},[481,3617,495],{"emptyLinePlaceholder":494},[481,3619,3620],{"class":483,"line":583},[481,3621,3622],{"class":487},"  // Orders by status\n",[481,3624,3625,3627,3629,3631,3633,3635,3637],{"class":483,"line":600},[481,3626,3570],{"class":1857},[481,3628,1861],{"class":1843},[481,3630,1864],{"class":501},[481,3632,2009],{"class":511},[481,3634,1864],{"class":501},[481,3636,1872],{"class":501},[481,3638,612],{"class":501},[481,3640,3641,3643,3645],{"class":483,"line":615},[481,3642,3274],{"class":518},[481,3644,557],{"class":501},[481,3646,612],{"class":501},[481,3648,3649,3651,3653,3655,3657,3659],{"class":483,"line":631},[481,3650,3283],{"class":518},[481,3652,557],{"class":501},[481,3654,1893],{"class":501},[481,3656,621],{"class":511},[481,3658,1864],{"class":501},[481,3660,528],{"class":501},[481,3662,3663,3665,3667,3669,3671],{"class":483,"line":637},[481,3664,3298],{"class":518},[481,3666,557],{"class":501},[481,3668,1893],{"class":501},[481,3670,1040],{"class":511},[481,3672,1923],{"class":501},[481,3674,3675],{"class":483,"line":643},[481,3676,634],{"class":501},[481,3678,3679,3681,3683],{"class":483,"line":1149},[481,3680,3315],{"class":501},[481,3682,2514],{"class":1843},[481,3684,528],{"class":501},[481,3686,3687],{"class":483,"line":1154},[481,3688,495],{"emptyLinePlaceholder":494},[481,3690,3691],{"class":483,"line":1162},[481,3692,3693],{"class":487},"  // Top customers\n",[481,3695,3696,3698,3700,3702,3704,3706,3708],{"class":483,"line":1175},[481,3697,3570],{"class":1857},[481,3699,1861],{"class":1843},[481,3701,1864],{"class":501},[481,3703,2009],{"class":511},[481,3705,1864],{"class":501},[481,3707,1872],{"class":501},[481,3709,612],{"class":501},[481,3711,3712,3714,3716],{"class":483,"line":1189},[481,3713,3274],{"class":518},[481,3715,557],{"class":501},[481,3717,612],{"class":501},[481,3719,3720,3722,3724,3726,3728,3730],{"class":483,"line":1194},[481,3721,3283],{"class":518},[481,3723,557],{"class":501},[481,3725,1893],{"class":501},[481,3727,2182],{"class":511},[481,3729,1864],{"class":501},[481,3731,528],{"class":501},[481,3733,3734,3736,3738,3740,3743,3745],{"class":483,"line":1405},[481,3735,3298],{"class":518},[481,3737,557],{"class":501},[481,3739,1893],{"class":501},[481,3741,3742],{"class":511},"customerId",[481,3744,1864],{"class":501},[481,3746,528],{"class":501},[481,3748,3749,3752,3754,3756,3759,3761,3763,3765,3767,3769,3772],{"class":483,"line":1410},[481,3750,3751],{"class":518},"      having",[481,3753,557],{"class":501},[481,3755,1034],{"class":501},[481,3757,3758],{"class":518}," count",[481,3760,557],{"class":501},[481,3762,1034],{"class":501},[481,3764,2348],{"class":518},[481,3766,557],{"class":501},[481,3768,2353],{"class":560},[481,3770,3771],{"class":501}," }",[481,3773,2081],{"class":501},[481,3775,3776],{"class":483,"line":1416},[481,3777,634],{"class":501},[481,3779,3781,3783],{"class":483,"line":3780},23,[481,3782,3315],{"class":501},[481,3784,1938],{"class":1843},[481,3786,3788],{"class":483,"line":3787},24,[481,3789,3790],{"class":1843},"])\n",[648,3792,3794],{"id":3793},"time-series-data","Time-Series Data",[472,3796,3798],{"className":474,"code":3797,"language":476,"meta":477,"style":477},"// Group by date (requires date extraction in SQL)\nconst dailySales = await $fetch('/api/orders/aggregate', {\n  query: {\n    aggregate: 'sum(amount),count',\n    groupBy: 'date',  // DATE(created_at)\n    filter: {\n      createdAt: {\n        $gte: '2024-01-01',\n        $lt: '2024-02-01'\n      }\n    }\n  }\n})\n",[467,3799,3800,3805,3830,3838,3852,3870,3878,3886,3900,3914,3918,3922,3926],{"__ignoreMap":477},[481,3801,3802],{"class":483,"line":484},[481,3803,3804],{"class":487},"// Group by date (requires date extraction in SQL)\n",[481,3806,3807,3809,3812,3814,3816,3818,3820,3822,3824,3826,3828],{"class":483,"line":491},[481,3808,1838],{"class":1837},[481,3810,3811],{"class":1843}," dailySales ",[481,3813,2147],{"class":501},[481,3815,1854],{"class":1853},[481,3817,2002],{"class":1857},[481,3819,1861],{"class":1843},[481,3821,1864],{"class":501},[481,3823,2009],{"class":511},[481,3825,1864],{"class":501},[481,3827,1872],{"class":501},[481,3829,612],{"class":501},[481,3831,3832,3834,3836],{"class":483,"line":498},[481,3833,1879],{"class":518},[481,3835,557],{"class":501},[481,3837,612],{"class":501},[481,3839,3840,3842,3844,3846,3848,3850],{"class":483,"line":505},[481,3841,1888],{"class":518},[481,3843,557],{"class":501},[481,3845,1893],{"class":501},[481,3847,2182],{"class":511},[481,3849,1864],{"class":501},[481,3851,528],{"class":501},[481,3853,3854,3856,3858,3860,3863,3865,3867],{"class":483,"line":531},[481,3855,2043],{"class":518},[481,3857,557],{"class":501},[481,3859,1893],{"class":501},[481,3861,3862],{"class":511},"date",[481,3864,1864],{"class":501},[481,3866,1872],{"class":501},[481,3868,3869],{"class":487},"  // DATE(created_at)\n",[481,3871,3872,3874,3876],{"class":483,"line":546},[481,3873,1905],{"class":518},[481,3875,557],{"class":501},[481,3877,612],{"class":501},[481,3879,3880,3882,3884],{"class":483,"line":566},[481,3881,2217],{"class":518},[481,3883,557],{"class":501},[481,3885,612],{"class":501},[481,3887,3888,3890,3892,3894,3896,3898],{"class":483,"line":583},[481,3889,2226],{"class":518},[481,3891,557],{"class":501},[481,3893,1893],{"class":501},[481,3895,2233],{"class":511},[481,3897,1864],{"class":501},[481,3899,528],{"class":501},[481,3901,3902,3905,3907,3909,3912],{"class":483,"line":600},[481,3903,3904],{"class":518},"        $lt",[481,3906,557],{"class":501},[481,3908,1893],{"class":501},[481,3910,3911],{"class":511},"2024-02-01",[481,3913,1923],{"class":501},[481,3915,3916],{"class":483,"line":615},[481,3917,2240],{"class":501},[481,3919,3920],{"class":483,"line":631},[481,3921,634],{"class":501},[481,3923,3924],{"class":483,"line":637},[481,3925,640],{"class":501},[481,3927,3928,3930],{"class":483,"line":643},[481,3929,1847],{"class":501},[481,3931,1938],{"class":1843},[648,3933,3935],{"id":3934},"conversion-metrics","Conversion Metrics",[472,3937,3939],{"className":474,"code":3938,"language":476,"meta":477,"style":477},"// Calculate conversion rates\nconst funnelStats = await $fetch('/api/leads/aggregate', {\n  query: {\n    aggregate: 'count',\n    groupBy: 'stage'\n  }\n})\n\nconst conversionRate = {\n  leadToQualified: funnelStats.data.find(s => s.group.stage === 'qualified').count /\n                   funnelStats.data.find(s => s.group.stage === 'lead').count,\n  qualifiedToCustomer: funnelStats.data.find(s => s.group.stage === 'customer').count /\n                       funnelStats.data.find(s => s.group.stage === 'qualified').count\n}\n",[467,3940,3941,3946,3972,3980,3994,4007,4011,4017,4021,4032,4090,4136,4186,4230],{"__ignoreMap":477},[481,3942,3943],{"class":483,"line":484},[481,3944,3945],{"class":487},"// Calculate conversion rates\n",[481,3947,3948,3950,3953,3955,3957,3959,3961,3963,3966,3968,3970],{"class":483,"line":491},[481,3949,1838],{"class":1837},[481,3951,3952],{"class":1843}," funnelStats ",[481,3954,2147],{"class":501},[481,3956,1854],{"class":1853},[481,3958,2002],{"class":1857},[481,3960,1861],{"class":1843},[481,3962,1864],{"class":501},[481,3964,3965],{"class":511},"/api/leads/aggregate",[481,3967,1864],{"class":501},[481,3969,1872],{"class":501},[481,3971,612],{"class":501},[481,3973,3974,3976,3978],{"class":483,"line":498},[481,3975,1879],{"class":518},[481,3977,557],{"class":501},[481,3979,612],{"class":501},[481,3981,3982,3984,3986,3988,3990,3992],{"class":483,"line":505},[481,3983,1888],{"class":518},[481,3985,557],{"class":501},[481,3987,1893],{"class":501},[481,3989,621],{"class":511},[481,3991,1864],{"class":501},[481,3993,528],{"class":501},[481,3995,3996,3998,4000,4002,4005],{"class":483,"line":531},[481,3997,2043],{"class":518},[481,3999,557],{"class":501},[481,4001,1893],{"class":501},[481,4003,4004],{"class":511},"stage",[481,4006,1923],{"class":501},[481,4008,4009],{"class":483,"line":546},[481,4010,640],{"class":501},[481,4012,4013,4015],{"class":483,"line":566},[481,4014,1847],{"class":501},[481,4016,1938],{"class":1843},[481,4018,4019],{"class":483,"line":583},[481,4020,495],{"emptyLinePlaceholder":494},[481,4022,4023,4025,4028,4030],{"class":483,"line":600},[481,4024,1838],{"class":1837},[481,4026,4027],{"class":1843}," conversionRate ",[481,4029,2147],{"class":501},[481,4031,612],{"class":501},[481,4033,4034,4037,4039,4042,4044,4046,4048,4051,4053,4056,4058,4061,4063,4065,4067,4070,4073,4075,4078,4080,4082,4084,4087],{"class":483,"line":615},[481,4035,4036],{"class":518},"  leadToQualified",[481,4038,557],{"class":501},[481,4040,4041],{"class":1843}," funnelStats",[481,4043,1950],{"class":501},[481,4045,512],{"class":1843},[481,4047,1950],{"class":501},[481,4049,4050],{"class":1857},"find",[481,4052,1861],{"class":1843},[481,4054,4055],{"class":3380},"s",[481,4057,3255],{"class":1837},[481,4059,4060],{"class":1843}," s",[481,4062,1950],{"class":501},[481,4064,1027],{"class":1843},[481,4066,1950],{"class":501},[481,4068,4069],{"class":1843},"stage ",[481,4071,4072],{"class":501},"===",[481,4074,1893],{"class":501},[481,4076,4077],{"class":511},"qualified",[481,4079,1864],{"class":501},[481,4081,2514],{"class":1843},[481,4083,1950],{"class":501},[481,4085,4086],{"class":1843},"count ",[481,4088,4089],{"class":501},"/\n",[481,4091,4092,4095,4097,4099,4101,4103,4105,4107,4109,4111,4113,4115,4117,4119,4121,4123,4126,4128,4130,4132,4134],{"class":483,"line":631},[481,4093,4094],{"class":1843},"                   funnelStats",[481,4096,1950],{"class":501},[481,4098,512],{"class":1843},[481,4100,1950],{"class":501},[481,4102,4050],{"class":1857},[481,4104,1861],{"class":1843},[481,4106,4055],{"class":3380},[481,4108,3255],{"class":1837},[481,4110,4060],{"class":1843},[481,4112,1950],{"class":501},[481,4114,1027],{"class":1843},[481,4116,1950],{"class":501},[481,4118,4069],{"class":1843},[481,4120,4072],{"class":501},[481,4122,1893],{"class":501},[481,4124,4125],{"class":511},"lead",[481,4127,1864],{"class":501},[481,4129,2514],{"class":1843},[481,4131,1950],{"class":501},[481,4133,621],{"class":1843},[481,4135,528],{"class":501},[481,4137,4138,4141,4143,4145,4147,4149,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169,4171,4173,4176,4178,4180,4182,4184],{"class":483,"line":637},[481,4139,4140],{"class":518},"  qualifiedToCustomer",[481,4142,557],{"class":501},[481,4144,4041],{"class":1843},[481,4146,1950],{"class":501},[481,4148,512],{"class":1843},[481,4150,1950],{"class":501},[481,4152,4050],{"class":1857},[481,4154,1861],{"class":1843},[481,4156,4055],{"class":3380},[481,4158,3255],{"class":1837},[481,4160,4060],{"class":1843},[481,4162,1950],{"class":501},[481,4164,1027],{"class":1843},[481,4166,1950],{"class":501},[481,4168,4069],{"class":1843},[481,4170,4072],{"class":501},[481,4172,1893],{"class":501},[481,4174,4175],{"class":511},"customer",[481,4177,1864],{"class":501},[481,4179,2514],{"class":1843},[481,4181,1950],{"class":501},[481,4183,4086],{"class":1843},[481,4185,4089],{"class":501},[481,4187,4188,4191,4193,4195,4197,4199,4201,4203,4205,4207,4209,4211,4213,4215,4217,4219,4221,4223,4225,4227],{"class":483,"line":643},[481,4189,4190],{"class":1843},"                       funnelStats",[481,4192,1950],{"class":501},[481,4194,512],{"class":1843},[481,4196,1950],{"class":501},[481,4198,4050],{"class":1857},[481,4200,1861],{"class":1843},[481,4202,4055],{"class":3380},[481,4204,3255],{"class":1837},[481,4206,4060],{"class":1843},[481,4208,1950],{"class":501},[481,4210,1027],{"class":1843},[481,4212,1950],{"class":501},[481,4214,4069],{"class":1843},[481,4216,4072],{"class":501},[481,4218,1893],{"class":501},[481,4220,4077],{"class":511},[481,4222,1864],{"class":501},[481,4224,2514],{"class":1843},[481,4226,1950],{"class":501},[481,4228,4229],{"class":1843},"count\n",[481,4231,4232],{"class":483,"line":1149},[481,4233,646],{"class":501},[459,4235,4237],{"id":4236},"limitations","Limitations",[4239,4240,4241,4248,4254,4260],"ol",{},[2834,4242,4243,4247],{},[4244,4245,4246],"strong",{},"No nested aggregations",": Can't aggregate on computed aggregates",[2834,4249,4250,4253],{},[4244,4251,4252],{},"Limited having operators",": Only basic comparison operators",[2834,4255,4256,4259],{},[4244,4257,4258],{},"No percentile functions",": Use custom SQL for advanced statistics",[2834,4261,4262,4265],{},[4244,4263,4264],{},"Group limit",": Maximum 5 group by fields (configurable)",[455,4267,4268],{},"For complex analytics beyond these limitations, consider:",[2831,4270,4271,4274,4277],{},[2834,4272,4273],{},"Custom API endpoints with raw SQL",[2834,4275,4276],{},"Analytics tools (Metabase, Looker)",[2834,4278,4279],{},"Data warehouse solutions",[459,4281,4283],{"id":4282},"error-handling","Error Handling",[472,4285,4287],{"className":474,"code":4286,"language":476,"meta":477,"style":477},"// Invalid aggregate function\nGET /api/orders?aggregate=invalid(amount)\n// Response: Warning logged, aggregate ignored\n\n// Unknown field\nGET /api/orders?aggregate=sum(nonexistent)\n// Response: Warning logged, aggregate ignored\n\n// Too many groupBy fields\nGET /api/orders/aggregate?groupBy=a,b,c,d,e,f\n// Response: 400 - \"Group by limited to 5 fields\"\n\n// Aggregations disabled\nGET /api/orders?aggregate=count\n// Response: 403 - \"Aggregations are disabled\"\n",[467,4288,4289,4294,4318,4323,4327,4332,4355,4359,4363,4368,4418,4423,4427,4432,4452],{"__ignoreMap":477},[481,4290,4291],{"class":483,"line":484},[481,4292,4293],{"class":487},"// Invalid aggregate function\n",[481,4295,4296,4298,4300,4302,4304,4306,4308,4310,4312,4315],{"class":483,"line":491},[481,4297,2784],{"class":1843},[481,4299,2787],{"class":501},[481,4301,2790],{"class":1843},[481,4303,2787],{"class":501},[481,4305,1867],{"class":1843},[481,4307,2801],{"class":501},[481,4309,469],{"class":1843},[481,4311,2147],{"class":501},[481,4313,4314],{"class":1857},"invalid",[481,4316,4317],{"class":1843},"(amount)\n",[481,4319,4320],{"class":483,"line":498},[481,4321,4322],{"class":487},"// Response: Warning logged, aggregate ignored\n",[481,4324,4325],{"class":483,"line":505},[481,4326,495],{"emptyLinePlaceholder":494},[481,4328,4329],{"class":483,"line":531},[481,4330,4331],{"class":487},"// Unknown field\n",[481,4333,4334,4336,4338,4340,4342,4344,4346,4348,4350,4352],{"class":483,"line":546},[481,4335,2784],{"class":1843},[481,4337,2787],{"class":501},[481,4339,2790],{"class":1843},[481,4341,2787],{"class":501},[481,4343,1867],{"class":1843},[481,4345,2801],{"class":501},[481,4347,469],{"class":1843},[481,4349,2147],{"class":501},[481,4351,2812],{"class":1857},[481,4353,4354],{"class":1843},"(nonexistent)\n",[481,4356,4357],{"class":483,"line":566},[481,4358,4322],{"class":487},[481,4360,4361],{"class":483,"line":583},[481,4362,495],{"emptyLinePlaceholder":494},[481,4364,4365],{"class":483,"line":600},[481,4366,4367],{"class":487},"// Too many groupBy fields\n",[481,4369,4370,4372,4374,4376,4378,4380,4382,4384,4386,4388,4390,4393,4395,4398,4400,4403,4405,4408,4410,4413,4415],{"class":483,"line":615},[481,4371,2784],{"class":1843},[481,4373,2787],{"class":501},[481,4375,2790],{"class":1843},[481,4377,2787],{"class":501},[481,4379,1867],{"class":1843},[481,4381,2787],{"class":501},[481,4383,469],{"class":1843},[481,4385,2801],{"class":501},[481,4387,2821],{"class":1843},[481,4389,2147],{"class":501},[481,4391,4392],{"class":1843},"a",[481,4394,1872],{"class":501},[481,4396,4397],{"class":1843},"b",[481,4399,1872],{"class":501},[481,4401,4402],{"class":1843},"c",[481,4404,1872],{"class":501},[481,4406,4407],{"class":1843},"d",[481,4409,1872],{"class":501},[481,4411,4412],{"class":1843},"e",[481,4414,1872],{"class":501},[481,4416,4417],{"class":1843},"f\n",[481,4419,4420],{"class":483,"line":631},[481,4421,4422],{"class":487},"// Response: 400 - \"Group by limited to 5 fields\"\n",[481,4424,4425],{"class":483,"line":637},[481,4426,495],{"emptyLinePlaceholder":494},[481,4428,4429],{"class":483,"line":643},[481,4430,4431],{"class":487},"// Aggregations disabled\n",[481,4433,4434,4436,4438,4440,4442,4444,4446,4448,4450],{"class":483,"line":1149},[481,4435,2784],{"class":1843},[481,4437,2787],{"class":501},[481,4439,2790],{"class":1843},[481,4441,2787],{"class":501},[481,4443,1867],{"class":1843},[481,4445,2801],{"class":501},[481,4447,469],{"class":1843},[481,4449,2147],{"class":501},[481,4451,4229],{"class":1843},[481,4453,4454],{"class":483,"line":1154},[481,4455,4456],{"class":487},"// Response: 403 - \"Aggregations are disabled\"\n",[459,4458,4460],{"id":4459},"typescript-support","TypeScript Support",[472,4462,4464],{"className":474,"code":4463,"language":476,"meta":477,"style":477},"interface OrderAggregates {\n  count: number\n  sum_amount: number\n  avg_amount: number\n}\n\nconst { data } = await useAutoApiFetch('orders', {\n  query: {\n    aggregate: 'count,sum(amount),avg(amount)'\n  }\n})\n\nconst aggregates = data.value.meta.aggregates as OrderAggregates\n",[467,4465,4466,4476,4486,4495,4504,4508,4512,4540,4548,4560,4564,4570,4574],{"__ignoreMap":477},[481,4467,4468,4471,4474],{"class":483,"line":484},[481,4469,4470],{"class":1837},"interface",[481,4472,4473],{"class":3551}," OrderAggregates",[481,4475,612],{"class":501},[481,4477,4478,4481,4483],{"class":483,"line":491},[481,4479,4480],{"class":518},"  count",[481,4482,557],{"class":501},[481,4484,4485],{"class":3551}," number\n",[481,4487,4488,4491,4493],{"class":483,"line":498},[481,4489,4490],{"class":518},"  sum_amount",[481,4492,557],{"class":501},[481,4494,4485],{"class":3551},[481,4496,4497,4500,4502],{"class":483,"line":505},[481,4498,4499],{"class":518},"  avg_amount",[481,4501,557],{"class":501},[481,4503,4485],{"class":3551},[481,4505,4506],{"class":483,"line":531},[481,4507,646],{"class":501},[481,4509,4510],{"class":483,"line":546},[481,4511,495],{"emptyLinePlaceholder":494},[481,4513,4514,4516,4518,4520,4522,4524,4526,4528,4530,4532,4534,4536,4538],{"class":483,"line":566},[481,4515,1838],{"class":1837},[481,4517,1034],{"class":501},[481,4519,1844],{"class":1843},[481,4521,1847],{"class":501},[481,4523,1850],{"class":501},[481,4525,1854],{"class":1853},[481,4527,1858],{"class":1857},[481,4529,1861],{"class":1843},[481,4531,1864],{"class":501},[481,4533,1867],{"class":511},[481,4535,1864],{"class":501},[481,4537,1872],{"class":501},[481,4539,612],{"class":501},[481,4541,4542,4544,4546],{"class":483,"line":583},[481,4543,1879],{"class":518},[481,4545,557],{"class":501},[481,4547,612],{"class":501},[481,4549,4550,4552,4554,4556,4558],{"class":483,"line":600},[481,4551,1888],{"class":518},[481,4553,557],{"class":501},[481,4555,1893],{"class":501},[481,4557,1896],{"class":511},[481,4559,1923],{"class":501},[481,4561,4562],{"class":483,"line":615},[481,4563,640],{"class":501},[481,4565,4566,4568],{"class":483,"line":631},[481,4567,1847],{"class":501},[481,4569,1938],{"class":1843},[481,4571,4572],{"class":483,"line":637},[481,4573,495],{"emptyLinePlaceholder":494},[481,4575,4576,4578,4581,4583,4586,4588,4590,4592,4594,4596,4599,4602],{"class":483,"line":643},[481,4577,1838],{"class":1837},[481,4579,4580],{"class":1843}," aggregates ",[481,4582,2147],{"class":501},[481,4584,4585],{"class":1843}," data",[481,4587,1950],{"class":501},[481,4589,1961],{"class":1843},[481,4591,1950],{"class":501},[481,4593,536],{"class":1843},[481,4595,1950],{"class":501},[481,4597,4598],{"class":1843},"aggregates ",[481,4600,4601],{"class":1853},"as",[481,4603,4604],{"class":3551}," OrderAggregates\n",[459,4606,4608],{"id":4607},"best-practices","Best Practices",[4239,4610,4611,4617,4623,4629,4635,4641,4647,4653],{},[2834,4612,4613,4616],{},[4244,4614,4615],{},"Index fields",": Always index fields used in groupBy and filters",[2834,4618,4619,4622],{},[4244,4620,4621],{},"Filter first",": Apply filters to reduce dataset before aggregating",[2834,4624,4625,4628],{},[4244,4626,4627],{},"Use having wisely",": Filter groups to reduce result set size",[2834,4630,4631,4634],{},[4244,4632,4633],{},"Cache results",": Cache expensive aggregations with appropriate TTL",[2834,4636,4637,4640],{},[4244,4638,4639],{},"Monitor performance",": Track slow aggregation queries",[2834,4642,4643,4646],{},[4244,4644,4645],{},"Limit groups",": Avoid high-cardinality groupBy fields",[2834,4648,4649,4652],{},[4244,4650,4651],{},"Use simple aggregates",": Prefer simple aggregates on list endpoint for basic stats",[2834,4654,4655,4658,4659,4661],{},[4244,4656,4657],{},"Dedicate endpoint",": Use ",[467,4660,985],{}," endpoint for complex grouped queries",[4663,4664,4665],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":477,"searchDepth":491,"depth":491,"links":4667},[4668,4672,4673,4676,4679,4680,4683,4689,4690,4691,4696,4697,4702,4703,4704,4705],{"id":461,"depth":491,"text":462,"children":4669},[4670,4671],{"id":650,"depth":498,"text":651},{"id":771,"depth":498,"text":772},{"id":872,"depth":491,"text":873},{"id":978,"depth":491,"text":979,"children":4674},[4675],{"id":1199,"depth":498,"text":1200},{"id":1421,"depth":491,"text":1422,"children":4677},[4678],{"id":1595,"depth":498,"text":1596},{"id":1704,"depth":491,"text":1705},{"id":1817,"depth":491,"text":1818,"children":4681},[4682],{"id":1821,"depth":498,"text":1822},{"id":2122,"depth":491,"text":2123,"children":4684},[4685,4686,4687,4688],{"id":2126,"depth":498,"text":2127},{"id":2257,"depth":498,"text":2258},{"id":2372,"depth":498,"text":2373},{"id":2543,"depth":498,"text":2544},{"id":2648,"depth":491,"text":2649},{"id":2761,"depth":491,"text":2762},{"id":2842,"depth":491,"text":2843,"children":4692},[4693,4694,4695],{"id":2846,"depth":498,"text":2847},{"id":2912,"depth":498,"text":2913},{"id":3044,"depth":498,"text":3045},{"id":3172,"depth":491,"text":3173},{"id":3522,"depth":491,"text":3523,"children":4698},[4699,4700,4701],{"id":3526,"depth":498,"text":3527},{"id":3793,"depth":498,"text":3794},{"id":3934,"depth":498,"text":3935},{"id":4236,"depth":491,"text":4237},{"id":4282,"depth":491,"text":4283},{"id":4459,"depth":491,"text":4460},{"id":4607,"depth":491,"text":4608},"md",null,{},{"title":211,"description":457},"eyFPTnWZCuzcRBI34rgtEHnFBQ-sYjU0aJ7rwZNhkuc",[4712,4714],{"title":185,"path":208,"stem":209,"description":4713,"children":-1},"Nuxt Auto API automatically generates type-safe REST APIs from your Drizzle ORM schemas with built-in authorization, validation, and multi-tenancy support.",{"title":215,"path":216,"stem":217,"description":4715,"children":-1},"Lifecycle hooks allow you to execute custom logic before and after CRUD operations. Perfect for audit logging, notifications, data transformation, and business logic.",1772977478005]