[{"data":1,"prerenderedAt":1578},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fqueries-and-filters":103,"\u002Fguides\u002Fqueries-and-filters-surround":1573},[4,9,31,87,98],{"title":5,"path":6,"stem":7,"icon":8},"Getting started","\u002Fgetting-started","01.getting-started","i-tabler-rocket",{"title":10,"icon":11,"path":12,"stem":13,"children":14,"page":30},"Concepts","i-tabler-code","\u002Fconcepts","02.concepts",[15,20,25],{"title":16,"path":17,"stem":18,"icon":19},"Architecture","\u002Fconcepts\u002Farchitecture","02.concepts\u002Farchitecture","i-tabler-sitemap",{"title":21,"path":22,"stem":23,"icon":24},"Metadata and registry","\u002Fconcepts\u002Fmetadata-and-registry","02.concepts\u002Fmetadata-and-registry","i-tabler-schema",{"title":26,"path":27,"stem":28,"icon":29},"Query Engine","\u002Fconcepts\u002Fquery-engine","02.concepts\u002Fquery-engine","i-tabler-engine",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"Guide","i-tabler-arrow-ramp-right","\u002Fguides","03.guides",[37,42,47,52,57,62,67,72,77,82],{"title":38,"path":39,"stem":40,"icon":41},"Audit Log","\u002Fguides\u002Faudit-log","03.guides\u002Faudit-log","i-tabler-history",{"title":43,"path":44,"stem":45,"icon":46},"Cursor pagination","\u002Fguides\u002Fcursor-pagination","03.guides\u002Fcursor-pagination","i-tabler-arrow-bar-to-down",{"title":48,"path":49,"stem":50,"icon":51},"Domain Events","\u002Fguides\u002Fdomain-events","03.guides\u002Fdomain-events","i-tabler-broadcast",{"title":53,"path":54,"stem":55,"icon":56},"Field visibility","\u002Fguides\u002Ffield-visibility","03.guides\u002Ffield-visibility","i-tabler-eye-off",{"title":58,"path":59,"stem":60,"icon":61},"Lifecycle hooks","\u002Fguides\u002Flifecycle-hooks","03.guides\u002Flifecycle-hooks","i-tabler-arrows-split",{"title":63,"path":64,"stem":65,"icon":66},"Production playground","\u002Fguides\u002Fplayground","03.guides\u002Fplayground","i-tabler-flask",{"title":68,"path":69,"stem":70,"icon":71},"Queries and filters","\u002Fguides\u002Fqueries-and-filters","03.guides\u002Fqueries-and-filters","i-tabler-filter",{"title":73,"path":74,"stem":75,"icon":76},"Relations","\u002Fguides\u002Frelations","03.guides\u002Frelations","i-tabler-link",{"title":78,"path":79,"stem":80,"icon":81},"Schema consistency","\u002Fguides\u002Fschema-consistency","03.guides\u002Fschema-consistency","i-tabler-database-search",{"title":83,"path":84,"stem":85,"icon":86},"Validation","\u002Fguides\u002Fvalidation","03.guides\u002Fvalidation","i-tabler-checkup-list",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":30},"Adapters","i-tabler-plug","\u002Fadapters","04.adapters",[93],{"title":94,"path":95,"stem":96,"icon":97},"Drizzle adapter","\u002Fadapters\u002Fdrizzle","04.adapters\u002Fdrizzle","i-simple-icons-drizzle",{"title":99,"path":100,"stem":101,"icon":102},"Current limitations","\u002Fcurrent-limitations","05.current-limitations","i-tabler-circle-dashed-x",{"id":104,"title":68,"body":105,"description":1566,"extension":1567,"links":1568,"meta":1569,"navigation":1570,"path":69,"seo":1571,"stem":70,"__hash__":1572},"docs\u002F03.guides\u002Fqueries-and-filters.md",{"type":106,"value":107,"toc":1556},"minimark",[108,112,117,245,252,256,303,424,431,598,602,973,987,991,1088,1102,1106,1195,1199,1335,1342,1349,1353,1481,1485,1491,1539,1552],[109,110,111],"p",{},"Queries use logical metadata field names. The adapter validates those fields before translating the query.",[113,114,116],"h2",{"id":115},"query-parameters","Query parameters",[118,119,124],"pre",{"className":120,"code":121,"language":122,"meta":123,"style":123},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","interface QueryParams {\n  where?: QueryFilter\n  limit?: number\n  offset?: number\n  orderBy?: {\n    field: string\n    direction: 'asc' | 'desc'\n  }[]\n}\n","ts","",[125,126,127,144,157,168,178,188,200,229,239],"code",{"__ignoreMap":123},[128,129,132,136,140],"span",{"class":130,"line":131},"line",1,[128,133,135],{"class":134},"spNyl","interface",[128,137,139],{"class":138},"sBMFI"," QueryParams",[128,141,143],{"class":142},"sMK4o"," {\n",[128,145,147,151,154],{"class":130,"line":146},2,[128,148,150],{"class":149},"swJcz","  where",[128,152,153],{"class":142},"?:",[128,155,156],{"class":138}," QueryFilter\n",[128,158,160,163,165],{"class":130,"line":159},3,[128,161,162],{"class":149},"  limit",[128,164,153],{"class":142},[128,166,167],{"class":138}," number\n",[128,169,171,174,176],{"class":130,"line":170},4,[128,172,173],{"class":149},"  offset",[128,175,153],{"class":142},[128,177,167],{"class":138},[128,179,181,184,186],{"class":130,"line":180},5,[128,182,183],{"class":149},"  orderBy",[128,185,153],{"class":142},[128,187,143],{"class":142},[128,189,191,194,197],{"class":130,"line":190},6,[128,192,193],{"class":149},"    field",[128,195,196],{"class":142},":",[128,198,199],{"class":138}," string\n",[128,201,203,206,208,211,215,218,221,223,226],{"class":130,"line":202},7,[128,204,205],{"class":149},"    direction",[128,207,196],{"class":142},[128,209,210],{"class":142}," '",[128,212,214],{"class":213},"sfazB","asc",[128,216,217],{"class":142},"'",[128,219,220],{"class":142}," |",[128,222,210],{"class":142},[128,224,225],{"class":213},"desc",[128,227,228],{"class":142},"'\n",[128,230,232,235],{"class":130,"line":231},8,[128,233,234],{"class":142},"  }",[128,236,238],{"class":237},"sTEyZ","[]\n",[128,240,242],{"class":130,"line":241},9,[128,243,244],{"class":142},"}\n",[109,246,247,248,251],{},"The Query Engine adds ",[125,249,250],{},"populate?: string[]"," for explicit relation loading.",[113,253,255],{"id":254},"conditions","Conditions",[118,257,259],{"className":120,"code":258,"language":122,"meta":123,"style":123},"interface FilterCondition {\n  field: string\n  operator: FilterOperator\n  value?: unknown\n}\n",[125,260,261,270,279,289,299],{"__ignoreMap":123},[128,262,263,265,268],{"class":130,"line":131},[128,264,135],{"class":134},[128,266,267],{"class":138}," FilterCondition",[128,269,143],{"class":142},[128,271,272,275,277],{"class":130,"line":146},[128,273,274],{"class":149},"  field",[128,276,196],{"class":142},[128,278,199],{"class":138},[128,280,281,284,286],{"class":130,"line":159},[128,282,283],{"class":149},"  operator",[128,285,196],{"class":142},[128,287,288],{"class":138}," FilterOperator\n",[128,290,291,294,296],{"class":130,"line":170},[128,292,293],{"class":149},"  value",[128,295,153],{"class":142},[128,297,298],{"class":138}," unknown\n",[128,300,301],{"class":130,"line":180},[128,302,244],{"class":142},[304,305,306,322],"table",{},[307,308,309],"thead",{},[310,311,312,316,319],"tr",{},[313,314,315],"th",{},"Operator",[313,317,318],{},"Translation",[313,320,321],{},"Value",[323,324,325,339,351,364,376,393,408],"tbody",{},[310,326,327,333,336],{},[328,329,330],"td",{},[125,331,332],{},"eq",[328,334,335],{},"equals",[328,337,338],{},"scalar",[310,340,341,346,349],{},[328,342,343],{},[125,344,345],{},"ne",[328,347,348],{},"not equal",[328,350,338],{},[310,352,353,358,361],{},[328,354,355],{},[125,356,357],{},"in",[328,359,360],{},"in array",[328,362,363],{},"non-empty array",[310,365,366,371,374],{},[328,367,368],{},[125,369,370],{},"notIn",[328,372,373],{},"not in array",[328,375,363],{},[310,377,378,387,390],{},[328,379,380,383,384],{},[125,381,382],{},"gt",", ",[125,385,386],{},"gte",[328,388,389],{},"greater comparisons",[328,391,392],{},"comparable",[310,394,395,403,406],{},[328,396,397,383,400],{},[125,398,399],{},"lt",[125,401,402],{},"lte",[328,404,405],{},"lower comparisons",[328,407,392],{},[310,409,410,415,418],{},[328,411,412],{},[125,413,414],{},"isNull",[328,416,417],{},"null check",[328,419,420,423],{},[125,421,422],{},"false"," means IS NOT NULL; otherwise IS NULL",[109,425,426,427,430],{},"Conditions declared together are combined with ",[125,428,429],{},"AND",".",[118,432,434],{"className":120,"code":433,"language":122,"meta":123,"style":123},"const activeAdmins = await engine.findMany('users', {\n  where: {\n    conditions: [\n      { field: 'active', operator: 'eq', value: true },\n      { field: 'role', operator: 'eq', value: 'admin' }\n    ]\n  }\n})\n",[125,435,436,475,483,493,537,580,585,590],{"__ignoreMap":123},[128,437,438,441,444,447,451,454,456,460,463,465,468,470,473],{"class":130,"line":131},[128,439,440],{"class":134},"const",[128,442,443],{"class":237}," activeAdmins ",[128,445,446],{"class":142},"=",[128,448,450],{"class":449},"s7zQu"," await",[128,452,453],{"class":237}," engine",[128,455,430],{"class":142},[128,457,459],{"class":458},"s2Zo4","findMany",[128,461,462],{"class":237},"(",[128,464,217],{"class":142},[128,466,467],{"class":213},"users",[128,469,217],{"class":142},[128,471,472],{"class":142},",",[128,474,143],{"class":142},[128,476,477,479,481],{"class":130,"line":146},[128,478,150],{"class":149},[128,480,196],{"class":142},[128,482,143],{"class":142},[128,484,485,488,490],{"class":130,"line":159},[128,486,487],{"class":149},"    conditions",[128,489,196],{"class":142},[128,491,492],{"class":237}," [\n",[128,494,495,498,501,503,505,508,510,512,515,517,519,521,523,525,528,530,534],{"class":130,"line":170},[128,496,497],{"class":142},"      {",[128,499,500],{"class":149}," field",[128,502,196],{"class":142},[128,504,210],{"class":142},[128,506,507],{"class":213},"active",[128,509,217],{"class":142},[128,511,472],{"class":142},[128,513,514],{"class":149}," operator",[128,516,196],{"class":142},[128,518,210],{"class":142},[128,520,332],{"class":213},[128,522,217],{"class":142},[128,524,472],{"class":142},[128,526,527],{"class":149}," value",[128,529,196],{"class":142},[128,531,533],{"class":532},"sfNiH"," true",[128,535,536],{"class":142}," },\n",[128,538,539,541,543,545,547,550,552,554,556,558,560,562,564,566,568,570,572,575,577],{"class":130,"line":180},[128,540,497],{"class":142},[128,542,500],{"class":149},[128,544,196],{"class":142},[128,546,210],{"class":142},[128,548,549],{"class":213},"role",[128,551,217],{"class":142},[128,553,472],{"class":142},[128,555,514],{"class":149},[128,557,196],{"class":142},[128,559,210],{"class":142},[128,561,332],{"class":213},[128,563,217],{"class":142},[128,565,472],{"class":142},[128,567,527],{"class":149},[128,569,196],{"class":142},[128,571,210],{"class":142},[128,573,574],{"class":213},"admin",[128,576,217],{"class":142},[128,578,579],{"class":142}," }\n",[128,581,582],{"class":130,"line":190},[128,583,584],{"class":237},"    ]\n",[128,586,587],{"class":130,"line":202},[128,588,589],{"class":142},"  }\n",[128,591,592,595],{"class":130,"line":231},[128,593,594],{"class":142},"}",[128,596,597],{"class":237},")\n",[113,599,601],{"id":600},"boolean-groups","Boolean groups",[118,603,605],{"className":120,"code":604,"language":122,"meta":123,"style":123},"const users = await engine.findMany('users', {\n  where: {\n    and: [\n      {\n        conditions: [\n          { field: 'active', operator: 'eq', value: true }\n        ]\n      },\n      {\n        or: [\n          {\n            conditions: [\n              { field: 'role', operator: 'eq', value: 'admin' }\n            ]\n          },\n          {\n            conditions: [\n              { field: 'role', operator: 'eq', value: 'owner' }\n            ]\n          }\n        ]\n      }\n    ],\n    not: {\n      conditions: [\n        { field: 'status', operator: 'eq', value: 'suspended' }\n      ]\n    }\n  }\n})\n",[125,606,607,636,644,653,658,667,704,709,714,718,728,734,744,786,792,798,803,812,854,859,865,870,876,885,895,905,949,955,961,966],{"__ignoreMap":123},[128,608,609,611,614,616,618,620,622,624,626,628,630,632,634],{"class":130,"line":131},[128,610,440],{"class":134},[128,612,613],{"class":237}," users ",[128,615,446],{"class":142},[128,617,450],{"class":449},[128,619,453],{"class":237},[128,621,430],{"class":142},[128,623,459],{"class":458},[128,625,462],{"class":237},[128,627,217],{"class":142},[128,629,467],{"class":213},[128,631,217],{"class":142},[128,633,472],{"class":142},[128,635,143],{"class":142},[128,637,638,640,642],{"class":130,"line":146},[128,639,150],{"class":149},[128,641,196],{"class":142},[128,643,143],{"class":142},[128,645,646,649,651],{"class":130,"line":159},[128,647,648],{"class":149},"    and",[128,650,196],{"class":142},[128,652,492],{"class":237},[128,654,655],{"class":130,"line":170},[128,656,657],{"class":142},"      {\n",[128,659,660,663,665],{"class":130,"line":180},[128,661,662],{"class":149},"        conditions",[128,664,196],{"class":142},[128,666,492],{"class":237},[128,668,669,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702],{"class":130,"line":190},[128,670,671],{"class":142},"          {",[128,673,500],{"class":149},[128,675,196],{"class":142},[128,677,210],{"class":142},[128,679,507],{"class":213},[128,681,217],{"class":142},[128,683,472],{"class":142},[128,685,514],{"class":149},[128,687,196],{"class":142},[128,689,210],{"class":142},[128,691,332],{"class":213},[128,693,217],{"class":142},[128,695,472],{"class":142},[128,697,527],{"class":149},[128,699,196],{"class":142},[128,701,533],{"class":532},[128,703,579],{"class":142},[128,705,706],{"class":130,"line":202},[128,707,708],{"class":237},"        ]\n",[128,710,711],{"class":130,"line":231},[128,712,713],{"class":142},"      },\n",[128,715,716],{"class":130,"line":241},[128,717,657],{"class":142},[128,719,721,724,726],{"class":130,"line":720},10,[128,722,723],{"class":149},"        or",[128,725,196],{"class":142},[128,727,492],{"class":237},[128,729,731],{"class":130,"line":730},11,[128,732,733],{"class":142},"          {\n",[128,735,737,740,742],{"class":130,"line":736},12,[128,738,739],{"class":149},"            conditions",[128,741,196],{"class":142},[128,743,492],{"class":237},[128,745,747,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784],{"class":130,"line":746},13,[128,748,749],{"class":142},"              {",[128,751,500],{"class":149},[128,753,196],{"class":142},[128,755,210],{"class":142},[128,757,549],{"class":213},[128,759,217],{"class":142},[128,761,472],{"class":142},[128,763,514],{"class":149},[128,765,196],{"class":142},[128,767,210],{"class":142},[128,769,332],{"class":213},[128,771,217],{"class":142},[128,773,472],{"class":142},[128,775,527],{"class":149},[128,777,196],{"class":142},[128,779,210],{"class":142},[128,781,574],{"class":213},[128,783,217],{"class":142},[128,785,579],{"class":142},[128,787,789],{"class":130,"line":788},14,[128,790,791],{"class":237},"            ]\n",[128,793,795],{"class":130,"line":794},15,[128,796,797],{"class":142},"          },\n",[128,799,801],{"class":130,"line":800},16,[128,802,733],{"class":142},[128,804,806,808,810],{"class":130,"line":805},17,[128,807,739],{"class":149},[128,809,196],{"class":142},[128,811,492],{"class":237},[128,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,850,852],{"class":130,"line":814},18,[128,816,749],{"class":142},[128,818,500],{"class":149},[128,820,196],{"class":142},[128,822,210],{"class":142},[128,824,549],{"class":213},[128,826,217],{"class":142},[128,828,472],{"class":142},[128,830,514],{"class":149},[128,832,196],{"class":142},[128,834,210],{"class":142},[128,836,332],{"class":213},[128,838,217],{"class":142},[128,840,472],{"class":142},[128,842,527],{"class":149},[128,844,196],{"class":142},[128,846,210],{"class":142},[128,848,849],{"class":213},"owner",[128,851,217],{"class":142},[128,853,579],{"class":142},[128,855,857],{"class":130,"line":856},19,[128,858,791],{"class":237},[128,860,862],{"class":130,"line":861},20,[128,863,864],{"class":142},"          }\n",[128,866,868],{"class":130,"line":867},21,[128,869,708],{"class":237},[128,871,873],{"class":130,"line":872},22,[128,874,875],{"class":142},"      }\n",[128,877,879,882],{"class":130,"line":878},23,[128,880,881],{"class":237},"    ]",[128,883,884],{"class":142},",\n",[128,886,888,891,893],{"class":130,"line":887},24,[128,889,890],{"class":149},"    not",[128,892,196],{"class":142},[128,894,143],{"class":142},[128,896,898,901,903],{"class":130,"line":897},25,[128,899,900],{"class":149},"      conditions",[128,902,196],{"class":142},[128,904,492],{"class":237},[128,906,908,911,913,915,917,920,922,924,926,928,930,932,934,936,938,940,942,945,947],{"class":130,"line":907},26,[128,909,910],{"class":142},"        {",[128,912,500],{"class":149},[128,914,196],{"class":142},[128,916,210],{"class":142},[128,918,919],{"class":213},"status",[128,921,217],{"class":142},[128,923,472],{"class":142},[128,925,514],{"class":149},[128,927,196],{"class":142},[128,929,210],{"class":142},[128,931,332],{"class":213},[128,933,217],{"class":142},[128,935,472],{"class":142},[128,937,527],{"class":149},[128,939,196],{"class":142},[128,941,210],{"class":142},[128,943,944],{"class":213},"suspended",[128,946,217],{"class":142},[128,948,579],{"class":142},[128,950,952],{"class":130,"line":951},27,[128,953,954],{"class":237},"      ]\n",[128,956,958],{"class":130,"line":957},28,[128,959,960],{"class":142},"    }\n",[128,962,964],{"class":130,"line":963},29,[128,965,589],{"class":142},[128,967,969,971],{"class":130,"line":968},30,[128,970,594],{"class":142},[128,972,597],{"class":237},[109,974,975,976,383,979,982,983,986],{},"Nested ",[125,977,978],{},"and",[125,980,981],{},"or",", and ",[125,984,985],{},"not"," groups compile recursively.",[113,988,990],{"id":989},"collection-operators","Collection operators",[118,992,994],{"className":120,"code":993,"language":122,"meta":123,"style":123},"{\n  conditions: [\n    {\n      field: 'id',\n      operator: 'in',\n      value: ['user-1', 'user-2']\n    }\n  ]\n}\n",[125,995,996,1001,1010,1015,1031,1046,1075,1079,1084],{"__ignoreMap":123},[128,997,998],{"class":130,"line":131},[128,999,1000],{"class":142},"{\n",[128,1002,1003,1006,1008],{"class":130,"line":146},[128,1004,1005],{"class":138},"  conditions",[128,1007,196],{"class":142},[128,1009,492],{"class":149},[128,1011,1012],{"class":130,"line":159},[128,1013,1014],{"class":142},"    {\n",[128,1016,1017,1020,1022,1024,1027,1029],{"class":130,"line":170},[128,1018,1019],{"class":149},"      field",[128,1021,196],{"class":142},[128,1023,210],{"class":142},[128,1025,1026],{"class":213},"id",[128,1028,217],{"class":142},[128,1030,884],{"class":142},[128,1032,1033,1036,1038,1040,1042,1044],{"class":130,"line":180},[128,1034,1035],{"class":149},"      operator",[128,1037,196],{"class":142},[128,1039,210],{"class":142},[128,1041,357],{"class":213},[128,1043,217],{"class":142},[128,1045,884],{"class":142},[128,1047,1048,1051,1053,1056,1058,1061,1063,1065,1067,1070,1072],{"class":130,"line":190},[128,1049,1050],{"class":149},"      value",[128,1052,196],{"class":142},[128,1054,1055],{"class":149}," [",[128,1057,217],{"class":142},[128,1059,1060],{"class":213},"user-1",[128,1062,217],{"class":142},[128,1064,472],{"class":142},[128,1066,210],{"class":142},[128,1068,1069],{"class":213},"user-2",[128,1071,217],{"class":142},[128,1073,1074],{"class":149},"]\n",[128,1076,1077],{"class":130,"line":202},[128,1078,960],{"class":142},[128,1080,1081],{"class":130,"line":231},[128,1082,1083],{"class":149},"  ]\n",[128,1085,1086],{"class":130,"line":241},[128,1087,244],{"class":142},[1089,1090,1094],"callout",{"color":1091,"icon":1092,"variant":1093},"warning","i-tabler-alert-triangle","subtle",[109,1095,1096,1098,1099,1101],{},[125,1097,357],{}," and ",[125,1100,370],{}," require arrays containing at least one value. Invalid inputs are rejected before SQL execution.",[113,1103,1105],{"id":1104},"null-checks","Null checks",[118,1107,1109],{"className":120,"code":1108,"language":122,"meta":123,"style":123},"\u002F\u002F IS NULL\n{ field: 'deletedAt', operator: 'isNull' }\n\n\u002F\u002F IS NOT NULL\n{ field: 'deletedAt', operator: 'isNull', value: false }\n",[125,1110,1111,1117,1147,1153,1158],{"__ignoreMap":123},[128,1112,1113],{"class":130,"line":131},[128,1114,1116],{"class":1115},"sHwdD","\u002F\u002F IS NULL\n",[128,1118,1119,1122,1124,1126,1128,1131,1133,1135,1137,1139,1141,1143,1145],{"class":130,"line":146},[128,1120,1121],{"class":142},"{",[128,1123,500],{"class":138},[128,1125,196],{"class":142},[128,1127,210],{"class":142},[128,1129,1130],{"class":213},"deletedAt",[128,1132,217],{"class":142},[128,1134,472],{"class":142},[128,1136,514],{"class":138},[128,1138,196],{"class":142},[128,1140,210],{"class":142},[128,1142,414],{"class":213},[128,1144,217],{"class":142},[128,1146,579],{"class":142},[128,1148,1149],{"class":130,"line":159},[128,1150,1152],{"emptyLinePlaceholder":1151},true,"\n",[128,1154,1155],{"class":130,"line":170},[128,1156,1157],{"class":1115},"\u002F\u002F IS NOT NULL\n",[128,1159,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1193],{"class":130,"line":180},[128,1161,1121],{"class":142},[128,1163,500],{"class":138},[128,1165,196],{"class":142},[128,1167,210],{"class":142},[128,1169,1130],{"class":213},[128,1171,217],{"class":142},[128,1173,472],{"class":142},[128,1175,514],{"class":138},[128,1177,196],{"class":142},[128,1179,210],{"class":142},[128,1181,414],{"class":213},[128,1183,217],{"class":142},[128,1185,472],{"class":142},[128,1187,527],{"class":138},[128,1189,196],{"class":142},[128,1191,1192],{"class":532}," false",[128,1194,579],{"class":142},[113,1196,1198],{"id":1197},"sorting-and-offset-pagination","Sorting and offset pagination",[118,1200,1202],{"className":120,"code":1201,"language":122,"meta":123,"style":123},"const page = await engine.findMany('users', {\n  orderBy: [\n    { field: 'createdAt', direction: 'desc' },\n    { field: 'email', direction: 'asc' }\n  ],\n  limit: 25,\n  offset: 50\n})\n",[125,1203,1204,1233,1241,1272,1301,1308,1320,1329],{"__ignoreMap":123},[128,1205,1206,1208,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231],{"class":130,"line":131},[128,1207,440],{"class":134},[128,1209,1210],{"class":237}," page ",[128,1212,446],{"class":142},[128,1214,450],{"class":449},[128,1216,453],{"class":237},[128,1218,430],{"class":142},[128,1220,459],{"class":458},[128,1222,462],{"class":237},[128,1224,217],{"class":142},[128,1226,467],{"class":213},[128,1228,217],{"class":142},[128,1230,472],{"class":142},[128,1232,143],{"class":142},[128,1234,1235,1237,1239],{"class":130,"line":146},[128,1236,183],{"class":149},[128,1238,196],{"class":142},[128,1240,492],{"class":237},[128,1242,1243,1246,1248,1250,1252,1255,1257,1259,1262,1264,1266,1268,1270],{"class":130,"line":159},[128,1244,1245],{"class":142},"    {",[128,1247,500],{"class":149},[128,1249,196],{"class":142},[128,1251,210],{"class":142},[128,1253,1254],{"class":213},"createdAt",[128,1256,217],{"class":142},[128,1258,472],{"class":142},[128,1260,1261],{"class":149}," direction",[128,1263,196],{"class":142},[128,1265,210],{"class":142},[128,1267,225],{"class":213},[128,1269,217],{"class":142},[128,1271,536],{"class":142},[128,1273,1274,1276,1278,1280,1282,1285,1287,1289,1291,1293,1295,1297,1299],{"class":130,"line":170},[128,1275,1245],{"class":142},[128,1277,500],{"class":149},[128,1279,196],{"class":142},[128,1281,210],{"class":142},[128,1283,1284],{"class":213},"email",[128,1286,217],{"class":142},[128,1288,472],{"class":142},[128,1290,1261],{"class":149},[128,1292,196],{"class":142},[128,1294,210],{"class":142},[128,1296,214],{"class":213},[128,1298,217],{"class":142},[128,1300,579],{"class":142},[128,1302,1303,1306],{"class":130,"line":180},[128,1304,1305],{"class":237},"  ]",[128,1307,884],{"class":142},[128,1309,1310,1312,1314,1318],{"class":130,"line":190},[128,1311,162],{"class":149},[128,1313,196],{"class":142},[128,1315,1317],{"class":1316},"sbssI"," 25",[128,1319,884],{"class":142},[128,1321,1322,1324,1326],{"class":130,"line":202},[128,1323,173],{"class":149},[128,1325,196],{"class":142},[128,1327,1328],{"class":1316}," 50\n",[128,1330,1331,1333],{"class":130,"line":231},[128,1332,594],{"class":142},[128,1334,597],{"class":237},[109,1336,1337,1338,1341],{},"A limit or offset below zero is rejected. ",[125,1339,1340],{},"limit: 0"," is valid.",[109,1343,1344,1345,430],{},"For large or frequently changing datasets, prefer\n",[1346,1347,1348],"a",{"href":44},"cursor pagination",[113,1350,1352],{"id":1351},"reusable-filters","Reusable filters",[118,1354,1356],{"className":120,"code":1355,"language":122,"meta":123,"style":123},"import type { QueryFilter } from '@opensya\u002Fpersistence'\n\nexport function byId(id: string): QueryFilter {\n  return {\n    conditions: [\n      { field: 'id', operator: 'eq', value: id }\n    ]\n  }\n}\n",[125,1357,1358,1385,1389,1417,1424,1432,1469,1473,1477],{"__ignoreMap":123},[128,1359,1360,1363,1366,1369,1372,1375,1378,1380,1383],{"class":130,"line":131},[128,1361,1362],{"class":449},"import",[128,1364,1365],{"class":449}," type",[128,1367,1368],{"class":142}," {",[128,1370,1371],{"class":237}," QueryFilter",[128,1373,1374],{"class":142}," }",[128,1376,1377],{"class":449}," from",[128,1379,210],{"class":142},[128,1381,1382],{"class":213},"@opensya\u002Fpersistence",[128,1384,228],{"class":142},[128,1386,1387],{"class":130,"line":146},[128,1388,1152],{"emptyLinePlaceholder":1151},[128,1390,1391,1394,1397,1400,1402,1405,1407,1410,1413,1415],{"class":130,"line":159},[128,1392,1393],{"class":449},"export",[128,1395,1396],{"class":134}," function",[128,1398,1399],{"class":458}," byId",[128,1401,462],{"class":142},[128,1403,1026],{"class":1404},"sHdIc",[128,1406,196],{"class":142},[128,1408,1409],{"class":138}," string",[128,1411,1412],{"class":142},"):",[128,1414,1371],{"class":138},[128,1416,143],{"class":142},[128,1418,1419,1422],{"class":130,"line":170},[128,1420,1421],{"class":449},"  return",[128,1423,143],{"class":142},[128,1425,1426,1428,1430],{"class":130,"line":180},[128,1427,487],{"class":149},[128,1429,196],{"class":142},[128,1431,492],{"class":149},[128,1433,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1467],{"class":130,"line":190},[128,1435,497],{"class":142},[128,1437,500],{"class":149},[128,1439,196],{"class":142},[128,1441,210],{"class":142},[128,1443,1026],{"class":213},[128,1445,217],{"class":142},[128,1447,472],{"class":142},[128,1449,514],{"class":149},[128,1451,196],{"class":142},[128,1453,210],{"class":142},[128,1455,332],{"class":213},[128,1457,217],{"class":142},[128,1459,472],{"class":142},[128,1461,527],{"class":149},[128,1463,196],{"class":142},[128,1465,1466],{"class":237}," id",[128,1468,579],{"class":142},[128,1470,1471],{"class":130,"line":202},[128,1472,584],{"class":149},[128,1474,1475],{"class":130,"line":231},[128,1476,589],{"class":142},[128,1478,1479],{"class":130,"line":241},[128,1480,244],{"class":142},[113,1482,1484],{"id":1483},"safe-mutations","Safe mutations",[109,1486,1487,1490],{},[125,1488,1489],{},"hasFilterConstraints()"," recursively checks whether a filter contains an actual condition. Update and delete operations reject ineffective filters at both engine and adapter levels.",[118,1492,1494],{"className":120,"code":1493,"language":122,"meta":123,"style":123},"await engine.updateMany('users', {}, { active: false })\n\u002F\u002F UnsafeMutationError\n",[125,1495,1496,1534],{"__ignoreMap":123},[128,1497,1498,1501,1503,1505,1508,1510,1512,1514,1516,1518,1521,1523,1526,1528,1530,1532],{"class":130,"line":131},[128,1499,1500],{"class":449},"await",[128,1502,453],{"class":237},[128,1504,430],{"class":142},[128,1506,1507],{"class":458},"updateMany",[128,1509,462],{"class":237},[128,1511,217],{"class":142},[128,1513,467],{"class":213},[128,1515,217],{"class":142},[128,1517,472],{"class":142},[128,1519,1520],{"class":142}," {},",[128,1522,1368],{"class":142},[128,1524,1525],{"class":149}," active",[128,1527,196],{"class":142},[128,1529,1192],{"class":532},[128,1531,1374],{"class":142},[128,1533,597],{"class":237},[128,1535,1536],{"class":130,"line":146},[128,1537,1538],{"class":1115},"\u002F\u002F UnsafeMutationError\n",[1089,1540,1543],{"color":1541,"icon":1542,"variant":1093},"success","i-tabler-shield-check",[109,1544,1545,1546,1548,1549,1551],{},"An empty ",[125,1547,254],{}," array, empty nested groups, or a ",[125,1550,985],{}," containing no condition does not count as a safe filter.",[1553,1554,1555],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":123,"searchDepth":131,"depth":146,"links":1557},[1558,1559,1560,1561,1562,1563,1564,1565],{"id":115,"depth":146,"text":116},{"id":254,"depth":146,"text":255},{"id":600,"depth":146,"text":601},{"id":989,"depth":146,"text":990},{"id":1104,"depth":146,"text":1105},{"id":1197,"depth":146,"text":1198},{"id":1351,"depth":146,"text":1352},{"id":1483,"depth":146,"text":1484},"Compose database-independent constraints, sorting, offset and cursor pagination.","md",null,{},{"icon":71},{"title":68,"description":1566},"vO9XNxbAvGJKytJtCMBGwMbrUXDv_WL6shotTqJJnjU",[1574,1576],{"title":63,"path":64,"stem":65,"description":1575,"icon":66,"children":-1},"Exercise the built package against an isolated PostgreSQL database.",{"title":73,"path":74,"stem":75,"description":1577,"icon":76,"children":-1},"Declare direct relationships and load them explicitly in batches.",1783784236218]