[{"data":1,"prerenderedAt":2999},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffiltering":273,"\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffiltering-surround":2946,"packages-data":2951},[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":63,"body":275,"description":2940,"extension":2941,"meta":2942,"navigation":2943,"path":64,"seo":2944,"stem":65,"__hash__":2945},"docs\u002F2.packages\u002Fadonisjs-api-query\u002F2.features\u002F1.filtering.md",{"type":276,"value":277,"toc":2923},"minimark",[278,287,303,307,322,432,449,453,460,635,640,654,812,816,837,1002,1006,1017,1177,1183,1296,1310,1314,1321,1435,1439,1451,1583,1606,1610,1623,2214,2231,2235,2255,2348,2352,2356,2362,2601,2605,2618,2622,2628,2830,2919],[279,280,281,282,286],"p",{},"The ",[283,284,285],"code",{},"filter"," query parameter lets clients filter records by model attributes, relationships, Lucid scopes, or custom callbacks.",[279,288,289,290,293,294,297,298,302],{},"All filters must be explicitly allowed using ",[283,291,292],{},".allowedFilters()"," on the query builder or via the ",[283,295,296],{},"filters"," property on a ",[299,300,301],"a",{"href":79},"Filterable Class",".",[304,305,128],"h2",{"id":306},"basic-usage",[279,308,309,310,312,313,317,318,321],{},"By default, passing a string column name to ",[283,311,292],{}," registers a ",[314,315,316],"strong",{},"case-insensitive partial filter"," (",[283,319,320],{},"LOWER(column) LIKE %value%","):",[323,324,329],"pre",{"className":325,"code":326,"language":327,"meta":328,"style":328},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F GET \u002Fusers?filter[name]=john\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters('name', 'email');\n\u002F\u002F Or pass an array:\n\u002F\u002F .allowedFilters(['name', 'email'])\n","ts","",[283,330,331,340,371,383,420,426],{"__ignoreMap":328},[332,333,336],"span",{"class":334,"line":335},"line",1,[332,337,339],{"class":338},"sHwdD","\u002F\u002F GET \u002Fusers?filter[name]=john\n",[332,341,343,347,351,355,359,362,364,368],{"class":334,"line":342},2,[332,344,346],{"class":345},"spNyl","const",[332,348,350],{"class":349},"sTEyZ"," users ",[332,352,354],{"class":353},"sMK4o","=",[332,356,358],{"class":357},"s7zQu"," await",[332,360,361],{"class":349}," User",[332,363,302],{"class":353},[332,365,367],{"class":366},"s2Zo4","query",[332,369,370],{"class":349},"()\n",[332,372,374,377,380],{"class":334,"line":373},3,[332,375,376],{"class":353},"  .",[332,378,379],{"class":366},"withRequest",[332,381,382],{"class":349},"(request)\n",[332,384,386,388,391,394,397,401,403,406,409,412,414,417],{"class":334,"line":385},4,[332,387,376],{"class":353},[332,389,390],{"class":366},"allowedFilters",[332,392,393],{"class":349},"(",[332,395,396],{"class":353},"'",[332,398,400],{"class":399},"sfazB","name",[332,402,396],{"class":353},[332,404,405],{"class":353},",",[332,407,408],{"class":353}," '",[332,410,411],{"class":399},"email",[332,413,396],{"class":353},[332,415,416],{"class":349},")",[332,418,419],{"class":353},";\n",[332,421,423],{"class":334,"line":422},5,[332,424,425],{"class":338},"\u002F\u002F Or pass an array:\n",[332,427,429],{"class":334,"line":428},6,[332,430,431],{"class":338},"\u002F\u002F .allowedFilters(['name', 'email'])\n",[279,433,434,435,438,439,442,443,446,447,302],{},"If a client requests a filter that is not allowed, an ",[283,436,437],{},"InvalidFilterQuery"," exception (",[283,440,441],{},"400 Bad Request",") is thrown unless ",[283,444,445],{},"disableInvalidFilterQueryException"," is enabled in ",[299,448,52],{"href":53},[304,450,452],{"id":451},"filter-types","Filter Types",[279,454,455,456,459],{},"Use the ",[283,457,458],{},"AllowedFilter"," factory methods to configure how each filter behaves:",[461,462,463,477],"table",{},[464,465,466],"thead",{},[467,468,469,474],"tr",{},[470,471,473],"th",{"align":472},"left","Method",[470,475,476],{"align":472},"SQL Behavior",[478,479,480,495,517,530,543,574,587,608,621],"tbody",{},[467,481,482,488],{},[483,484,485],"td",{"align":472},[283,486,487],{},"AllowedFilter.partial('name')",[483,489,490,491,494],{"align":472},"Case-insensitive partial match (",[283,492,493],{},"LOWER(name) LIKE '%value%'","). Default when passing a string.",[467,496,497,502],{},[483,498,499],{"align":472},[283,500,501],{},"AllowedFilter.exact('id')",[483,503,504,505,508,509,512,513,516],{"align":472},"Exact match (",[283,506,507],{},"= value",", ",[283,510,511],{},"WHERE IN (...)"," for comma-separated arrays, or ",[283,514,515],{},"IS NULL",").",[467,518,519,524],{},[483,520,521],{"align":472},[283,522,523],{},"AllowedFilter.beginsWithStrict('name')",[483,525,526,527,516],{"align":472},"Prefix match (",[283,528,529],{},"name LIKE 'value%'",[467,531,532,537],{},[483,533,534],{"align":472},[283,535,536],{},"AllowedFilter.endsWithStrict('email')",[483,538,539,540,516],{"align":472},"Suffix match (",[283,541,542],{},"email LIKE '%value'",[467,544,545,550],{},[483,546,547],{"align":472},[283,548,549],{},"AllowedFilter.operator('age', FilterOperator.GreaterThan)",[483,551,552,553,508,555,508,558,508,561,508,564,508,567,570,571,516],{"align":472},"Comparison operator (",[283,554,354],{},[283,556,557],{},"\u003C",[283,559,560],{},">",[283,562,563],{},"\u003C=",[283,565,566],{},">=",[283,568,569],{},"\u003C>",", or ",[283,572,573],{},"FilterOperator.Dynamic",[467,575,576,581],{},[483,577,578],{"align":472},[283,579,580],{},"AllowedFilter.scope('popular')",[483,582,583,584,516],{"align":472},"Invokes a Lucid model query scope (",[283,585,586],{},"static popular = scope(...)",[467,588,589,594],{},[483,590,591],{"align":472},[283,592,593],{},"AllowedFilter.trashed()",[483,595,596,597,600,601,604,605,302],{"align":472},"Filters soft-deleted models (",[283,598,599],{},"with"," or ",[283,602,603],{},"only",") when using ",[283,606,607],{},"@eienjs\u002Fadonisjs-soft-deletes",[467,609,610,615],{},[483,611,612],{"align":472},[283,613,614],{},"AllowedFilter.callback('search', fn)",[483,616,617,618,302],{"align":472},"Runs a custom callback ",[283,619,620],{},"(query, value, property) => void",[467,622,623,628],{},[483,624,625],{"align":472},[283,626,627],{},"AllowedFilter.custom('name', new MyFilter())",[483,629,630,631,634],{"align":472},"Uses a custom class implementing the ",[283,632,633],{},"Filter\u003CModel>"," interface.",[636,637,639],"h3",{"id":638},"exact-filters","Exact Filters",[279,641,642,643,645,646,649,650,653],{},"Exact filters check for equality (",[283,644,354],{},"). When multiple comma-separated values are passed in the URL, ",[283,647,648],{},"FiltersExact"," automatically uses ",[283,651,652],{},"whereIn",":",[323,655,657],{"className":325,"code":656,"language":327,"meta":328,"style":328},"import { AllowedFilter } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?filter[status]=active\n\u002F\u002F -> WHERE users.status = 'active'\n\n\u002F\u002F GET \u002Fusers?filter[status]=active,pending\n\u002F\u002F -> WHERE users.status IN ('active', 'pending')\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.exact('status'),\n    AllowedFilter.exact('isAdmin'), \u002F\u002F 'true' and 'false' are automatically converted to booleans\n  ]);\n",[283,658,659,685,691,696,701,705,710,716,735,744,754,779,804],{"__ignoreMap":328},[332,660,661,664,667,670,673,676,678,681,683],{"class":334,"line":335},[332,662,663],{"class":357},"import",[332,665,666],{"class":353}," {",[332,668,669],{"class":349}," AllowedFilter",[332,671,672],{"class":353}," }",[332,674,675],{"class":357}," from",[332,677,408],{"class":353},[332,679,680],{"class":399},"@eienjs\u002Fadonisjs-api-query",[332,682,396],{"class":353},[332,684,419],{"class":353},[332,686,687],{"class":334,"line":342},[332,688,690],{"emptyLinePlaceholder":689},true,"\n",[332,692,693],{"class":334,"line":373},[332,694,695],{"class":338},"\u002F\u002F GET \u002Fusers?filter[status]=active\n",[332,697,698],{"class":334,"line":385},[332,699,700],{"class":338},"\u002F\u002F -> WHERE users.status = 'active'\n",[332,702,703],{"class":334,"line":422},[332,704,690],{"emptyLinePlaceholder":689},[332,706,707],{"class":334,"line":428},[332,708,709],{"class":338},"\u002F\u002F GET \u002Fusers?filter[status]=active,pending\n",[332,711,713],{"class":334,"line":712},7,[332,714,715],{"class":338},"\u002F\u002F -> WHERE users.status IN ('active', 'pending')\n",[332,717,719,721,723,725,727,729,731,733],{"class":334,"line":718},8,[332,720,346],{"class":345},[332,722,350],{"class":349},[332,724,354],{"class":353},[332,726,358],{"class":357},[332,728,361],{"class":349},[332,730,302],{"class":353},[332,732,367],{"class":366},[332,734,370],{"class":349},[332,736,738,740,742],{"class":334,"line":737},9,[332,739,376],{"class":353},[332,741,379],{"class":366},[332,743,382],{"class":349},[332,745,747,749,751],{"class":334,"line":746},10,[332,748,376],{"class":353},[332,750,390],{"class":366},[332,752,753],{"class":349},"([\n",[332,755,757,760,762,765,767,769,772,774,776],{"class":334,"line":756},11,[332,758,759],{"class":349},"    AllowedFilter",[332,761,302],{"class":353},[332,763,764],{"class":366},"exact",[332,766,393],{"class":349},[332,768,396],{"class":353},[332,770,771],{"class":399},"status",[332,773,396],{"class":353},[332,775,416],{"class":349},[332,777,778],{"class":353},",\n",[332,780,782,784,786,788,790,792,795,797,799,801],{"class":334,"line":781},12,[332,783,759],{"class":349},[332,785,302],{"class":353},[332,787,764],{"class":366},[332,789,393],{"class":349},[332,791,396],{"class":353},[332,793,794],{"class":399},"isAdmin",[332,796,396],{"class":353},[332,798,416],{"class":349},[332,800,405],{"class":353},[332,802,803],{"class":338}," \u002F\u002F 'true' and 'false' are automatically converted to booleans\n",[332,805,807,810],{"class":334,"line":806},13,[332,808,809],{"class":349},"  ])",[332,811,419],{"class":353},[636,813,815],{"id":814},"partial-beginswithstrict-endswithstrict-filters","Partial, BeginsWithStrict & EndsWithStrict Filters",[279,817,818,819,822,823,508,826,829,830,833,834,653],{},"Partial filters perform a ",[283,820,821],{},"LIKE"," query and automatically escape ",[283,824,825],{},"%",[283,827,828],{},"_",", and ",[283,831,832],{},"\\"," characters in user input. Passing multiple comma-separated values groups them with ",[283,835,836],{},"OR",[323,838,840],{"className":325,"code":839,"language":327,"meta":328,"style":328},"import { AllowedFilter } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?filter[name]=john,jane\n\u002F\u002F -> WHERE (LOWER(name) LIKE '%john%' OR LOWER(name) LIKE '%jane%')\n\u002F\u002F GET \u002Fusers?filter[username]=admin\n\u002F\u002F -> WHERE username LIKE 'admin%'\n\u002F\u002F GET \u002Fusers?filter[email]=@example.com\n\u002F\u002F -> WHERE email LIKE '%@example.com'\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.partial('name'),\n    AllowedFilter.beginsWithStrict('username'),\n    AllowedFilter.endsWithStrict('email'),\n  ]);\n",[283,841,842,862,866,871,876,881,886,891,896,914,922,930,951,973,995],{"__ignoreMap":328},[332,843,844,846,848,850,852,854,856,858,860],{"class":334,"line":335},[332,845,663],{"class":357},[332,847,666],{"class":353},[332,849,669],{"class":349},[332,851,672],{"class":353},[332,853,675],{"class":357},[332,855,408],{"class":353},[332,857,680],{"class":399},[332,859,396],{"class":353},[332,861,419],{"class":353},[332,863,864],{"class":334,"line":342},[332,865,690],{"emptyLinePlaceholder":689},[332,867,868],{"class":334,"line":373},[332,869,870],{"class":338},"\u002F\u002F GET \u002Fusers?filter[name]=john,jane\n",[332,872,873],{"class":334,"line":385},[332,874,875],{"class":338},"\u002F\u002F -> WHERE (LOWER(name) LIKE '%john%' OR LOWER(name) LIKE '%jane%')\n",[332,877,878],{"class":334,"line":422},[332,879,880],{"class":338},"\u002F\u002F GET \u002Fusers?filter[username]=admin\n",[332,882,883],{"class":334,"line":428},[332,884,885],{"class":338},"\u002F\u002F -> WHERE username LIKE 'admin%'\n",[332,887,888],{"class":334,"line":712},[332,889,890],{"class":338},"\u002F\u002F GET \u002Fusers?filter[email]=@example.com\n",[332,892,893],{"class":334,"line":718},[332,894,895],{"class":338},"\u002F\u002F -> WHERE email LIKE '%@example.com'\n",[332,897,898,900,902,904,906,908,910,912],{"class":334,"line":737},[332,899,346],{"class":345},[332,901,350],{"class":349},[332,903,354],{"class":353},[332,905,358],{"class":357},[332,907,361],{"class":349},[332,909,302],{"class":353},[332,911,367],{"class":366},[332,913,370],{"class":349},[332,915,916,918,920],{"class":334,"line":746},[332,917,376],{"class":353},[332,919,379],{"class":366},[332,921,382],{"class":349},[332,923,924,926,928],{"class":334,"line":756},[332,925,376],{"class":353},[332,927,390],{"class":366},[332,929,753],{"class":349},[332,931,932,934,936,939,941,943,945,947,949],{"class":334,"line":781},[332,933,759],{"class":349},[332,935,302],{"class":353},[332,937,938],{"class":366},"partial",[332,940,393],{"class":349},[332,942,396],{"class":353},[332,944,400],{"class":399},[332,946,396],{"class":353},[332,948,416],{"class":349},[332,950,778],{"class":353},[332,952,953,955,957,960,962,964,967,969,971],{"class":334,"line":806},[332,954,759],{"class":349},[332,956,302],{"class":353},[332,958,959],{"class":366},"beginsWithStrict",[332,961,393],{"class":349},[332,963,396],{"class":353},[332,965,966],{"class":399},"username",[332,968,396],{"class":353},[332,970,416],{"class":349},[332,972,778],{"class":353},[332,974,976,978,980,983,985,987,989,991,993],{"class":334,"line":975},14,[332,977,759],{"class":349},[332,979,302],{"class":353},[332,981,982],{"class":366},"endsWithStrict",[332,984,393],{"class":349},[332,986,396],{"class":353},[332,988,411],{"class":399},[332,990,396],{"class":353},[332,992,416],{"class":349},[332,994,778],{"class":353},[332,996,998,1000],{"class":334,"line":997},15,[332,999,809],{"class":349},[332,1001,419],{"class":353},[636,1003,1005],{"id":1004},"operator-filters","Operator Filters",[279,1007,1008,1009,1012,1013,1016],{},"Use ",[283,1010,1011],{},"AllowedFilter.operator()"," with ",[283,1014,1015],{},"FilterOperator"," to filter by numeric or date comparisons:",[323,1018,1020],{"className":325,"code":1019,"language":327,"meta":328,"style":328},"import { AllowedFilter, FilterOperator } from '@eienjs\u002Fadonisjs-api-query';\n\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    \u002F\u002F Fixed operator: GET \u002Fusers?filter[age]=18 -> WHERE users.age >= 18\n    AllowedFilter.operator('age', FilterOperator.GreaterThanOrEqual),\n\n    \u002F\u002F Dynamic operator: parses the operator prefix from the query value!\n    \u002F\u002F GET \u002Fusers?filter[salary]=>50000 -> WHERE users.salary > 50000\n    \u002F\u002F GET \u002Fusers?filter[salary]=\u003C=100000 -> WHERE users.salary \u003C= 100000\n    \u002F\u002F GET \u002Fusers?filter[salary]=\u003C>0 -> WHERE users.salary \u003C> 0\n    AllowedFilter.operator('salary', FilterOperator.Dynamic),\n  ]);\n",[283,1021,1022,1047,1051,1069,1077,1085,1090,1119,1123,1128,1133,1138,1143,1171],{"__ignoreMap":328},[332,1023,1024,1026,1028,1030,1032,1035,1037,1039,1041,1043,1045],{"class":334,"line":335},[332,1025,663],{"class":357},[332,1027,666],{"class":353},[332,1029,669],{"class":349},[332,1031,405],{"class":353},[332,1033,1034],{"class":349}," FilterOperator",[332,1036,672],{"class":353},[332,1038,675],{"class":357},[332,1040,408],{"class":353},[332,1042,680],{"class":399},[332,1044,396],{"class":353},[332,1046,419],{"class":353},[332,1048,1049],{"class":334,"line":342},[332,1050,690],{"emptyLinePlaceholder":689},[332,1052,1053,1055,1057,1059,1061,1063,1065,1067],{"class":334,"line":373},[332,1054,346],{"class":345},[332,1056,350],{"class":349},[332,1058,354],{"class":353},[332,1060,358],{"class":357},[332,1062,361],{"class":349},[332,1064,302],{"class":353},[332,1066,367],{"class":366},[332,1068,370],{"class":349},[332,1070,1071,1073,1075],{"class":334,"line":385},[332,1072,376],{"class":353},[332,1074,379],{"class":366},[332,1076,382],{"class":349},[332,1078,1079,1081,1083],{"class":334,"line":422},[332,1080,376],{"class":353},[332,1082,390],{"class":366},[332,1084,753],{"class":349},[332,1086,1087],{"class":334,"line":428},[332,1088,1089],{"class":338},"    \u002F\u002F Fixed operator: GET \u002Fusers?filter[age]=18 -> WHERE users.age >= 18\n",[332,1091,1092,1094,1096,1099,1101,1103,1106,1108,1110,1112,1114,1117],{"class":334,"line":712},[332,1093,759],{"class":349},[332,1095,302],{"class":353},[332,1097,1098],{"class":366},"operator",[332,1100,393],{"class":349},[332,1102,396],{"class":353},[332,1104,1105],{"class":399},"age",[332,1107,396],{"class":353},[332,1109,405],{"class":353},[332,1111,1034],{"class":349},[332,1113,302],{"class":353},[332,1115,1116],{"class":349},"GreaterThanOrEqual)",[332,1118,778],{"class":353},[332,1120,1121],{"class":334,"line":718},[332,1122,690],{"emptyLinePlaceholder":689},[332,1124,1125],{"class":334,"line":737},[332,1126,1127],{"class":338},"    \u002F\u002F Dynamic operator: parses the operator prefix from the query value!\n",[332,1129,1130],{"class":334,"line":746},[332,1131,1132],{"class":338},"    \u002F\u002F GET \u002Fusers?filter[salary]=>50000 -> WHERE users.salary > 50000\n",[332,1134,1135],{"class":334,"line":756},[332,1136,1137],{"class":338},"    \u002F\u002F GET \u002Fusers?filter[salary]=\u003C=100000 -> WHERE users.salary \u003C= 100000\n",[332,1139,1140],{"class":334,"line":781},[332,1141,1142],{"class":338},"    \u002F\u002F GET \u002Fusers?filter[salary]=\u003C>0 -> WHERE users.salary \u003C> 0\n",[332,1144,1145,1147,1149,1151,1153,1155,1158,1160,1162,1164,1166,1169],{"class":334,"line":806},[332,1146,759],{"class":349},[332,1148,302],{"class":353},[332,1150,1098],{"class":366},[332,1152,393],{"class":349},[332,1154,396],{"class":353},[332,1156,1157],{"class":399},"salary",[332,1159,396],{"class":353},[332,1161,405],{"class":353},[332,1163,1034],{"class":349},[332,1165,302],{"class":353},[332,1167,1168],{"class":349},"Dynamic)",[332,1170,778],{"class":353},[332,1172,1173,1175],{"class":334,"line":975},[332,1174,809],{"class":349},[332,1176,419],{"class":353},[279,1178,1179,1180,1182],{},"Available ",[283,1181,1015],{}," values:",[461,1184,1185,1195],{},[464,1186,1187],{},[467,1188,1189,1192],{},[470,1190,1191],{"align":472},"Enum Member",[470,1193,1194],{"align":472},"Operator",[478,1196,1197,1224,1236,1248,1260,1272,1284],{},[467,1198,1199,1203],{},[483,1200,1201],{"align":472},[283,1202,573],{},[483,1204,1205,1208,1209,508,1211,508,1213,508,1215,508,1217,508,1219,1221,1222,416],{"align":472},[283,1206,1207],{},"''"," (parses ",[283,1210,354],{},[283,1212,557],{},[283,1214,560],{},[283,1216,563],{},[283,1218,566],{},[283,1220,569],{}," from the value prefix; defaults to ",[283,1223,354],{},[467,1225,1226,1231],{},[483,1227,1228],{"align":472},[283,1229,1230],{},"FilterOperator.Equal",[483,1232,1233],{"align":472},[283,1234,1235],{},"'='",[467,1237,1238,1243],{},[483,1239,1240],{"align":472},[283,1241,1242],{},"FilterOperator.LessThan",[483,1244,1245],{"align":472},[283,1246,1247],{},"'\u003C'",[467,1249,1250,1255],{},[483,1251,1252],{"align":472},[283,1253,1254],{},"FilterOperator.GreaterThan",[483,1256,1257],{"align":472},[283,1258,1259],{},"'>'",[467,1261,1262,1267],{},[483,1263,1264],{"align":472},[283,1265,1266],{},"FilterOperator.LessThanOrEqual",[483,1268,1269],{"align":472},[283,1270,1271],{},"'\u003C='",[467,1273,1274,1279],{},[483,1275,1276],{"align":472},[283,1277,1278],{},"FilterOperator.GreaterThanOrEqual",[483,1280,1281],{"align":472},[283,1282,1283],{},"'>='",[467,1285,1286,1291],{},[483,1287,1288],{"align":472},[283,1289,1290],{},"FilterOperator.NotEqual",[483,1292,1293],{"align":472},[283,1294,1295],{},"'\u003C>'",[279,1297,1298,1299,1302,1303,1306,1307,302],{},"You can also pass ",[283,1300,1301],{},"'and'"," (default) or ",[283,1304,1305],{},"'or'"," as the third argument to ",[283,1308,1309],{},"AllowedFilter.operator(name, operator, boolean, internalName)",[304,1311,1313],{"id":1312},"filtering-by-internal-column-name-aliases","Filtering by Internal Column Name (Aliases)",[279,1315,1316,1317,1320],{},"Often you want to expose a clean filter name in the URL that maps to a different database column or property name on the model. Pass the ",[283,1318,1319],{},"internalName"," as the second argument:",[323,1322,1324],{"className":325,"code":1323,"language":327,"meta":328,"style":328},"\u002F\u002F GET \u002Fusers?filter[hasVerifiedEmail]=true -> filters on `emailVerifiedAt`\n\u002F\u002F GET \u002Fusers?filter[user_id]=5 -> filters on `id`\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.exact('user_id', 'id'),\n    AllowedFilter.partial('full_name', 'name'),\n  ]);\n",[283,1325,1326,1331,1336,1354,1362,1370,1400,1429],{"__ignoreMap":328},[332,1327,1328],{"class":334,"line":335},[332,1329,1330],{"class":338},"\u002F\u002F GET \u002Fusers?filter[hasVerifiedEmail]=true -> filters on `emailVerifiedAt`\n",[332,1332,1333],{"class":334,"line":342},[332,1334,1335],{"class":338},"\u002F\u002F GET \u002Fusers?filter[user_id]=5 -> filters on `id`\n",[332,1337,1338,1340,1342,1344,1346,1348,1350,1352],{"class":334,"line":373},[332,1339,346],{"class":345},[332,1341,350],{"class":349},[332,1343,354],{"class":353},[332,1345,358],{"class":357},[332,1347,361],{"class":349},[332,1349,302],{"class":353},[332,1351,367],{"class":366},[332,1353,370],{"class":349},[332,1355,1356,1358,1360],{"class":334,"line":385},[332,1357,376],{"class":353},[332,1359,379],{"class":366},[332,1361,382],{"class":349},[332,1363,1364,1366,1368],{"class":334,"line":422},[332,1365,376],{"class":353},[332,1367,390],{"class":366},[332,1369,753],{"class":349},[332,1371,1372,1374,1376,1378,1380,1382,1385,1387,1389,1391,1394,1396,1398],{"class":334,"line":428},[332,1373,759],{"class":349},[332,1375,302],{"class":353},[332,1377,764],{"class":366},[332,1379,393],{"class":349},[332,1381,396],{"class":353},[332,1383,1384],{"class":399},"user_id",[332,1386,396],{"class":353},[332,1388,405],{"class":353},[332,1390,408],{"class":353},[332,1392,1393],{"class":399},"id",[332,1395,396],{"class":353},[332,1397,416],{"class":349},[332,1399,778],{"class":353},[332,1401,1402,1404,1406,1408,1410,1412,1415,1417,1419,1421,1423,1425,1427],{"class":334,"line":712},[332,1403,759],{"class":349},[332,1405,302],{"class":353},[332,1407,938],{"class":366},[332,1409,393],{"class":349},[332,1411,396],{"class":353},[332,1413,1414],{"class":399},"full_name",[332,1416,396],{"class":353},[332,1418,405],{"class":353},[332,1420,408],{"class":353},[332,1422,400],{"class":399},[332,1424,396],{"class":353},[332,1426,416],{"class":349},[332,1428,778],{"class":353},[332,1430,1431,1433],{"class":334,"line":718},[332,1432,809],{"class":349},[332,1434,419],{"class":353},[304,1436,1438],{"id":1437},"filtering-nested-relationships","Filtering Nested Relationships",[279,1440,1441,1442,508,1444,1446,1447,1450],{},"Exact, partial, ",[283,1443,959],{},[283,1445,982],{},", operator, and scope filters support dot-notation to filter records by related model attributes using ",[283,1448,1449],{},"whereHas"," automatically:",[323,1452,1454],{"className":325,"code":1453,"language":327,"meta":328,"style":328},"\u002F\u002F GET \u002Fusers?filter[posts.title]=AdonisJS&filter[posts.isPublished]=true\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.partial('posts.title'),\n    AllowedFilter.exact('posts.isPublished'),\n    \u002F\u002F Or alias a nested relationship filter:\n    \u002F\u002F GET \u002Fusers?filter[commentAuthor]=John\n    AllowedFilter.exact('commentAuthor', 'posts.comments.authorName'),\n  ]);\n",[283,1455,1456,1461,1479,1487,1495,1516,1537,1542,1547,1577],{"__ignoreMap":328},[332,1457,1458],{"class":334,"line":335},[332,1459,1460],{"class":338},"\u002F\u002F GET \u002Fusers?filter[posts.title]=AdonisJS&filter[posts.isPublished]=true\n",[332,1462,1463,1465,1467,1469,1471,1473,1475,1477],{"class":334,"line":342},[332,1464,346],{"class":345},[332,1466,350],{"class":349},[332,1468,354],{"class":353},[332,1470,358],{"class":357},[332,1472,361],{"class":349},[332,1474,302],{"class":353},[332,1476,367],{"class":366},[332,1478,370],{"class":349},[332,1480,1481,1483,1485],{"class":334,"line":373},[332,1482,376],{"class":353},[332,1484,379],{"class":366},[332,1486,382],{"class":349},[332,1488,1489,1491,1493],{"class":334,"line":385},[332,1490,376],{"class":353},[332,1492,390],{"class":366},[332,1494,753],{"class":349},[332,1496,1497,1499,1501,1503,1505,1507,1510,1512,1514],{"class":334,"line":422},[332,1498,759],{"class":349},[332,1500,302],{"class":353},[332,1502,938],{"class":366},[332,1504,393],{"class":349},[332,1506,396],{"class":353},[332,1508,1509],{"class":399},"posts.title",[332,1511,396],{"class":353},[332,1513,416],{"class":349},[332,1515,778],{"class":353},[332,1517,1518,1520,1522,1524,1526,1528,1531,1533,1535],{"class":334,"line":428},[332,1519,759],{"class":349},[332,1521,302],{"class":353},[332,1523,764],{"class":366},[332,1525,393],{"class":349},[332,1527,396],{"class":353},[332,1529,1530],{"class":399},"posts.isPublished",[332,1532,396],{"class":353},[332,1534,416],{"class":349},[332,1536,778],{"class":353},[332,1538,1539],{"class":334,"line":712},[332,1540,1541],{"class":338},"    \u002F\u002F Or alias a nested relationship filter:\n",[332,1543,1544],{"class":334,"line":718},[332,1545,1546],{"class":338},"    \u002F\u002F GET \u002Fusers?filter[commentAuthor]=John\n",[332,1548,1549,1551,1553,1555,1557,1559,1562,1564,1566,1568,1571,1573,1575],{"class":334,"line":737},[332,1550,759],{"class":349},[332,1552,302],{"class":353},[332,1554,764],{"class":366},[332,1556,393],{"class":349},[332,1558,396],{"class":353},[332,1560,1561],{"class":399},"commentAuthor",[332,1563,396],{"class":353},[332,1565,405],{"class":353},[332,1567,408],{"class":353},[332,1569,1570],{"class":399},"posts.comments.authorName",[332,1572,396],{"class":353},[332,1574,416],{"class":349},[332,1576,778],{"class":353},[332,1578,1579,1581],{"class":334,"line":746},[332,1580,809],{"class":349},[332,1582,419],{"class":353},[1584,1585,1586],"note",{},[279,1587,1588,1589,1591,1592,1594,1595,1598,1599,1602,1603],{},"If you want to filter a joined table column directly (e.g., ",[283,1590,1509],{},") without wrapping it in a ",[283,1593,1449],{}," subquery, pass ",[283,1596,1597],{},"false"," as the third argument (",[283,1600,1601],{},"shouldAddRelationConstraint","):\n",[283,1604,1605],{},"AllowedFilter.exact('posts.title', undefined, false)",[304,1607,1609],{"id":1608},"scope-filters","Scope Filters",[279,1611,1008,1612,1615,1616,1622],{},[283,1613,1614],{},"AllowedFilter.scope()"," to trigger ",[299,1617,1621],{"href":1618,"rel":1619},"https:\u002F\u002Flucid.adonisjs.com\u002Fdocs\u002Fmodel-query-scopes",[1620],"nofollow","Lucid query scopes"," defined on your model:",[1624,1625,1626,2056],"code-group",{},[323,1627,1630],{"className":325,"code":1628,"filename":1629,"language":327,"meta":328,"style":328},"import { BaseModel, column, scope } from '@adonisjs\u002Flucid\u002Form';\n\nexport default class User extends BaseModel {\n  \u002F\u002F Scope without extra parameters\n  public static verified = scope((query) => {\n    void query.whereNotNull('email_verified_at');\n  });\n\n  \u002F\u002F Scope with a parameter\n  public static ofRole = scope((query, role: string) => {\n    void query.where('role', role);\n  });\n\n  \u002F\u002F Scope with multiple parameters\n  public static ageBetween = scope((query, min: string, max: string) => {\n    void query.whereBetween('age', [Number(min), Number(max)]);\n  });\n\n  @column({ isPrimary: true })\n  declare public id: number;\n\n  @column()\n  declare public role: string;\n\n  @column()\n  declare public age: number;\n}\n","app\u002Fmodels\u002Fuser.ts",[283,1631,1632,1664,1668,1690,1695,1726,1750,1759,1763,1768,1803,1829,1837,1841,1846,1889,1930,1939,1944,1972,1991,1996,2005,2020,2025,2034,2050],{"__ignoreMap":328},[332,1633,1634,1636,1638,1641,1643,1646,1648,1651,1653,1655,1657,1660,1662],{"class":334,"line":335},[332,1635,663],{"class":357},[332,1637,666],{"class":353},[332,1639,1640],{"class":349}," BaseModel",[332,1642,405],{"class":353},[332,1644,1645],{"class":349}," column",[332,1647,405],{"class":353},[332,1649,1650],{"class":349}," scope",[332,1652,672],{"class":353},[332,1654,675],{"class":357},[332,1656,408],{"class":353},[332,1658,1659],{"class":399},"@adonisjs\u002Flucid\u002Form",[332,1661,396],{"class":353},[332,1663,419],{"class":353},[332,1665,1666],{"class":334,"line":342},[332,1667,690],{"emptyLinePlaceholder":689},[332,1669,1670,1673,1676,1679,1682,1685,1687],{"class":334,"line":373},[332,1671,1672],{"class":357},"export",[332,1674,1675],{"class":357}," default",[332,1677,1678],{"class":345}," class",[332,1680,361],{"class":1681},"sBMFI",[332,1683,1684],{"class":345}," extends",[332,1686,1640],{"class":1681},[332,1688,1689],{"class":353}," {\n",[332,1691,1692],{"class":334,"line":385},[332,1693,1694],{"class":338},"  \u002F\u002F Scope without extra parameters\n",[332,1696,1697,1700,1703,1707,1710,1712,1714,1716,1719,1721,1724],{"class":334,"line":422},[332,1698,1699],{"class":345},"  public",[332,1701,1702],{"class":345}," static",[332,1704,1706],{"class":1705},"swJcz"," verified",[332,1708,1709],{"class":353}," =",[332,1711,1650],{"class":1705},[332,1713,393],{"class":349},[332,1715,393],{"class":353},[332,1717,367],{"class":1718},"sHdIc",[332,1720,416],{"class":353},[332,1722,1723],{"class":345}," =>",[332,1725,1689],{"class":353},[332,1727,1728,1731,1734,1736,1739,1741,1744,1746,1748],{"class":334,"line":428},[332,1729,1730],{"class":353},"    void",[332,1732,1733],{"class":349}," query",[332,1735,302],{"class":353},[332,1737,1738],{"class":1705},"whereNotNull(",[332,1740,396],{"class":353},[332,1742,1743],{"class":399},"email_verified_at",[332,1745,396],{"class":353},[332,1747,416],{"class":1705},[332,1749,419],{"class":353},[332,1751,1752,1755,1757],{"class":334,"line":712},[332,1753,1754],{"class":353},"  }",[332,1756,416],{"class":349},[332,1758,419],{"class":353},[332,1760,1761],{"class":334,"line":718},[332,1762,690],{"emptyLinePlaceholder":689},[332,1764,1765],{"class":334,"line":737},[332,1766,1767],{"class":338},"  \u002F\u002F Scope with a parameter\n",[332,1769,1770,1772,1774,1777,1779,1781,1783,1785,1787,1789,1792,1794,1797,1799,1801],{"class":334,"line":746},[332,1771,1699],{"class":345},[332,1773,1702],{"class":345},[332,1775,1776],{"class":1705}," ofRole",[332,1778,1709],{"class":353},[332,1780,1650],{"class":1705},[332,1782,393],{"class":349},[332,1784,393],{"class":353},[332,1786,367],{"class":1718},[332,1788,405],{"class":353},[332,1790,1791],{"class":1718}," role",[332,1793,653],{"class":353},[332,1795,1796],{"class":1681}," string",[332,1798,416],{"class":353},[332,1800,1723],{"class":345},[332,1802,1689],{"class":353},[332,1804,1805,1807,1809,1811,1814,1816,1819,1821,1823,1825,1827],{"class":334,"line":756},[332,1806,1730],{"class":353},[332,1808,1733],{"class":349},[332,1810,302],{"class":353},[332,1812,1813],{"class":1705},"where(",[332,1815,396],{"class":353},[332,1817,1818],{"class":399},"role",[332,1820,396],{"class":353},[332,1822,405],{"class":353},[332,1824,1791],{"class":349},[332,1826,416],{"class":1705},[332,1828,419],{"class":353},[332,1830,1831,1833,1835],{"class":334,"line":781},[332,1832,1754],{"class":353},[332,1834,416],{"class":349},[332,1836,419],{"class":353},[332,1838,1839],{"class":334,"line":806},[332,1840,690],{"emptyLinePlaceholder":689},[332,1842,1843],{"class":334,"line":975},[332,1844,1845],{"class":338},"  \u002F\u002F Scope with multiple parameters\n",[332,1847,1848,1850,1852,1855,1857,1859,1861,1863,1865,1867,1870,1872,1874,1876,1879,1881,1883,1885,1887],{"class":334,"line":997},[332,1849,1699],{"class":345},[332,1851,1702],{"class":345},[332,1853,1854],{"class":1705}," ageBetween",[332,1856,1709],{"class":353},[332,1858,1650],{"class":1705},[332,1860,393],{"class":349},[332,1862,393],{"class":353},[332,1864,367],{"class":1718},[332,1866,405],{"class":353},[332,1868,1869],{"class":1718}," min",[332,1871,653],{"class":353},[332,1873,1796],{"class":1681},[332,1875,405],{"class":353},[332,1877,1878],{"class":1718}," max",[332,1880,653],{"class":353},[332,1882,1796],{"class":1681},[332,1884,416],{"class":353},[332,1886,1723],{"class":345},[332,1888,1689],{"class":353},[332,1890,1892,1894,1896,1898,1901,1903,1905,1907,1909,1912,1915,1917,1919,1922,1925,1928],{"class":334,"line":1891},16,[332,1893,1730],{"class":353},[332,1895,1733],{"class":349},[332,1897,302],{"class":353},[332,1899,1900],{"class":1705},"whereBetween(",[332,1902,396],{"class":353},[332,1904,1105],{"class":399},[332,1906,396],{"class":353},[332,1908,405],{"class":353},[332,1910,1911],{"class":1705}," [Number(",[332,1913,1914],{"class":349},"min",[332,1916,416],{"class":1705},[332,1918,405],{"class":353},[332,1920,1921],{"class":1705}," Number(",[332,1923,1924],{"class":349},"max",[332,1926,1927],{"class":1705},")])",[332,1929,419],{"class":353},[332,1931,1933,1935,1937],{"class":334,"line":1932},17,[332,1934,1754],{"class":353},[332,1936,416],{"class":349},[332,1938,419],{"class":353},[332,1940,1942],{"class":334,"line":1941},18,[332,1943,690],{"emptyLinePlaceholder":689},[332,1945,1947,1950,1953,1955,1958,1961,1963,1967,1969],{"class":334,"line":1946},19,[332,1948,1949],{"class":353},"  @",[332,1951,1952],{"class":366},"column",[332,1954,393],{"class":349},[332,1956,1957],{"class":353},"{",[332,1959,1960],{"class":1705}," isPrimary",[332,1962,653],{"class":353},[332,1964,1966],{"class":1965},"sfNiH"," true",[332,1968,672],{"class":353},[332,1970,1971],{"class":349},")\n",[332,1973,1975,1978,1981,1984,1986,1989],{"class":334,"line":1974},20,[332,1976,1977],{"class":345},"  declare",[332,1979,1980],{"class":345}," public",[332,1982,1983],{"class":1705}," id",[332,1985,653],{"class":353},[332,1987,1988],{"class":1681}," number",[332,1990,419],{"class":353},[332,1992,1994],{"class":334,"line":1993},21,[332,1995,690],{"emptyLinePlaceholder":689},[332,1997,1999,2001,2003],{"class":334,"line":1998},22,[332,2000,1949],{"class":353},[332,2002,1952],{"class":366},[332,2004,370],{"class":349},[332,2006,2008,2010,2012,2014,2016,2018],{"class":334,"line":2007},23,[332,2009,1977],{"class":345},[332,2011,1980],{"class":345},[332,2013,1791],{"class":1705},[332,2015,653],{"class":353},[332,2017,1796],{"class":1681},[332,2019,419],{"class":353},[332,2021,2023],{"class":334,"line":2022},24,[332,2024,690],{"emptyLinePlaceholder":689},[332,2026,2028,2030,2032],{"class":334,"line":2027},25,[332,2029,1949],{"class":353},[332,2031,1952],{"class":366},[332,2033,370],{"class":349},[332,2035,2037,2039,2041,2044,2046,2048],{"class":334,"line":2036},26,[332,2038,1977],{"class":345},[332,2040,1980],{"class":345},[332,2042,2043],{"class":1705}," age",[332,2045,653],{"class":353},[332,2047,1988],{"class":1681},[332,2049,419],{"class":353},[332,2051,2053],{"class":334,"line":2052},27,[332,2054,2055],{"class":353},"}\n",[323,2057,2060],{"className":325,"code":2058,"filename":2059,"language":327,"meta":328,"style":328},"import { AllowedFilter } from '@eienjs\u002Fadonisjs-api-query';\nimport User from '#models\u002Fuser';\n\n\u002F\u002F GET \u002Fusers?filter[verified]=true&filter[ofRole]=admin&filter[ageBetween]=18,30\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.scope('verified'),\n    AllowedFilter.scope('ofRole'),\n    AllowedFilter.scope('ageBetween'),\n  ]);\n","app\u002Fcontrollers\u002Fusers_controller.ts",[283,2061,2062,2082,2101,2105,2110,2128,2136,2144,2166,2187,2208],{"__ignoreMap":328},[332,2063,2064,2066,2068,2070,2072,2074,2076,2078,2080],{"class":334,"line":335},[332,2065,663],{"class":357},[332,2067,666],{"class":353},[332,2069,669],{"class":349},[332,2071,672],{"class":353},[332,2073,675],{"class":357},[332,2075,408],{"class":353},[332,2077,680],{"class":399},[332,2079,396],{"class":353},[332,2081,419],{"class":353},[332,2083,2084,2086,2089,2092,2094,2097,2099],{"class":334,"line":342},[332,2085,663],{"class":357},[332,2087,2088],{"class":349}," User ",[332,2090,2091],{"class":357},"from",[332,2093,408],{"class":353},[332,2095,2096],{"class":399},"#models\u002Fuser",[332,2098,396],{"class":353},[332,2100,419],{"class":353},[332,2102,2103],{"class":334,"line":373},[332,2104,690],{"emptyLinePlaceholder":689},[332,2106,2107],{"class":334,"line":385},[332,2108,2109],{"class":338},"\u002F\u002F GET \u002Fusers?filter[verified]=true&filter[ofRole]=admin&filter[ageBetween]=18,30\n",[332,2111,2112,2114,2116,2118,2120,2122,2124,2126],{"class":334,"line":422},[332,2113,346],{"class":345},[332,2115,350],{"class":349},[332,2117,354],{"class":353},[332,2119,358],{"class":357},[332,2121,361],{"class":349},[332,2123,302],{"class":353},[332,2125,367],{"class":366},[332,2127,370],{"class":349},[332,2129,2130,2132,2134],{"class":334,"line":428},[332,2131,376],{"class":353},[332,2133,379],{"class":366},[332,2135,382],{"class":349},[332,2137,2138,2140,2142],{"class":334,"line":712},[332,2139,376],{"class":353},[332,2141,390],{"class":366},[332,2143,753],{"class":349},[332,2145,2146,2148,2150,2153,2155,2157,2160,2162,2164],{"class":334,"line":718},[332,2147,759],{"class":349},[332,2149,302],{"class":353},[332,2151,2152],{"class":366},"scope",[332,2154,393],{"class":349},[332,2156,396],{"class":353},[332,2158,2159],{"class":399},"verified",[332,2161,396],{"class":353},[332,2163,416],{"class":349},[332,2165,778],{"class":353},[332,2167,2168,2170,2172,2174,2176,2178,2181,2183,2185],{"class":334,"line":737},[332,2169,759],{"class":349},[332,2171,302],{"class":353},[332,2173,2152],{"class":366},[332,2175,393],{"class":349},[332,2177,396],{"class":353},[332,2179,2180],{"class":399},"ofRole",[332,2182,396],{"class":353},[332,2184,416],{"class":349},[332,2186,778],{"class":353},[332,2188,2189,2191,2193,2195,2197,2199,2202,2204,2206],{"class":334,"line":746},[332,2190,759],{"class":349},[332,2192,302],{"class":353},[332,2194,2152],{"class":366},[332,2196,393],{"class":349},[332,2198,396],{"class":353},[332,2200,2201],{"class":399},"ageBetween",[332,2203,396],{"class":353},[332,2205,416],{"class":349},[332,2207,778],{"class":353},[332,2209,2210,2212],{"class":334,"line":756},[332,2211,809],{"class":349},[332,2213,419],{"class":353},[2215,2216,2217],"tip",{},[279,2218,2219,2220,2222,2223,2226,2227,2230],{},"When a parameterless scope receives ",[283,2221,1597],{}," (e.g., ",[283,2224,2225],{},"?filter[verified]=false","), the scope is not applied. When a scope accepts multiple arguments, comma-separated values (",[283,2228,2229],{},"?filter[ageBetween]=18,30",") are spread as individual parameters into the scope function.",[304,2232,2234],{"id":2233},"trashed-filters-soft-deletes","Trashed Filters (Soft Deletes)",[279,2236,2237,2238,2244,2245,2248,2249,2252,2253,653],{},"If your model uses ",[299,2239,2242],{"href":2240,"rel":2241},"https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes",[1620],[283,2243,607],{}," (or provides ",[283,2246,2247],{},"withTrashed()"," and ",[283,2250,2251],{},"onlyTrashed()"," query methods), use ",[283,2254,593],{},[323,2256,2258],{"className":325,"code":2257,"language":327,"meta":328,"style":328},"import { AllowedFilter } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?filter[trashed]=with -> includes soft-deleted records (query.withTrashed())\n\u002F\u002F GET \u002Fusers?filter[trashed]=only -> returns only soft-deleted records (query.onlyTrashed())\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.trashed(),\n  ]);\n",[283,2259,2260,2280,2284,2289,2294,2312,2320,2328,2342],{"__ignoreMap":328},[332,2261,2262,2264,2266,2268,2270,2272,2274,2276,2278],{"class":334,"line":335},[332,2263,663],{"class":357},[332,2265,666],{"class":353},[332,2267,669],{"class":349},[332,2269,672],{"class":353},[332,2271,675],{"class":357},[332,2273,408],{"class":353},[332,2275,680],{"class":399},[332,2277,396],{"class":353},[332,2279,419],{"class":353},[332,2281,2282],{"class":334,"line":342},[332,2283,690],{"emptyLinePlaceholder":689},[332,2285,2286],{"class":334,"line":373},[332,2287,2288],{"class":338},"\u002F\u002F GET \u002Fusers?filter[trashed]=with -> includes soft-deleted records (query.withTrashed())\n",[332,2290,2291],{"class":334,"line":385},[332,2292,2293],{"class":338},"\u002F\u002F GET \u002Fusers?filter[trashed]=only -> returns only soft-deleted records (query.onlyTrashed())\n",[332,2295,2296,2298,2300,2302,2304,2306,2308,2310],{"class":334,"line":422},[332,2297,346],{"class":345},[332,2299,350],{"class":349},[332,2301,354],{"class":353},[332,2303,358],{"class":357},[332,2305,361],{"class":349},[332,2307,302],{"class":353},[332,2309,367],{"class":366},[332,2311,370],{"class":349},[332,2313,2314,2316,2318],{"class":334,"line":428},[332,2315,376],{"class":353},[332,2317,379],{"class":366},[332,2319,382],{"class":349},[332,2321,2322,2324,2326],{"class":334,"line":712},[332,2323,376],{"class":353},[332,2325,390],{"class":366},[332,2327,753],{"class":349},[332,2329,2330,2332,2334,2337,2340],{"class":334,"line":718},[332,2331,759],{"class":349},[332,2333,302],{"class":353},[332,2335,2336],{"class":366},"trashed",[332,2338,2339],{"class":349},"()",[332,2341,778],{"class":353},[332,2343,2344,2346],{"class":334,"line":737},[332,2345,809],{"class":349},[332,2347,419],{"class":353},[304,2349,2351],{"id":2350},"callback-custom-filters","Callback & Custom Filters",[636,2353,2355],{"id":2354},"callback-filter","Callback Filter",[279,2357,2358,2359,653],{},"For one-off custom filter logic, use ",[283,2360,2361],{},"AllowedFilter.callback()",[323,2363,2365],{"className":325,"code":2364,"language":327,"meta":328,"style":328},"import { AllowedFilter } from '@eienjs\u002Fadonisjs-api-query';\n\n\u002F\u002F GET \u002Fusers?filter[search]=john\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    AllowedFilter.callback('search', (query, value) => {\n      void query.where((subQuery) => {\n        void subQuery\n          .whereILike('name', `%${String(value)}%`)\n          .orWhereILike('email', `%${String(value)}%`);\n      });\n    }),\n  ]);\n",[283,2366,2367,2387,2391,2396,2414,2422,2430,2465,2490,2498,2540,2577,2586,2595],{"__ignoreMap":328},[332,2368,2369,2371,2373,2375,2377,2379,2381,2383,2385],{"class":334,"line":335},[332,2370,663],{"class":357},[332,2372,666],{"class":353},[332,2374,669],{"class":349},[332,2376,672],{"class":353},[332,2378,675],{"class":357},[332,2380,408],{"class":353},[332,2382,680],{"class":399},[332,2384,396],{"class":353},[332,2386,419],{"class":353},[332,2388,2389],{"class":334,"line":342},[332,2390,690],{"emptyLinePlaceholder":689},[332,2392,2393],{"class":334,"line":373},[332,2394,2395],{"class":338},"\u002F\u002F GET \u002Fusers?filter[search]=john\n",[332,2397,2398,2400,2402,2404,2406,2408,2410,2412],{"class":334,"line":385},[332,2399,346],{"class":345},[332,2401,350],{"class":349},[332,2403,354],{"class":353},[332,2405,358],{"class":357},[332,2407,361],{"class":349},[332,2409,302],{"class":353},[332,2411,367],{"class":366},[332,2413,370],{"class":349},[332,2415,2416,2418,2420],{"class":334,"line":422},[332,2417,376],{"class":353},[332,2419,379],{"class":366},[332,2421,382],{"class":349},[332,2423,2424,2426,2428],{"class":334,"line":428},[332,2425,376],{"class":353},[332,2427,390],{"class":366},[332,2429,753],{"class":349},[332,2431,2432,2434,2436,2439,2441,2443,2446,2448,2450,2452,2454,2456,2459,2461,2463],{"class":334,"line":712},[332,2433,759],{"class":349},[332,2435,302],{"class":353},[332,2437,2438],{"class":366},"callback",[332,2440,393],{"class":349},[332,2442,396],{"class":353},[332,2444,2445],{"class":399},"search",[332,2447,396],{"class":353},[332,2449,405],{"class":353},[332,2451,317],{"class":353},[332,2453,367],{"class":1718},[332,2455,405],{"class":353},[332,2457,2458],{"class":1718}," value",[332,2460,416],{"class":353},[332,2462,1723],{"class":345},[332,2464,1689],{"class":353},[332,2466,2467,2470,2472,2474,2477,2479,2481,2484,2486,2488],{"class":334,"line":718},[332,2468,2469],{"class":353},"      void",[332,2471,1733],{"class":349},[332,2473,302],{"class":353},[332,2475,2476],{"class":366},"where",[332,2478,393],{"class":1705},[332,2480,393],{"class":353},[332,2482,2483],{"class":1718},"subQuery",[332,2485,416],{"class":353},[332,2487,1723],{"class":345},[332,2489,1689],{"class":353},[332,2491,2492,2495],{"class":334,"line":737},[332,2493,2494],{"class":353},"        void",[332,2496,2497],{"class":349}," subQuery\n",[332,2499,2500,2503,2506,2508,2510,2512,2514,2516,2519,2521,2524,2527,2530,2533,2535,2538],{"class":334,"line":746},[332,2501,2502],{"class":353},"          .",[332,2504,2505],{"class":366},"whereILike",[332,2507,393],{"class":1705},[332,2509,396],{"class":353},[332,2511,400],{"class":399},[332,2513,396],{"class":353},[332,2515,405],{"class":353},[332,2517,2518],{"class":353}," `",[332,2520,825],{"class":399},[332,2522,2523],{"class":353},"${",[332,2525,2526],{"class":366},"String",[332,2528,2529],{"class":349},"(value)",[332,2531,2532],{"class":353},"}",[332,2534,825],{"class":399},[332,2536,2537],{"class":353},"`",[332,2539,1971],{"class":1705},[332,2541,2542,2544,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575],{"class":334,"line":756},[332,2543,2502],{"class":353},[332,2545,2546],{"class":366},"orWhereILike",[332,2548,393],{"class":1705},[332,2550,396],{"class":353},[332,2552,411],{"class":399},[332,2554,396],{"class":353},[332,2556,405],{"class":353},[332,2558,2518],{"class":353},[332,2560,825],{"class":399},[332,2562,2523],{"class":353},[332,2564,2526],{"class":366},[332,2566,2529],{"class":349},[332,2568,2532],{"class":353},[332,2570,825],{"class":399},[332,2572,2537],{"class":353},[332,2574,416],{"class":1705},[332,2576,419],{"class":353},[332,2578,2579,2582,2584],{"class":334,"line":781},[332,2580,2581],{"class":353},"      }",[332,2583,416],{"class":1705},[332,2585,419],{"class":353},[332,2587,2588,2591,2593],{"class":334,"line":806},[332,2589,2590],{"class":353},"    }",[332,2592,416],{"class":349},[332,2594,778],{"class":353},[332,2596,2597,2599],{"class":334,"line":975},[332,2598,809],{"class":349},[332,2600,419],{"class":353},[636,2602,2604],{"id":2603},"custom-filter-class","Custom Filter Class",[279,2606,2607,2608,2610,2611,2614,2615,2617],{},"For reusable filters across multiple models, implement the ",[283,2609,633],{}," interface and pass an instance to ",[283,2612,2613],{},"AllowedFilter.custom()",". See ",[299,2616,94],{"href":95}," for details.",[304,2619,2621],{"id":2620},"default-nullable-ignored-filter-values","Default, Nullable & Ignored Filter Values",[279,2623,2624,2625,2627],{},"Every ",[283,2626,458],{}," instance supports fluent modifier methods:",[323,2629,2631],{"className":325,"code":2630,"language":327,"meta":328,"style":328},"import { AllowedFilter } from '@eienjs\u002Fadonisjs-api-query';\n\nconst users = await User.query()\n  .withRequest(request)\n  .allowedFilters([\n    \u002F\u002F Apply a default filter value when `filter[status]` is omitted from the request:\n    AllowedFilter.exact('status').setDefault('active'),\n\n    \u002F\u002F Ignore specific values (e.g. 'all' or '' from a frontend dropdown):\n    AllowedFilter.exact('role').ignore('all', ''),\n\n    \u002F\u002F Allow filtering by `null` (WHERE deleted_at IS NULL):\n    AllowedFilter.exact('deletedAt').setNullable(true),\n  ]);\n",[283,2632,2633,2653,2657,2675,2683,2691,2696,2732,2736,2741,2782,2786,2791,2824],{"__ignoreMap":328},[332,2634,2635,2637,2639,2641,2643,2645,2647,2649,2651],{"class":334,"line":335},[332,2636,663],{"class":357},[332,2638,666],{"class":353},[332,2640,669],{"class":349},[332,2642,672],{"class":353},[332,2644,675],{"class":357},[332,2646,408],{"class":353},[332,2648,680],{"class":399},[332,2650,396],{"class":353},[332,2652,419],{"class":353},[332,2654,2655],{"class":334,"line":342},[332,2656,690],{"emptyLinePlaceholder":689},[332,2658,2659,2661,2663,2665,2667,2669,2671,2673],{"class":334,"line":373},[332,2660,346],{"class":345},[332,2662,350],{"class":349},[332,2664,354],{"class":353},[332,2666,358],{"class":357},[332,2668,361],{"class":349},[332,2670,302],{"class":353},[332,2672,367],{"class":366},[332,2674,370],{"class":349},[332,2676,2677,2679,2681],{"class":334,"line":385},[332,2678,376],{"class":353},[332,2680,379],{"class":366},[332,2682,382],{"class":349},[332,2684,2685,2687,2689],{"class":334,"line":422},[332,2686,376],{"class":353},[332,2688,390],{"class":366},[332,2690,753],{"class":349},[332,2692,2693],{"class":334,"line":428},[332,2694,2695],{"class":338},"    \u002F\u002F Apply a default filter value when `filter[status]` is omitted from the request:\n",[332,2697,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2719,2721,2723,2726,2728,2730],{"class":334,"line":712},[332,2699,759],{"class":349},[332,2701,302],{"class":353},[332,2703,764],{"class":366},[332,2705,393],{"class":349},[332,2707,396],{"class":353},[332,2709,771],{"class":399},[332,2711,396],{"class":353},[332,2713,416],{"class":349},[332,2715,302],{"class":353},[332,2717,2718],{"class":366},"setDefault",[332,2720,393],{"class":349},[332,2722,396],{"class":353},[332,2724,2725],{"class":399},"active",[332,2727,396],{"class":353},[332,2729,416],{"class":349},[332,2731,778],{"class":353},[332,2733,2734],{"class":334,"line":718},[332,2735,690],{"emptyLinePlaceholder":689},[332,2737,2738],{"class":334,"line":737},[332,2739,2740],{"class":338},"    \u002F\u002F Ignore specific values (e.g. 'all' or '' from a frontend dropdown):\n",[332,2742,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2764,2766,2768,2771,2773,2775,2778,2780],{"class":334,"line":746},[332,2744,759],{"class":349},[332,2746,302],{"class":353},[332,2748,764],{"class":366},[332,2750,393],{"class":349},[332,2752,396],{"class":353},[332,2754,1818],{"class":399},[332,2756,396],{"class":353},[332,2758,416],{"class":349},[332,2760,302],{"class":353},[332,2762,2763],{"class":366},"ignore",[332,2765,393],{"class":349},[332,2767,396],{"class":353},[332,2769,2770],{"class":399},"all",[332,2772,396],{"class":353},[332,2774,405],{"class":353},[332,2776,2777],{"class":353}," ''",[332,2779,416],{"class":349},[332,2781,778],{"class":353},[332,2783,2784],{"class":334,"line":756},[332,2785,690],{"emptyLinePlaceholder":689},[332,2787,2788],{"class":334,"line":781},[332,2789,2790],{"class":338},"    \u002F\u002F Allow filtering by `null` (WHERE deleted_at IS NULL):\n",[332,2792,2793,2795,2797,2799,2801,2803,2806,2808,2810,2812,2815,2817,2820,2822],{"class":334,"line":806},[332,2794,759],{"class":349},[332,2796,302],{"class":353},[332,2798,764],{"class":366},[332,2800,393],{"class":349},[332,2802,396],{"class":353},[332,2804,2805],{"class":399},"deletedAt",[332,2807,396],{"class":353},[332,2809,416],{"class":349},[332,2811,302],{"class":353},[332,2813,2814],{"class":366},"setNullable",[332,2816,393],{"class":349},[332,2818,2819],{"class":1965},"true",[332,2821,416],{"class":349},[332,2823,778],{"class":353},[332,2825,2826,2828],{"class":334,"line":975},[332,2827,809],{"class":349},[332,2829,419],{"class":353},[461,2831,2832,2842],{},[464,2833,2834],{},[467,2835,2836,2839],{},[470,2837,2838],{"align":472},"Modifier",[470,2840,2841],{"align":472},"Description",[478,2843,2844,2865,2875,2885,2905],{},[467,2845,2846,2851],{},[483,2847,2848],{"align":472},[283,2849,2850],{},".setDefault(value)",[483,2852,2853,2854,2857,2858,2861,2862,302],{"align":472},"Applies ",[283,2855,2856],{},"value"," when the filter is not present in the request URL. Passing ",[283,2859,2860],{},"null"," also enables ",[283,2863,2864],{},".setNullable(true)",[467,2866,2867,2872],{},[483,2868,2869],{"align":472},[283,2870,2871],{},".unsetDefault()",[483,2873,2874],{"align":472},"Removes a previously configured default value.",[467,2876,2877,2882],{},[483,2878,2879],{"align":472},[283,2880,2881],{},".ignore(...values)",[483,2883,2884],{"align":472},"Ignores any matching values (or strips them from array values). If all values are ignored, the filter is skipped.",[467,2886,2887,2892],{},[483,2888,2889],{"align":472},[283,2890,2891],{},".setNullable(boolean)",[483,2893,2894,2895,2897,2898,2900,2901,2904],{"align":472},"When ",[283,2896,2819],{},", allows ",[283,2899,2860],{}," filter values to execute ",[283,2902,2903],{},"query.whereNull(...)"," instead of skipping the filter.",[467,2906,2907,2912],{},[483,2908,2909],{"align":472},[283,2910,2911],{},".rule(vineSchema)",[483,2913,2914,2915,2918],{"align":472},"Attaches a ",[299,2916,2917],{"href":84},"VineJS validation schema"," to this specific filter.",[2920,2921,2922],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":328,"searchDepth":335,"depth":342,"links":2924},[2925,2926,2931,2932,2933,2934,2935,2939],{"id":306,"depth":342,"text":128},{"id":451,"depth":342,"text":452,"children":2927},[2928,2929,2930],{"id":638,"depth":373,"text":639},{"id":814,"depth":373,"text":815},{"id":1004,"depth":373,"text":1005},{"id":1312,"depth":342,"text":1313},{"id":1437,"depth":342,"text":1438},{"id":1608,"depth":342,"text":1609},{"id":2233,"depth":342,"text":2234},{"id":2350,"depth":342,"text":2351,"children":2936},[2937,2938],{"id":2354,"depth":373,"text":2355},{"id":2603,"depth":373,"text":2604},{"id":2620,"depth":342,"text":2621},"Filter Lucid queries using partial, exact, operator, scope, trashed, and callback filters.","md",{},{"icon":66},{"title":63,"description":2940},"zKqTBuoM8cJhS9ADhtPhsxWperx7sq0hZ0_TX9PKj3M",[2947,2949],{"title":52,"path":53,"stem":54,"description":2948,"icon":55,"children":-1},"Customize query parameter names, suffixes, and exception behavior in config\u002Fapiquery.ts.",{"title":68,"path":69,"stem":70,"description":2950,"icon":71,"children":-1},"Sort Lucid queries by single or multiple columns, aliases, default sorts, and custom callbacks.",{"id":2952,"extension":2953,"meta":2954,"packages":2955,"stem":2997,"__hash__":2998},"packages\u002Fdata\u002Fpackages.json","json",{},[2956,2963,2969,2974,2979,2985,2991],{"name":2957,"title":2958,"description":2959,"icon":86,"category":2960,"repo":2961,"version":2962,"docs":689},"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":2964,"title":2965,"description":2966,"icon":33,"category":2960,"repo":2967,"version":2968,"docs":689},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":2970,"title":2971,"description":2972,"icon":249,"category":2960,"repo":2240,"version":2973,"docs":689},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","1.0.2",{"name":2975,"title":195,"description":2976,"icon":196,"category":2960,"repo":2977,"version":2978,"docs":689},"adonisjs-simple-auth","Single API key authentication for AdonisJS v7 applications","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-simple-auth","2.1.0",{"name":2980,"title":2981,"description":2982,"icon":2983,"category":2960,"repo":2984,"docs":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS v7.","i-tabler-bug","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry",{"name":2986,"title":2987,"description":2988,"icon":141,"category":2989,"repo":2990,"docs":22},"eslint-config","ESLint Config","The EienJS ESLint config preset.","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config",{"name":2992,"title":2993,"description":2994,"icon":2995,"category":2989,"repo":2996,"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",1793868428915]