[{"data":1,"prerenderedAt":1249},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fsorting":273,"\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fsorting-surround":1195,"packages-data":1200},[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":68,"body":275,"description":1189,"extension":1190,"meta":1191,"navigation":1192,"path":69,"seo":1193,"stem":70,"__hash__":1194},"docs\u002F2.packages\u002Fadonisjs-api-query\u002F2.features\u002F2.sorting.md",{"type":276,"value":277,"toc":1180},"minimark",[278,295,311,315,321,452,472,476,486,607,616,714,718,724,861,867,879,952,956,966,1158,1162,1176],[279,280,281,282,286,287,290,291,294],"p",{},"The ",[283,284,285],"code",{},"sort"," query parameter allows clients to order query results by one or more fields in ascending or descending order. Prefixing a sort field with a hyphen (",[283,288,289],{},"-",") sorts in descending (",[283,292,293],{},"DESC",") order.",[279,296,297,298,301,302,305,306,310],{},"All sorts must be explicitly allowed via ",[283,299,300],{},".allowedSorts()"," on the query builder or via the ",[283,303,304],{},"sorts"," property on a ",[307,308,309],"a",{"href":79},"Filterable Class",".",[312,313,128],"h2",{"id":314},"basic-usage",[279,316,317,318,320],{},"Pass column names to ",[283,319,300],{},":",[322,323,328],"pre",{"className":324,"code":325,"language":326,"meta":327,"style":327},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F GET \u002Fusers?sort=name -> ORDER BY `name` ASC\n\u002F\u002F GET \u002Fusers?sort=-createdAt -> ORDER BY `created_at` DESC\n\u002F\u002F GET \u002Fusers?sort=role,-createdAt -> ORDER BY `role` ASC, `created_at` DESC\nconst users = await User.query()\n  .withRequest(request)\n  .allowedSorts('name', 'role', 'createdAt');\n\u002F\u002F Or pass an array:\n\u002F\u002F .allowedSorts(['name', 'role', 'createdAt'])\n","ts","",[283,329,330,339,345,351,382,394,440,446],{"__ignoreMap":327},[331,332,335],"span",{"class":333,"line":334},"line",1,[331,336,338],{"class":337},"sHwdD","\u002F\u002F GET \u002Fusers?sort=name -> ORDER BY `name` ASC\n",[331,340,342],{"class":333,"line":341},2,[331,343,344],{"class":337},"\u002F\u002F GET \u002Fusers?sort=-createdAt -> ORDER BY `created_at` DESC\n",[331,346,348],{"class":333,"line":347},3,[331,349,350],{"class":337},"\u002F\u002F GET \u002Fusers?sort=role,-createdAt -> ORDER BY `role` ASC, `created_at` DESC\n",[331,352,354,358,362,366,370,373,375,379],{"class":333,"line":353},4,[331,355,357],{"class":356},"spNyl","const",[331,359,361],{"class":360},"sTEyZ"," users ",[331,363,365],{"class":364},"sMK4o","=",[331,367,369],{"class":368},"s7zQu"," await",[331,371,372],{"class":360}," User",[331,374,310],{"class":364},[331,376,378],{"class":377},"s2Zo4","query",[331,380,381],{"class":360},"()\n",[331,383,385,388,391],{"class":333,"line":384},5,[331,386,387],{"class":364},"  .",[331,389,390],{"class":377},"withRequest",[331,392,393],{"class":360},"(request)\n",[331,395,397,399,402,405,408,412,414,417,420,423,425,427,429,432,434,437],{"class":333,"line":396},6,[331,398,387],{"class":364},[331,400,401],{"class":377},"allowedSorts",[331,403,404],{"class":360},"(",[331,406,407],{"class":364},"'",[331,409,411],{"class":410},"sfazB","name",[331,413,407],{"class":364},[331,415,416],{"class":364},",",[331,418,419],{"class":364}," '",[331,421,422],{"class":410},"role",[331,424,407],{"class":364},[331,426,416],{"class":364},[331,428,419],{"class":364},[331,430,431],{"class":410},"createdAt",[331,433,407],{"class":364},[331,435,436],{"class":360},")",[331,438,439],{"class":364},";\n",[331,441,443],{"class":333,"line":442},7,[331,444,445],{"class":337},"\u002F\u002F Or pass an array:\n",[331,447,449],{"class":333,"line":448},8,[331,450,451],{"class":337},"\u002F\u002F .allowedSorts(['name', 'role', 'createdAt'])\n",[279,453,454,455,457,458,461,462,465,466,469,470,310],{},"If a client requests a sort field that is not in ",[283,456,300],{},", an ",[283,459,460],{},"InvalidSortQuery"," exception (",[283,463,464],{},"400 Bad Request",") is thrown unless ",[283,467,468],{},"disableInvalidSortQueryException"," is enabled in ",[307,471,52],{"href":53},[312,473,475],{"id":474},"default-sorts","Default Sorts",[279,477,478,479,482,483,485],{},"Use ",[283,480,481],{},".defaultSort()"," to specify the fallback ordering when the client does not provide a ",[283,484,285],{}," query parameter:",[322,487,489],{"className":324,"code":488,"language":326,"meta":327,"style":327},"import { AllowedSort } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F When GET \u002Fusers has no ?sort= parameter, orders by `created_at` DESC, then `name` ASC\nconst users = await User.query()\n  .withRequest(request)\n  .allowedSorts('name', 'createdAt')\n  .defaultSort('-createdAt', 'name');\n",[283,490,491,517,523,528,546,554,579],{"__ignoreMap":327},[331,492,493,496,499,502,505,508,510,513,515],{"class":333,"line":334},[331,494,495],{"class":368},"import",[331,497,498],{"class":364}," {",[331,500,501],{"class":360}," AllowedSort",[331,503,504],{"class":364}," }",[331,506,507],{"class":368}," from",[331,509,419],{"class":364},[331,511,512],{"class":410},"@eienjs\u002Fadonisjs-api-query",[331,514,407],{"class":364},[331,516,439],{"class":364},[331,518,519],{"class":333,"line":341},[331,520,522],{"emptyLinePlaceholder":521},true,"\n",[331,524,525],{"class":333,"line":347},[331,526,527],{"class":337},"\u002F\u002F When GET \u002Fusers has no ?sort= parameter, orders by `created_at` DESC, then `name` ASC\n",[331,529,530,532,534,536,538,540,542,544],{"class":333,"line":353},[331,531,357],{"class":356},[331,533,361],{"class":360},[331,535,365],{"class":364},[331,537,369],{"class":368},[331,539,372],{"class":360},[331,541,310],{"class":364},[331,543,378],{"class":377},[331,545,381],{"class":360},[331,547,548,550,552],{"class":333,"line":384},[331,549,387],{"class":364},[331,551,390],{"class":377},[331,553,393],{"class":360},[331,555,556,558,560,562,564,566,568,570,572,574,576],{"class":333,"line":396},[331,557,387],{"class":364},[331,559,401],{"class":377},[331,561,404],{"class":360},[331,563,407],{"class":364},[331,565,411],{"class":410},[331,567,407],{"class":364},[331,569,416],{"class":364},[331,571,419],{"class":364},[331,573,431],{"class":410},[331,575,407],{"class":364},[331,577,578],{"class":360},")\n",[331,580,581,583,586,588,590,593,595,597,599,601,603,605],{"class":333,"line":442},[331,582,387],{"class":364},[331,584,585],{"class":377},"defaultSort",[331,587,404],{"class":360},[331,589,407],{"class":364},[331,591,592],{"class":410},"-createdAt",[331,594,407],{"class":364},[331,596,416],{"class":364},[331,598,419],{"class":364},[331,600,411],{"class":410},[331,602,407],{"class":364},[331,604,436],{"class":360},[331,606,439],{"class":364},[279,608,609,610,613,614,320],{},"You can also pass ",[283,611,612],{},"AllowedSort"," instances to ",[283,615,481],{},[322,617,619],{"className":324,"code":618,"language":326,"meta":327,"style":327},"const users = await User.query()\n  .withRequest(request)\n  .allowedSorts('name', 'createdAt')\n  .defaultSort(AllowedSort.field('createdAt').setDefaultDirection('desc'));\n",[283,620,621,639,647,671],{"__ignoreMap":327},[331,622,623,625,627,629,631,633,635,637],{"class":333,"line":334},[331,624,357],{"class":356},[331,626,361],{"class":360},[331,628,365],{"class":364},[331,630,369],{"class":368},[331,632,372],{"class":360},[331,634,310],{"class":364},[331,636,378],{"class":377},[331,638,381],{"class":360},[331,640,641,643,645],{"class":333,"line":341},[331,642,387],{"class":364},[331,644,390],{"class":377},[331,646,393],{"class":360},[331,648,649,651,653,655,657,659,661,663,665,667,669],{"class":333,"line":347},[331,650,387],{"class":364},[331,652,401],{"class":377},[331,654,404],{"class":360},[331,656,407],{"class":364},[331,658,411],{"class":410},[331,660,407],{"class":364},[331,662,416],{"class":364},[331,664,419],{"class":364},[331,666,431],{"class":410},[331,668,407],{"class":364},[331,670,578],{"class":360},[331,672,673,675,677,680,682,685,687,689,691,693,695,697,700,702,704,707,709,712],{"class":333,"line":353},[331,674,387],{"class":364},[331,676,585],{"class":377},[331,678,679],{"class":360},"(AllowedSort",[331,681,310],{"class":364},[331,683,684],{"class":377},"field",[331,686,404],{"class":360},[331,688,407],{"class":364},[331,690,431],{"class":410},[331,692,407],{"class":364},[331,694,436],{"class":360},[331,696,310],{"class":364},[331,698,699],{"class":377},"setDefaultDirection",[331,701,404],{"class":360},[331,703,407],{"class":364},[331,705,706],{"class":410},"desc",[331,708,407],{"class":364},[331,710,711],{"class":360},"))",[331,713,439],{"class":364},[312,715,717],{"id":716},"sorting-by-internal-column-name-aliases","Sorting by Internal Column Name (Aliases)",[279,719,478,720,723],{},[283,721,722],{},"AllowedSort.field(name, internalName)"," to expose an alias in the URL that maps to a different column on your model:",[322,725,727],{"className":324,"code":726,"language":326,"meta":327,"style":327},"import { AllowedSort } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?sort=-joined -> ORDER BY `created_at` DESC\nconst users = await User.query()\n  .withRequest(request)\n  .allowedSorts([\n    AllowedSort.field('joined', 'createdAt'),\n    AllowedSort.field('full_name', 'name'),\n  ]);\n",[283,728,729,749,753,758,776,784,793,824,853],{"__ignoreMap":327},[331,730,731,733,735,737,739,741,743,745,747],{"class":333,"line":334},[331,732,495],{"class":368},[331,734,498],{"class":364},[331,736,501],{"class":360},[331,738,504],{"class":364},[331,740,507],{"class":368},[331,742,419],{"class":364},[331,744,512],{"class":410},[331,746,407],{"class":364},[331,748,439],{"class":364},[331,750,751],{"class":333,"line":341},[331,752,522],{"emptyLinePlaceholder":521},[331,754,755],{"class":333,"line":347},[331,756,757],{"class":337},"\u002F\u002F GET \u002Fusers?sort=-joined -> ORDER BY `created_at` DESC\n",[331,759,760,762,764,766,768,770,772,774],{"class":333,"line":353},[331,761,357],{"class":356},[331,763,361],{"class":360},[331,765,365],{"class":364},[331,767,369],{"class":368},[331,769,372],{"class":360},[331,771,310],{"class":364},[331,773,378],{"class":377},[331,775,381],{"class":360},[331,777,778,780,782],{"class":333,"line":384},[331,779,387],{"class":364},[331,781,390],{"class":377},[331,783,393],{"class":360},[331,785,786,788,790],{"class":333,"line":396},[331,787,387],{"class":364},[331,789,401],{"class":377},[331,791,792],{"class":360},"([\n",[331,794,795,798,800,802,804,806,809,811,813,815,817,819,821],{"class":333,"line":442},[331,796,797],{"class":360},"    AllowedSort",[331,799,310],{"class":364},[331,801,684],{"class":377},[331,803,404],{"class":360},[331,805,407],{"class":364},[331,807,808],{"class":410},"joined",[331,810,407],{"class":364},[331,812,416],{"class":364},[331,814,419],{"class":364},[331,816,431],{"class":410},[331,818,407],{"class":364},[331,820,436],{"class":360},[331,822,823],{"class":364},",\n",[331,825,826,828,830,832,834,836,839,841,843,845,847,849,851],{"class":333,"line":448},[331,827,797],{"class":360},[331,829,310],{"class":364},[331,831,684],{"class":377},[331,833,404],{"class":360},[331,835,407],{"class":364},[331,837,838],{"class":410},"full_name",[331,840,407],{"class":364},[331,842,416],{"class":364},[331,844,419],{"class":364},[331,846,411],{"class":410},[331,848,407],{"class":364},[331,850,436],{"class":360},[331,852,823],{"class":364},[331,854,856,859],{"class":333,"line":855},9,[331,857,858],{"class":360},"  ])",[331,860,439],{"class":364},[312,862,864,865],{"id":863},"default-sort-direction-on-allowedsort","Default Sort Direction on ",[283,866,612],{},[279,868,869,870,872,873,876,877,320],{},"You can configure a default direction on an ",[283,871,612],{}," instance using ",[283,874,875],{},".setDefaultDirection()"," or by prefixing the name with ",[283,878,289],{},[322,880,882],{"className":324,"code":881,"language":326,"meta":327,"style":327},"import { AllowedSort, SortDirection } from '@eienjs\u002Fadonisjs-api-query';\n\nconst sort = AllowedSort.field('createdAt').setDefaultDirection(SortDirection.Descending);\n",[283,883,884,909,913],{"__ignoreMap":327},[331,885,886,888,890,892,894,897,899,901,903,905,907],{"class":333,"line":334},[331,887,495],{"class":368},[331,889,498],{"class":364},[331,891,501],{"class":360},[331,893,416],{"class":364},[331,895,896],{"class":360}," SortDirection",[331,898,504],{"class":364},[331,900,507],{"class":368},[331,902,419],{"class":364},[331,904,512],{"class":410},[331,906,407],{"class":364},[331,908,439],{"class":364},[331,910,911],{"class":333,"line":341},[331,912,522],{"emptyLinePlaceholder":521},[331,914,915,917,920,922,924,926,928,930,932,934,936,938,940,942,945,947,950],{"class":333,"line":347},[331,916,357],{"class":356},[331,918,919],{"class":360}," sort ",[331,921,365],{"class":364},[331,923,501],{"class":360},[331,925,310],{"class":364},[331,927,684],{"class":377},[331,929,404],{"class":360},[331,931,407],{"class":364},[331,933,431],{"class":410},[331,935,407],{"class":364},[331,937,436],{"class":360},[331,939,310],{"class":364},[331,941,699],{"class":377},[331,943,944],{"class":360},"(SortDirection",[331,946,310],{"class":364},[331,948,949],{"class":360},"Descending)",[331,951,439],{"class":364},[312,953,955],{"id":954},"callback-sorts","Callback Sorts",[279,957,478,958,961,962,965],{},[283,959,960],{},"AllowedSort.callback()"," when you need custom ",[283,963,964],{},"ORDER BY"," expressions, raw SQL ordering, or aggregate sorting:",[322,967,969],{"className":324,"code":968,"language":326,"meta":327,"style":327},"import { AllowedSort } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?sort=-postsCount\nconst users = await User.query()\n  .withRequest(request)\n  .withCount('posts')\n  .allowedSorts([\n    AllowedSort.callback('postsCount', (query, isDescending) => {\n      void query.orderBy('posts_count', isDescending ? 'desc' : 'asc');\n    }),\n  ]);\n",[283,970,971,991,995,1000,1018,1026,1044,1052,1091,1141,1151],{"__ignoreMap":327},[331,972,973,975,977,979,981,983,985,987,989],{"class":333,"line":334},[331,974,495],{"class":368},[331,976,498],{"class":364},[331,978,501],{"class":360},[331,980,504],{"class":364},[331,982,507],{"class":368},[331,984,419],{"class":364},[331,986,512],{"class":410},[331,988,407],{"class":364},[331,990,439],{"class":364},[331,992,993],{"class":333,"line":341},[331,994,522],{"emptyLinePlaceholder":521},[331,996,997],{"class":333,"line":347},[331,998,999],{"class":337},"\u002F\u002F GET \u002Fusers?sort=-postsCount\n",[331,1001,1002,1004,1006,1008,1010,1012,1014,1016],{"class":333,"line":353},[331,1003,357],{"class":356},[331,1005,361],{"class":360},[331,1007,365],{"class":364},[331,1009,369],{"class":368},[331,1011,372],{"class":360},[331,1013,310],{"class":364},[331,1015,378],{"class":377},[331,1017,381],{"class":360},[331,1019,1020,1022,1024],{"class":333,"line":384},[331,1021,387],{"class":364},[331,1023,390],{"class":377},[331,1025,393],{"class":360},[331,1027,1028,1030,1033,1035,1037,1040,1042],{"class":333,"line":396},[331,1029,387],{"class":364},[331,1031,1032],{"class":377},"withCount",[331,1034,404],{"class":360},[331,1036,407],{"class":364},[331,1038,1039],{"class":410},"posts",[331,1041,407],{"class":364},[331,1043,578],{"class":360},[331,1045,1046,1048,1050],{"class":333,"line":442},[331,1047,387],{"class":364},[331,1049,401],{"class":377},[331,1051,792],{"class":360},[331,1053,1054,1056,1058,1061,1063,1065,1068,1070,1072,1075,1078,1080,1083,1085,1088],{"class":333,"line":448},[331,1055,797],{"class":360},[331,1057,310],{"class":364},[331,1059,1060],{"class":377},"callback",[331,1062,404],{"class":360},[331,1064,407],{"class":364},[331,1066,1067],{"class":410},"postsCount",[331,1069,407],{"class":364},[331,1071,416],{"class":364},[331,1073,1074],{"class":364}," (",[331,1076,378],{"class":1077},"sHdIc",[331,1079,416],{"class":364},[331,1081,1082],{"class":1077}," isDescending",[331,1084,436],{"class":364},[331,1086,1087],{"class":356}," =>",[331,1089,1090],{"class":364}," {\n",[331,1092,1093,1096,1099,1101,1104,1107,1109,1112,1114,1116,1118,1121,1123,1125,1127,1130,1132,1135,1137,1139],{"class":333,"line":855},[331,1094,1095],{"class":364},"      void",[331,1097,1098],{"class":360}," query",[331,1100,310],{"class":364},[331,1102,1103],{"class":377},"orderBy",[331,1105,404],{"class":1106},"swJcz",[331,1108,407],{"class":364},[331,1110,1111],{"class":410},"posts_count",[331,1113,407],{"class":364},[331,1115,416],{"class":364},[331,1117,1082],{"class":360},[331,1119,1120],{"class":364}," ?",[331,1122,419],{"class":364},[331,1124,706],{"class":410},[331,1126,407],{"class":364},[331,1128,1129],{"class":364}," :",[331,1131,419],{"class":364},[331,1133,1134],{"class":410},"asc",[331,1136,407],{"class":364},[331,1138,436],{"class":1106},[331,1140,439],{"class":364},[331,1142,1144,1147,1149],{"class":333,"line":1143},10,[331,1145,1146],{"class":364},"    }",[331,1148,436],{"class":360},[331,1150,823],{"class":364},[331,1152,1154,1156],{"class":333,"line":1153},11,[331,1155,858],{"class":360},[331,1157,439],{"class":364},[312,1159,1161],{"id":1160},"custom-sort-classes","Custom Sort Classes",[279,1163,1164,1165,1168,1169,1172,1173,1175],{},"For reusable sorting logic across multiple queries or models, implement the ",[283,1166,1167],{},"Sort\u003CModel>"," interface and register it with ",[283,1170,1171],{},"AllowedSort.custom()",". See ",[307,1174,94],{"href":95}," for an example.",[1177,1178,1179],"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}",{"title":327,"searchDepth":334,"depth":341,"links":1181},[1182,1183,1184,1185,1187,1188],{"id":314,"depth":341,"text":128},{"id":474,"depth":341,"text":475},{"id":716,"depth":341,"text":717},{"id":863,"depth":341,"text":1186},"Default Sort Direction on AllowedSort",{"id":954,"depth":341,"text":955},{"id":1160,"depth":341,"text":1161},"Sort Lucid queries by single or multiple columns, aliases, default sorts, and custom callbacks.","md",{},{"icon":71},{"title":68,"description":1189},"EMPRbvJhH366-LYYGS1S0KrcKsymvtwF06Jt7mDqvBI",[1196,1198],{"title":63,"path":64,"stem":65,"description":1197,"icon":66,"children":-1},"Filter Lucid queries using partial, exact, operator, scope, trashed, and callback filters.",{"title":73,"path":74,"stem":75,"description":1199,"icon":76,"children":-1},"Eager-load Lucid relationships, nested relations, and relationship counts from API requests.",{"id":1201,"extension":1202,"meta":1203,"packages":1204,"stem":1247,"__hash__":1248},"packages\u002Fdata\u002Fpackages.json","json",{},[1205,1212,1218,1224,1229,1235,1241],{"name":1206,"title":1207,"description":1208,"icon":86,"category":1209,"repo":1210,"version":1211,"docs":521},"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":1213,"title":1214,"description":1215,"icon":33,"category":1209,"repo":1216,"version":1217,"docs":521},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":1219,"title":1220,"description":1221,"icon":249,"category":1209,"repo":1222,"version":1223,"docs":521},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes","1.0.2",{"name":1225,"title":195,"description":1226,"icon":196,"category":1209,"repo":1227,"version":1228,"docs":521},"adonisjs-simple-auth","Single API key authentication for AdonisJS v7 applications","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-simple-auth","2.1.0",{"name":1230,"title":1231,"description":1232,"icon":1233,"category":1209,"repo":1234,"docs":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS v7.","i-tabler-bug","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry",{"name":1236,"title":1237,"description":1238,"icon":141,"category":1239,"repo":1240,"docs":22},"eslint-config","ESLint Config","The EienJS ESLint config preset.","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config",{"name":1242,"title":1243,"description":1244,"icon":1245,"category":1239,"repo":1246,"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",1793868428945]