[{"data":1,"prerenderedAt":1202},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fincluding-relationships":273,"\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fincluding-relationships-surround":1148,"packages-data":1153},[4,23],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-tabler-home",{"title":13,"path":14,"stem":15,"icon":16},"Manifest","\u002Fgetting-started\u002Fmanifest","1.getting-started\u002F2.manifest","i-tabler-file-diff",{"title":18,"path":19,"stem":20,"icon":21},"Contributing","\u002Fgetting-started\u002Fcontributing","1.getting-started\u002F3.contributing","i-tabler-git-fork",false,{"title":24,"path":25,"stem":26,"children":27,"icon":30},"Packages","\u002Fpackages","2.packages\u002F1.index",[28,31,108,194,247],{"title":29,"path":25,"stem":26,"icon":30},"Overview","i-tabler-packages",{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":22},"AdonisJS API Query","i-tabler-filter-search","\u002Fpackages\u002Fadonisjs-api-query","2.packages\u002Fadonisjs-api-query",[37,56,87],{"title":5,"icon":38,"path":39,"stem":40,"children":41,"page":22},"i-tabler-rocket","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started","2.packages\u002Fadonisjs-api-query\u002F1.getting-started",[42,46,51],{"title":10,"path":43,"stem":44,"icon":45},"\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F1.introduction","i-tabler-book",{"title":47,"path":48,"stem":49,"icon":50},"Installation","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F2.installation","i-tabler-download",{"title":52,"path":53,"stem":54,"icon":55},"Configuration","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F3.configuration","i-tabler-settings",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":22},"Features","i-tabler-sparkles","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures","2.packages\u002Fadonisjs-api-query\u002F2.features",[62,67,72,77,82],{"title":63,"path":64,"stem":65,"icon":66},"Filtering","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffiltering","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F1.filtering","i-tabler-filter",{"title":68,"path":69,"stem":70,"icon":71},"Sorting","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fsorting","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F2.sorting","i-tabler-arrows-sort",{"title":73,"path":74,"stem":75,"icon":76},"Including Relationships","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fincluding-relationships","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F3.including-relationships","i-tabler-hierarchy-2",{"title":78,"path":79,"stem":80,"icon":81},"Filterable Classes","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffilterable-classes","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F4.filterable-classes","i-tabler-box-model",{"title":83,"path":84,"stem":85,"icon":86},"Validation","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fvalidation","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F5.validation","i-tabler-shield-check",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":22},"Advanced Usage","i-tabler-adjustments","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced","2.packages\u002Fadonisjs-api-query\u002F3.advanced",[93,98,103],{"title":94,"path":95,"stem":96,"icon":97},"Custom Filters, Sorts & Includes","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Fcustom-clauses","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F1.custom-clauses","i-tabler-puzzle",{"title":99,"path":100,"stem":101,"icon":102},"Request & Delimiters","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Frequest-and-delimiters","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F2.request-and-delimiters","i-tabler-brackets-contain",{"title":104,"path":105,"stem":106,"icon":107},"Exceptions","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Fexceptions","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F3.exceptions","i-tabler-alert-triangle",{"title":109,"icon":110,"path":111,"stem":112,"children":113,"page":22},"AdonisJS Permission","i-tabler-shield-lock","\u002Fpackages\u002Fadonisjs-permission","2.packages\u002Fadonisjs-permission",[114,127,157,183],{"title":5,"icon":38,"path":115,"stem":116,"children":117,"page":22},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started","2.packages\u002Fadonisjs-permission\u002F1.getting-started",[118,121,124],{"title":10,"path":119,"stem":120,"icon":45},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F1.introduction",{"title":47,"path":122,"stem":123,"icon":50},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F2.installation",{"title":52,"path":125,"stem":126,"icon":55},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F3.configuration",{"title":128,"icon":86,"path":129,"stem":130,"children":131,"page":22},"Basic Usage","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage","2.packages\u002Fadonisjs-permission\u002F2.basic-usage",[132,137,142,147,152],{"title":133,"path":134,"stem":135,"icon":136},"Roles & Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Froles-and-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F1.roles-and-permissions","i-tabler-users",{"title":138,"path":139,"stem":140,"icon":141},"Checking Access","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fchecking","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F2.checking","i-tabler-checks",{"title":143,"path":144,"stem":145,"icon":146},"Middleware","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fmiddleware","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F3.middleware","i-tabler-route",{"title":148,"path":149,"stem":150,"icon":151},"Wildcard Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fwildcard-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F4.wildcard-permissions","i-tabler-asterisk",{"title":153,"path":154,"stem":155,"icon":156},"Catalog & Sync","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fcatalog","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F5.catalog","i-tabler-refresh",{"title":158,"icon":159,"path":160,"stem":161,"children":162,"page":22},"Advanced","i-tabler-tool","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced","2.packages\u002Fadonisjs-permission\u002F3.advanced",[163,168,173,178],{"title":164,"path":165,"stem":166,"icon":167},"Teams","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fteams","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F1.teams","i-tabler-building",{"title":169,"path":170,"stem":171,"icon":172},"Super-Admin","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fsuper-admin","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F2.super-admin","i-tabler-crown",{"title":174,"path":175,"stem":176,"icon":177},"Events","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fevents","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F3.events","i-tabler-radio",{"title":179,"path":180,"stem":181,"icon":182},"Cache","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fcache","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F4.cache","i-tabler-database",{"title":184,"icon":185,"path":186,"stem":187,"children":188,"page":22},"Upgrading","i-tabler-circle-arrow-up","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading","2.packages\u002Fadonisjs-permission\u002F4.upgrading",[189],{"title":190,"path":191,"stem":192,"icon":193},"From adonis-lucid-permission","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading\u002Ffrom-adonis-lucid-permission","2.packages\u002Fadonisjs-permission\u002F4.upgrading\u002F1.from-adonis-lucid-permission","i-tabler-git-compare",{"title":195,"icon":196,"path":197,"stem":198,"children":199,"page":22},"Simple Auth","i-tabler-key","\u002Fpackages\u002Fadonisjs-simple-auth","2.packages\u002Fadonisjs-simple-auth",[200,214,233],{"title":5,"icon":38,"path":201,"stem":202,"children":203,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started",[204,208,211],{"title":10,"path":205,"stem":206,"icon":207},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F1.introduction","i-tabler-info-circle",{"title":47,"path":209,"stem":210,"icon":50},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F2.installation",{"title":52,"path":212,"stem":213,"icon":55},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F3.configuration",{"title":215,"icon":110,"path":216,"stem":217,"children":218,"page":22},"Usage","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage","2.packages\u002Fadonisjs-simple-auth\u002F2.usage",[219,224,229],{"title":220,"path":221,"stem":222,"icon":223},"Generating API Keys","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fgenerating-api-keys","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F1.generating-api-keys","i-tabler-terminal-2",{"title":225,"path":226,"stem":227,"icon":228},"Protecting Routes","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fprotecting-routes","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F2.protecting-routes","i-tabler-lock",{"title":230,"path":231,"stem":232,"icon":107},"Error Handling & i18n","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Ferror-handling","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F3.error-handling",{"title":158,"icon":89,"path":234,"stem":235,"children":236,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced",[237,242],{"title":238,"path":239,"stem":240,"icon":241},"Testing with Japa","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Ftesting-with-japa","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F1.testing-with-japa","i-tabler-flask",{"title":243,"path":244,"stem":245,"icon":246},"API Reference","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Fapi-reference","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F2.api-reference","i-tabler-code",{"title":248,"icon":249,"path":250,"stem":251,"children":252,"page":22},"AdonisJS Soft Deletes","i-tabler-trash-off","\u002Fpackages\u002Fadonisjs-soft-deletes","2.packages\u002Fadonisjs-soft-deletes",[253,263],{"title":5,"icon":38,"path":254,"stem":255,"children":256,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started",[257,260],{"title":10,"path":258,"stem":259,"icon":207},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F1.introduction",{"title":47,"path":261,"stem":262,"icon":50},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F2.installation",{"title":215,"icon":45,"path":264,"stem":265,"children":266,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage",[267,270],{"title":215,"path":268,"stem":269,"icon":246},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F1.usage",{"title":243,"path":271,"stem":272,"icon":45},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fapi-reference","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F2.api-reference",{"id":274,"title":73,"body":275,"description":1142,"extension":1143,"meta":1144,"navigation":1145,"path":74,"seo":1146,"stem":75,"__hash__":1147},"docs\u002F2.packages\u002Fadonisjs-api-query\u002F2.features\u002F3.including-relationships.md",{"type":276,"value":277,"toc":1134},"minimark",[278,303,318,322,328,444,461,465,478,533,537,565,624,639,748,752,763,873,877,886,1092,1112,1116,1130],[279,280,281,282,286,287,294,295,298,299,302],"p",{},"The ",[283,284,285],"code",{},"include"," query parameter allows clients to eager-load ",[288,289,293],"a",{"href":290,"rel":291},"https:\u002F\u002Flucid.adonisjs.com\u002Fdocs\u002Frelationships",[292],"nofollow","Lucid relationships"," (",[283,296,297],{},"preload",") and relationship counts (",[283,300,301],{},"withCount",") on demand.",[279,304,305,306,309,310,313,314,317],{},"All includes must be explicitly allowed via ",[283,307,308],{},".allowedIncludes()"," on the query builder or via the ",[283,311,312],{},"includes"," property on a ",[288,315,316],{"href":79},"Filterable Class",".",[319,320,128],"h2",{"id":321},"basic-usage",[279,323,324,325,327],{},"Pass relationship names defined on your Lucid model to ",[283,326,308],{},":",[329,330,335],"pre",{"className":331,"code":332,"language":333,"meta":334,"style":334},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F GET \u002Fusers?include=posts,profile\n\u002F\u002F Calls query.preload('posts') and query.preload('profile')\nconst users = await User.query()\n  .withRequest(request)\n  .allowedIncludes('posts', 'profile');\n\u002F\u002F Or pass an array:\n\u002F\u002F .allowedIncludes(['posts', 'profile'])\n","ts","",[283,336,337,346,352,383,395,432,438],{"__ignoreMap":334},[338,339,342],"span",{"class":340,"line":341},"line",1,[338,343,345],{"class":344},"sHwdD","\u002F\u002F GET \u002Fusers?include=posts,profile\n",[338,347,349],{"class":340,"line":348},2,[338,350,351],{"class":344},"\u002F\u002F Calls query.preload('posts') and query.preload('profile')\n",[338,353,355,359,363,367,371,374,376,380],{"class":340,"line":354},3,[338,356,358],{"class":357},"spNyl","const",[338,360,362],{"class":361},"sTEyZ"," users ",[338,364,366],{"class":365},"sMK4o","=",[338,368,370],{"class":369},"s7zQu"," await",[338,372,373],{"class":361}," User",[338,375,317],{"class":365},[338,377,379],{"class":378},"s2Zo4","query",[338,381,382],{"class":361},"()\n",[338,384,386,389,392],{"class":340,"line":385},4,[338,387,388],{"class":365},"  .",[338,390,391],{"class":378},"withRequest",[338,393,394],{"class":361},"(request)\n",[338,396,398,400,403,406,409,413,415,418,421,424,426,429],{"class":340,"line":397},5,[338,399,388],{"class":365},[338,401,402],{"class":378},"allowedIncludes",[338,404,405],{"class":361},"(",[338,407,408],{"class":365},"'",[338,410,412],{"class":411},"sfazB","posts",[338,414,408],{"class":365},[338,416,417],{"class":365},",",[338,419,420],{"class":365}," '",[338,422,423],{"class":411},"profile",[338,425,408],{"class":365},[338,427,428],{"class":361},")",[338,430,431],{"class":365},";\n",[338,433,435],{"class":340,"line":434},6,[338,436,437],{"class":344},"\u002F\u002F Or pass an array:\n",[338,439,441],{"class":340,"line":440},7,[338,442,443],{"class":344},"\u002F\u002F .allowedIncludes(['posts', 'profile'])\n",[279,445,446,447,450,451,454,455,458,459,317],{},"If a client requests an include that is not allowed, an ",[283,448,449],{},"InvalidIncludeQuery"," exception (",[283,452,453],{},"400 Bad Request",") is thrown unless ",[283,456,457],{},"disableInvalidIncludesQueryException"," is enabled in ",[288,460,52],{"href":53},[319,462,464],{"id":463},"nested-relationships","Nested Relationships",[279,466,467,468,471,472,474,475,477],{},"You can allow nested relationships using dot-notation (",[283,469,470],{},"posts.comments","). Allowing a nested relationship automatically allows all parent segments along the path (",[283,473,412],{}," and ",[283,476,470],{},"):",[329,479,481],{"className":331,"code":480,"language":333,"meta":334,"style":334},"\u002F\u002F Allows ?include=posts, ?include=posts.comments, and ?include=posts.comments.author\nconst users = await User.query()\n  .withRequest(request)\n  .allowedIncludes('posts.comments.author');\n",[283,482,483,488,506,514],{"__ignoreMap":334},[338,484,485],{"class":340,"line":341},[338,486,487],{"class":344},"\u002F\u002F Allows ?include=posts, ?include=posts.comments, and ?include=posts.comments.author\n",[338,489,490,492,494,496,498,500,502,504],{"class":340,"line":348},[338,491,358],{"class":357},[338,493,362],{"class":361},[338,495,366],{"class":365},[338,497,370],{"class":369},[338,499,373],{"class":361},[338,501,317],{"class":365},[338,503,379],{"class":378},[338,505,382],{"class":361},[338,507,508,510,512],{"class":340,"line":354},[338,509,388],{"class":365},[338,511,391],{"class":378},[338,513,394],{"class":361},[338,515,516,518,520,522,524,527,529,531],{"class":340,"line":385},[338,517,388],{"class":365},[338,519,402],{"class":378},[338,521,405],{"class":361},[338,523,408],{"class":365},[338,525,526],{"class":411},"posts.comments.author",[338,528,408],{"class":365},[338,530,428],{"class":361},[338,532,431],{"class":365},[319,534,536],{"id":535},"including-relationship-counts","Including Relationship Counts",[279,538,539,540,543,544,547,548,552,553,556,557,560,561,564],{},"Whenever you allow a top-level relationship with ",[283,541,542],{},"AllowedInclude.relationship('posts')"," (or by passing ",[283,545,546],{},"'posts'"," as a string), the package ",[549,550,551],"strong",{},"automatically"," registers a count include suffixed with ",[283,554,555],{},"Count"," (configurable via ",[283,558,559],{},"countSuffix"," in ",[283,562,563],{},"config\u002Fapiquery.ts",").",[329,566,568],{"className":331,"code":567,"language":333,"meta":334,"style":334},"\u002F\u002F GET \u002Fusers?include=postsCount\n\u002F\u002F Executes query.withCount('posts'), exposing $extras.posts_count on each user\nconst users = await User.query()\n  .withRequest(request)\n  .allowedIncludes('posts');\n",[283,569,570,575,580,598,606],{"__ignoreMap":334},[338,571,572],{"class":340,"line":341},[338,573,574],{"class":344},"\u002F\u002F GET \u002Fusers?include=postsCount\n",[338,576,577],{"class":340,"line":348},[338,578,579],{"class":344},"\u002F\u002F Executes query.withCount('posts'), exposing $extras.posts_count on each user\n",[338,581,582,584,586,588,590,592,594,596],{"class":340,"line":354},[338,583,358],{"class":357},[338,585,362],{"class":361},[338,587,366],{"class":365},[338,589,370],{"class":369},[338,591,373],{"class":361},[338,593,317],{"class":365},[338,595,379],{"class":378},[338,597,382],{"class":361},[338,599,600,602,604],{"class":340,"line":385},[338,601,388],{"class":365},[338,603,391],{"class":378},[338,605,394],{"class":361},[338,607,608,610,612,614,616,618,620,622],{"class":340,"line":397},[338,609,388],{"class":365},[338,611,402],{"class":378},[338,613,405],{"class":361},[338,615,408],{"class":365},[338,617,412],{"class":411},[338,619,408],{"class":365},[338,621,428],{"class":361},[338,623,431],{"class":365},[279,625,626,627,630,631,634,635,638],{},"If you ",[549,628,629],{},"only"," want to allow counting a relationship without allowing the full relationship records to be preloaded, use ",[283,632,633],{},"AllowedInclude.count()"," or pass ",[283,636,637],{},"'postsCount'"," directly:",[329,640,642],{"className":331,"code":641,"language":333,"meta":334,"style":334},"import { AllowedInclude } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F Allows ?include=postsCount, but rejects ?include=posts\nconst users = await User.query()\n  .withRequest(request)\n  .allowedIncludes([\n    AllowedInclude.count('postsCount'),\n  ]);\n",[283,643,644,670,676,681,699,707,716,740],{"__ignoreMap":334},[338,645,646,649,652,655,658,661,663,666,668],{"class":340,"line":341},[338,647,648],{"class":369},"import",[338,650,651],{"class":365}," {",[338,653,654],{"class":361}," AllowedInclude",[338,656,657],{"class":365}," }",[338,659,660],{"class":369}," from",[338,662,420],{"class":365},[338,664,665],{"class":411},"@eienjs\u002Fadonisjs-api-query",[338,667,408],{"class":365},[338,669,431],{"class":365},[338,671,672],{"class":340,"line":348},[338,673,675],{"emptyLinePlaceholder":674},true,"\n",[338,677,678],{"class":340,"line":354},[338,679,680],{"class":344},"\u002F\u002F Allows ?include=postsCount, but rejects ?include=posts\n",[338,682,683,685,687,689,691,693,695,697],{"class":340,"line":385},[338,684,358],{"class":357},[338,686,362],{"class":361},[338,688,366],{"class":365},[338,690,370],{"class":369},[338,692,373],{"class":361},[338,694,317],{"class":365},[338,696,379],{"class":378},[338,698,382],{"class":361},[338,700,701,703,705],{"class":340,"line":397},[338,702,388],{"class":365},[338,704,391],{"class":378},[338,706,394],{"class":361},[338,708,709,711,713],{"class":340,"line":434},[338,710,388],{"class":365},[338,712,402],{"class":378},[338,714,715],{"class":361},"([\n",[338,717,718,721,723,726,728,730,733,735,737],{"class":340,"line":440},[338,719,720],{"class":361},"    AllowedInclude",[338,722,317],{"class":365},[338,724,725],{"class":378},"count",[338,727,405],{"class":361},[338,729,408],{"class":365},[338,731,732],{"class":411},"postsCount",[338,734,408],{"class":365},[338,736,428],{"class":361},[338,738,739],{"class":365},",\n",[338,741,743,746],{"class":340,"line":742},8,[338,744,745],{"class":361},"  ])",[338,747,431],{"class":365},[319,749,751],{"id":750},"aliasing-includes","Aliasing Includes",[279,753,754,755,758,759,762],{},"Use ",[283,756,757],{},"AllowedInclude.relationship(name, internalName)"," or ",[283,760,761],{},"AllowedInclude.count(name, internalName)"," to expose a public include name that maps to a different relationship name on your model:",[329,764,766],{"className":331,"code":765,"language":333,"meta":334,"style":334},"import { AllowedInclude } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?include=articles -> preloads the `posts` relationship\n\u002F\u002F GET \u002Fusers?include=articlesCount -> calls withCount('posts')\nconst users = await User.query()\n  .withRequest(request)\n  .allowedIncludes([\n    AllowedInclude.relationship('articles', 'posts'),\n  ]);\n",[283,767,768,788,792,797,802,820,828,836,866],{"__ignoreMap":334},[338,769,770,772,774,776,778,780,782,784,786],{"class":340,"line":341},[338,771,648],{"class":369},[338,773,651],{"class":365},[338,775,654],{"class":361},[338,777,657],{"class":365},[338,779,660],{"class":369},[338,781,420],{"class":365},[338,783,665],{"class":411},[338,785,408],{"class":365},[338,787,431],{"class":365},[338,789,790],{"class":340,"line":348},[338,791,675],{"emptyLinePlaceholder":674},[338,793,794],{"class":340,"line":354},[338,795,796],{"class":344},"\u002F\u002F GET \u002Fusers?include=articles -> preloads the `posts` relationship\n",[338,798,799],{"class":340,"line":385},[338,800,801],{"class":344},"\u002F\u002F GET \u002Fusers?include=articlesCount -> calls withCount('posts')\n",[338,803,804,806,808,810,812,814,816,818],{"class":340,"line":397},[338,805,358],{"class":357},[338,807,362],{"class":361},[338,809,366],{"class":365},[338,811,370],{"class":369},[338,813,373],{"class":361},[338,815,317],{"class":365},[338,817,379],{"class":378},[338,819,382],{"class":361},[338,821,822,824,826],{"class":340,"line":434},[338,823,388],{"class":365},[338,825,391],{"class":378},[338,827,394],{"class":361},[338,829,830,832,834],{"class":340,"line":440},[338,831,388],{"class":365},[338,833,402],{"class":378},[338,835,715],{"class":361},[338,837,838,840,842,845,847,849,852,854,856,858,860,862,864],{"class":340,"line":742},[338,839,720],{"class":361},[338,841,317],{"class":365},[338,843,844],{"class":378},"relationship",[338,846,405],{"class":361},[338,848,408],{"class":365},[338,850,851],{"class":411},"articles",[338,853,408],{"class":365},[338,855,417],{"class":365},[338,857,420],{"class":365},[338,859,412],{"class":411},[338,861,408],{"class":365},[338,863,428],{"class":361},[338,865,739],{"class":365},[338,867,869,871],{"class":340,"line":868},9,[338,870,745],{"class":361},[338,872,431],{"class":365},[319,874,876],{"id":875},"callback-includes","Callback Includes",[279,878,754,879,882,883,885],{},[283,880,881],{},"AllowedInclude.callback()"," when you want to customize the ",[283,884,297],{}," subquery (for example, selecting specific columns, ordering related records, or filtering the preloaded relation):",[329,887,889],{"className":331,"code":888,"language":333,"meta":334,"style":334},"import { AllowedInclude } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?include=latestPosts\nconst users = await User.query()\n  .withRequest(request)\n  .allowedIncludes([\n    AllowedInclude.callback('latestPosts', (postsQuery) => {\n      void postsQuery\n        .where('isPublished', true)\n        .orderBy('createdAt', 'desc')\n        .limit(5);\n    }, 'posts'),\n  ]);\n",[283,890,891,911,915,920,938,946,954,988,996,1023,1051,1069,1085],{"__ignoreMap":334},[338,892,893,895,897,899,901,903,905,907,909],{"class":340,"line":341},[338,894,648],{"class":369},[338,896,651],{"class":365},[338,898,654],{"class":361},[338,900,657],{"class":365},[338,902,660],{"class":369},[338,904,420],{"class":365},[338,906,665],{"class":411},[338,908,408],{"class":365},[338,910,431],{"class":365},[338,912,913],{"class":340,"line":348},[338,914,675],{"emptyLinePlaceholder":674},[338,916,917],{"class":340,"line":354},[338,918,919],{"class":344},"\u002F\u002F GET \u002Fusers?include=latestPosts\n",[338,921,922,924,926,928,930,932,934,936],{"class":340,"line":385},[338,923,358],{"class":357},[338,925,362],{"class":361},[338,927,366],{"class":365},[338,929,370],{"class":369},[338,931,373],{"class":361},[338,933,317],{"class":365},[338,935,379],{"class":378},[338,937,382],{"class":361},[338,939,940,942,944],{"class":340,"line":397},[338,941,388],{"class":365},[338,943,391],{"class":378},[338,945,394],{"class":361},[338,947,948,950,952],{"class":340,"line":434},[338,949,388],{"class":365},[338,951,402],{"class":378},[338,953,715],{"class":361},[338,955,956,958,960,963,965,967,970,972,974,976,980,982,985],{"class":340,"line":440},[338,957,720],{"class":361},[338,959,317],{"class":365},[338,961,962],{"class":378},"callback",[338,964,405],{"class":361},[338,966,408],{"class":365},[338,968,969],{"class":411},"latestPosts",[338,971,408],{"class":365},[338,973,417],{"class":365},[338,975,294],{"class":365},[338,977,979],{"class":978},"sHdIc","postsQuery",[338,981,428],{"class":365},[338,983,984],{"class":357}," =>",[338,986,987],{"class":365}," {\n",[338,989,990,993],{"class":340,"line":742},[338,991,992],{"class":365},"      void",[338,994,995],{"class":361}," postsQuery\n",[338,997,998,1001,1004,1007,1009,1012,1014,1016,1020],{"class":340,"line":868},[338,999,1000],{"class":365},"        .",[338,1002,1003],{"class":378},"where",[338,1005,405],{"class":1006},"swJcz",[338,1008,408],{"class":365},[338,1010,1011],{"class":411},"isPublished",[338,1013,408],{"class":365},[338,1015,417],{"class":365},[338,1017,1019],{"class":1018},"sfNiH"," true",[338,1021,1022],{"class":1006},")\n",[338,1024,1026,1028,1031,1033,1035,1038,1040,1042,1044,1047,1049],{"class":340,"line":1025},10,[338,1027,1000],{"class":365},[338,1029,1030],{"class":378},"orderBy",[338,1032,405],{"class":1006},[338,1034,408],{"class":365},[338,1036,1037],{"class":411},"createdAt",[338,1039,408],{"class":365},[338,1041,417],{"class":365},[338,1043,420],{"class":365},[338,1045,1046],{"class":411},"desc",[338,1048,408],{"class":365},[338,1050,1022],{"class":1006},[338,1052,1054,1056,1059,1061,1065,1067],{"class":340,"line":1053},11,[338,1055,1000],{"class":365},[338,1057,1058],{"class":378},"limit",[338,1060,405],{"class":1006},[338,1062,1064],{"class":1063},"sbssI","5",[338,1066,428],{"class":1006},[338,1068,431],{"class":365},[338,1070,1072,1075,1077,1079,1081,1083],{"class":340,"line":1071},12,[338,1073,1074],{"class":365},"    },",[338,1076,420],{"class":365},[338,1078,412],{"class":411},[338,1080,408],{"class":365},[338,1082,428],{"class":361},[338,1084,739],{"class":365},[338,1086,1088,1090],{"class":340,"line":1087},13,[338,1089,745],{"class":361},[338,1091,431],{"class":365},[1093,1094,1095],"tip",{},[279,1096,1097,1098,1100,1101,1104,1105,560,1108,1111],{},"When using ",[288,1099,78],{"href":79},", you can also define an ",[283,1102,1103],{},"include\u003CName>(query)"," method on your class and list ",[283,1106,1107],{},"'name'",[283,1109,1110],{},"public includes = ['name']","—it will automatically be bound as a callback include!",[319,1113,1115],{"id":1114},"custom-include-classes","Custom Include Classes",[279,1117,1118,1119,1122,1123,1126,1127,1129],{},"For reusable include strategies across multiple models, implement the ",[283,1120,1121],{},"Include\u003CParentModel>"," interface and register it with ",[283,1124,1125],{},"AllowedInclude.custom()",". See ",[288,1128,94],{"href":95}," for details.",[1131,1132,1133],"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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":334,"searchDepth":341,"depth":348,"links":1135},[1136,1137,1138,1139,1140,1141],{"id":321,"depth":348,"text":128},{"id":463,"depth":348,"text":464},{"id":535,"depth":348,"text":536},{"id":750,"depth":348,"text":751},{"id":875,"depth":348,"text":876},{"id":1114,"depth":348,"text":1115},"Eager-load Lucid relationships, nested relations, and relationship counts from API requests.","md",{},{"icon":76},{"title":73,"description":1142},"q_NrjpLwluvUvFNemuJKH8S9MVoQVU0YRrlpd6Ro48E",[1149,1151],{"title":68,"path":69,"stem":70,"description":1150,"icon":71,"children":-1},"Sort Lucid queries by single or multiple columns, aliases, default sorts, and custom callbacks.",{"title":78,"path":79,"stem":80,"description":1152,"icon":81,"children":-1},"Encapsulate allowed filters, sorts, includes, setup hooks, and validation rules in dedicated classes.",{"id":1154,"extension":1155,"meta":1156,"packages":1157,"stem":1200,"__hash__":1201},"packages\u002Fdata\u002Fpackages.json","json",{},[1158,1165,1171,1177,1182,1188,1194],{"name":1159,"title":1160,"description":1161,"icon":86,"category":1162,"repo":1163,"version":1164,"docs":674},"adonisjs-permission","Permission","Associate users with roles and permissions in your AdonisJS app","adonisjs","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-permission","1.0.0",{"name":1166,"title":1167,"description":1168,"icon":33,"category":1162,"repo":1169,"version":1170,"docs":674},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":1172,"title":1173,"description":1174,"icon":249,"category":1162,"repo":1175,"version":1176,"docs":674},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes","1.0.2",{"name":1178,"title":195,"description":1179,"icon":196,"category":1162,"repo":1180,"version":1181,"docs":674},"adonisjs-simple-auth","Single API key authentication for AdonisJS v7 applications","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-simple-auth","2.1.0",{"name":1183,"title":1184,"description":1185,"icon":1186,"category":1162,"repo":1187,"docs":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS v7.","i-tabler-bug","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry",{"name":1189,"title":1190,"description":1191,"icon":141,"category":1192,"repo":1193,"docs":22},"eslint-config","ESLint Config","The EienJS ESLint config preset.","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config",{"name":1195,"title":1196,"description":1197,"icon":1198,"category":1192,"repo":1199,"docs":22},"adonisjs-pkg-boilerplate","Package Boilerplate","A boilerplate for creating AdonisJS packages.","i-tabler-package","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-pkg-boilerplate","data\u002Fpackages","5fILU7Jigsw2ib-NQg4Fr4sWgIkg0kLgpVm371gTzVY",1793868428970]