[{"data":1,"prerenderedAt":1014},["ShallowReactive",2],{"navigation":3,"\u002Fconcepts\u002Fquery-engine":103,"\u002Fconcepts\u002Fquery-engine-surround":1009},[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":26,"body":105,"description":1002,"extension":1003,"links":1004,"meta":1005,"navigation":1006,"path":27,"seo":1007,"stem":28,"__hash__":1008},"docs\u002F02.concepts\u002Fquery-engine.md",{"type":106,"value":107,"toc":995},"minimark",[108,116,121,358,361,365,559,565,677,681,718,724,728,735,922,925,929,988,991],[109,110,111,115],"p",{},[112,113,114],"code",{},"QueryEngine"," is the application-facing runtime. It coordinates the registry,\nadapter, validators, hooks, serializer, audit manager and domain-event outbox.",[117,118,120],"h2",{"id":119},"reads","Reads",[122,123,128],"pre",{"className":124,"code":125,"language":126,"meta":127,"style":127},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const users = await engine.findMany('users', {\n  where,\n  orderBy: [{ field: 'createdAt', direction: 'desc' }],\n  limit: 20,\n  populate: ['teams'],\n  context: { user: actor }\n})\n\nconst user = await engine.findOne('users', { where: byId(userId) })\n","ts","",[112,129,130,179,188,239,253,274,296,305,312],{"__ignoreMap":127},[131,132,135,139,143,147,151,154,157,161,164,167,171,173,176],"span",{"class":133,"line":134},"line",1,[131,136,138],{"class":137},"spNyl","const",[131,140,142],{"class":141},"sTEyZ"," users ",[131,144,146],{"class":145},"sMK4o","=",[131,148,150],{"class":149},"s7zQu"," await",[131,152,153],{"class":141}," engine",[131,155,156],{"class":145},".",[131,158,160],{"class":159},"s2Zo4","findMany",[131,162,163],{"class":141},"(",[131,165,166],{"class":145},"'",[131,168,170],{"class":169},"sfazB","users",[131,172,166],{"class":145},[131,174,175],{"class":145},",",[131,177,178],{"class":145}," {\n",[131,180,182,185],{"class":133,"line":181},2,[131,183,184],{"class":141},"  where",[131,186,187],{"class":145},",\n",[131,189,191,195,198,201,204,207,209,212,215,217,219,222,224,226,229,231,234,237],{"class":133,"line":190},3,[131,192,194],{"class":193},"swJcz","  orderBy",[131,196,197],{"class":145},":",[131,199,200],{"class":141}," [",[131,202,203],{"class":145},"{",[131,205,206],{"class":193}," field",[131,208,197],{"class":145},[131,210,211],{"class":145}," '",[131,213,214],{"class":169},"createdAt",[131,216,166],{"class":145},[131,218,175],{"class":145},[131,220,221],{"class":193}," direction",[131,223,197],{"class":145},[131,225,211],{"class":145},[131,227,228],{"class":169},"desc",[131,230,166],{"class":145},[131,232,233],{"class":145}," }",[131,235,236],{"class":141},"]",[131,238,187],{"class":145},[131,240,242,245,247,251],{"class":133,"line":241},4,[131,243,244],{"class":193},"  limit",[131,246,197],{"class":145},[131,248,250],{"class":249},"sbssI"," 20",[131,252,187],{"class":145},[131,254,256,259,261,263,265,268,270,272],{"class":133,"line":255},5,[131,257,258],{"class":193},"  populate",[131,260,197],{"class":145},[131,262,200],{"class":141},[131,264,166],{"class":145},[131,266,267],{"class":169},"teams",[131,269,166],{"class":145},[131,271,236],{"class":141},[131,273,187],{"class":145},[131,275,277,280,282,285,288,290,293],{"class":133,"line":276},6,[131,278,279],{"class":193},"  context",[131,281,197],{"class":145},[131,283,284],{"class":145}," {",[131,286,287],{"class":193}," user",[131,289,197],{"class":145},[131,291,292],{"class":141}," actor ",[131,294,295],{"class":145},"}\n",[131,297,299,302],{"class":133,"line":298},7,[131,300,301],{"class":145},"}",[131,303,304],{"class":141},")\n",[131,306,308],{"class":133,"line":307},8,[131,309,311],{"emptyLinePlaceholder":310},true,"\n",[131,313,315,317,320,322,324,326,328,331,333,335,337,339,341,343,346,348,351,354,356],{"class":133,"line":314},9,[131,316,138],{"class":137},[131,318,319],{"class":141}," user ",[131,321,146],{"class":145},[131,323,150],{"class":149},[131,325,153],{"class":141},[131,327,156],{"class":145},[131,329,330],{"class":159},"findOne",[131,332,163],{"class":141},[131,334,166],{"class":145},[131,336,170],{"class":169},[131,338,166],{"class":145},[131,340,175],{"class":145},[131,342,284],{"class":145},[131,344,345],{"class":193}," where",[131,347,197],{"class":145},[131,349,350],{"class":159}," byId",[131,352,353],{"class":141},"(userId) ",[131,355,301],{"class":145},[131,357,304],{"class":141},[109,359,360],{},"Results are inferred from registered metadata and serialized before returning.\nReads do not execute lifecycle hooks.",[117,362,364],{"id":363},"mutations","Mutations",[122,366,368],{"className":124,"code":367,"language":126,"meta":127,"style":127},"const created = await engine.create('users', input, context)\nconst updated = await engine.updateOne('users', byId(id), patch, context)\nconst rows = await engine.updateMany('users', activeUsers, patch, context)\nconst removed = await engine.deleteOne('users', byId(id), context)\nconst count = await engine.deleteMany('sessions', expiredSessions, context)\n",[112,369,370,406,448,487,523],{"__ignoreMap":127},[131,371,372,374,377,379,381,383,385,388,390,392,394,396,398,401,403],{"class":133,"line":134},[131,373,138],{"class":137},[131,375,376],{"class":141}," created ",[131,378,146],{"class":145},[131,380,150],{"class":149},[131,382,153],{"class":141},[131,384,156],{"class":145},[131,386,387],{"class":159},"create",[131,389,163],{"class":141},[131,391,166],{"class":145},[131,393,170],{"class":169},[131,395,166],{"class":145},[131,397,175],{"class":145},[131,399,400],{"class":141}," input",[131,402,175],{"class":145},[131,404,405],{"class":141}," context)\n",[131,407,408,410,413,415,417,419,421,424,426,428,430,432,434,436,439,441,444,446],{"class":133,"line":181},[131,409,138],{"class":137},[131,411,412],{"class":141}," updated ",[131,414,146],{"class":145},[131,416,150],{"class":149},[131,418,153],{"class":141},[131,420,156],{"class":145},[131,422,423],{"class":159},"updateOne",[131,425,163],{"class":141},[131,427,166],{"class":145},[131,429,170],{"class":169},[131,431,166],{"class":145},[131,433,175],{"class":145},[131,435,350],{"class":159},[131,437,438],{"class":141},"(id)",[131,440,175],{"class":145},[131,442,443],{"class":141}," patch",[131,445,175],{"class":145},[131,447,405],{"class":141},[131,449,450,452,455,457,459,461,463,466,468,470,472,474,476,479,481,483,485],{"class":133,"line":190},[131,451,138],{"class":137},[131,453,454],{"class":141}," rows ",[131,456,146],{"class":145},[131,458,150],{"class":149},[131,460,153],{"class":141},[131,462,156],{"class":145},[131,464,465],{"class":159},"updateMany",[131,467,163],{"class":141},[131,469,166],{"class":145},[131,471,170],{"class":169},[131,473,166],{"class":145},[131,475,175],{"class":145},[131,477,478],{"class":141}," activeUsers",[131,480,175],{"class":145},[131,482,443],{"class":141},[131,484,175],{"class":145},[131,486,405],{"class":141},[131,488,489,491,494,496,498,500,502,505,507,509,511,513,515,517,519,521],{"class":133,"line":241},[131,490,138],{"class":137},[131,492,493],{"class":141}," removed ",[131,495,146],{"class":145},[131,497,150],{"class":149},[131,499,153],{"class":141},[131,501,156],{"class":145},[131,503,504],{"class":159},"deleteOne",[131,506,163],{"class":141},[131,508,166],{"class":145},[131,510,170],{"class":169},[131,512,166],{"class":145},[131,514,175],{"class":145},[131,516,350],{"class":159},[131,518,438],{"class":141},[131,520,175],{"class":145},[131,522,405],{"class":141},[131,524,525,527,530,532,534,536,538,541,543,545,548,550,552,555,557],{"class":133,"line":255},[131,526,138],{"class":137},[131,528,529],{"class":141}," count ",[131,531,146],{"class":145},[131,533,150],{"class":149},[131,535,153],{"class":141},[131,537,156],{"class":145},[131,539,540],{"class":159},"deleteMany",[131,542,163],{"class":141},[131,544,166],{"class":145},[131,546,547],{"class":169},"sessions",[131,549,166],{"class":145},[131,551,175],{"class":145},[131,553,554],{"class":141}," expiredSessions",[131,556,175],{"class":145},[131,558,405],{"class":141},[109,560,561,562,156],{},"Every mutation runs inside ",[112,563,564],{},"adapter.transaction()",[566,567,568,581],"table",{},[569,570,571],"thead",{},[572,573,574,578],"tr",{},[575,576,577],"th",{},"Method",[575,579,580],{},"Inferred return",[582,583,584,597,609,621,633,644,655,666],"tbody",{},[572,585,586,592],{},[587,588,589],"td",{},[112,590,591],{},"findMany('users')",[587,593,594],{},[112,595,596],{},"User[]",[572,598,599,604],{},[587,600,601],{},[112,602,603],{},"findOne('users')",[587,605,606],{},[112,607,608],{},"User | null",[572,610,611,616],{},[587,612,613],{},[112,614,615],{},"findPage('users')",[587,617,618],{},[112,619,620],{},"CursorPage\u003CUser>",[572,622,623,628],{},[587,624,625],{},[112,626,627],{},"create('users')",[587,629,630],{},[112,631,632],{},"User",[572,634,635,640],{},[587,636,637],{},[112,638,639],{},"updateOne('users')",[587,641,642],{},[112,643,608],{},[572,645,646,651],{},[587,647,648],{},[112,649,650],{},"updateMany('users')",[587,652,653],{},[112,654,596],{},[572,656,657,661],{},[587,658,659],{},[112,660,504],{},[587,662,663],{},[112,664,665],{},"boolean",[572,667,668,672],{},[587,669,670],{},[112,671,540],{},[587,673,674],{},[112,675,676],{},"number",[117,678,680],{"id":679},"mutation-pipeline","Mutation pipeline",[682,683,685,690,694,698,702,706,710,714],"steps",{"level":684},"3",[686,687,689],"h3",{"id":688},"resolve-metadata-and-defaults","Resolve metadata and defaults",[686,691,693],{"id":692},"run-ordered-before-hooks","Run ordered before hooks",[686,695,697],{"id":696},"reject-unknown-fields","Reject unknown fields",[686,699,701],{"id":700},"validate-the-resulting-entity","Validate the resulting entity",[686,703,705],{"id":704},"execute-through-the-transaction-adapter","Execute through the transaction adapter",[686,707,709],{"id":708},"run-after-hooks","Run after hooks",[686,711,713],{"id":712},"record-audit-entries-when-enabled","Record audit entries when enabled",[686,715,717],{"id":716},"serialize-the-returned-entity","Serialize the returned entity",[109,719,720,721,156],{},"Updates and deletes require a filter containing at least one effective\ncondition. Empty nested filters are rejected with ",[112,722,723],{},"UnsafeMutationError",[117,725,727],{"id":726},"application-transaction","Application transaction",[109,729,730,731,734],{},"Use ",[112,732,733],{},"transaction()"," when several domain mutations and emitted events must commit\nas one unit.",[122,736,738],{"className":124,"code":737,"language":126,"meta":127,"style":127},"await engine.transaction(context, async tx => {\n  const application = await tx.updateOne(\n    'applications',\n    byId(applicationId),\n    { status: 'hired' }\n  )\n\n  tx.events.emit('candidate.hired', {\n    applicationId: application!.id,\n    candidateId: application!.candidateId\n  })\n})\n",[112,739,740,769,791,803,818,838,843,847,875,892,907,915],{"__ignoreMap":127},[131,741,742,745,747,749,752,755,757,760,764,767],{"class":133,"line":134},[131,743,744],{"class":149},"await",[131,746,153],{"class":141},[131,748,156],{"class":145},[131,750,751],{"class":159},"transaction",[131,753,754],{"class":141},"(context",[131,756,175],{"class":145},[131,758,759],{"class":137}," async",[131,761,763],{"class":762},"sHdIc"," tx",[131,765,766],{"class":137}," =>",[131,768,178],{"class":145},[131,770,771,774,777,780,782,784,786,788],{"class":133,"line":181},[131,772,773],{"class":137},"  const",[131,775,776],{"class":141}," application",[131,778,779],{"class":145}," =",[131,781,150],{"class":149},[131,783,763],{"class":141},[131,785,156],{"class":145},[131,787,423],{"class":159},[131,789,790],{"class":193},"(\n",[131,792,793,796,799,801],{"class":133,"line":190},[131,794,795],{"class":145},"    '",[131,797,798],{"class":169},"applications",[131,800,166],{"class":145},[131,802,187],{"class":145},[131,804,805,808,810,813,816],{"class":133,"line":241},[131,806,807],{"class":159},"    byId",[131,809,163],{"class":193},[131,811,812],{"class":141},"applicationId",[131,814,815],{"class":193},")",[131,817,187],{"class":145},[131,819,820,823,826,828,830,833,835],{"class":133,"line":255},[131,821,822],{"class":145},"    {",[131,824,825],{"class":193}," status",[131,827,197],{"class":145},[131,829,211],{"class":145},[131,831,832],{"class":169},"hired",[131,834,166],{"class":145},[131,836,837],{"class":145}," }\n",[131,839,840],{"class":133,"line":276},[131,841,842],{"class":193},"  )\n",[131,844,845],{"class":133,"line":298},[131,846,311],{"emptyLinePlaceholder":310},[131,848,849,852,854,857,859,862,864,866,869,871,873],{"class":133,"line":307},[131,850,851],{"class":141},"  tx",[131,853,156],{"class":145},[131,855,856],{"class":141},"events",[131,858,156],{"class":145},[131,860,861],{"class":159},"emit",[131,863,163],{"class":193},[131,865,166],{"class":145},[131,867,868],{"class":169},"candidate.hired",[131,870,166],{"class":145},[131,872,175],{"class":145},[131,874,178],{"class":145},[131,876,877,880,882,884,887,890],{"class":133,"line":314},[131,878,879],{"class":193},"    applicationId",[131,881,197],{"class":145},[131,883,776],{"class":141},[131,885,886],{"class":145},"!.",[131,888,889],{"class":141},"id",[131,891,187],{"class":145},[131,893,895,898,900,902,904],{"class":133,"line":894},10,[131,896,897],{"class":193},"    candidateId",[131,899,197],{"class":145},[131,901,776],{"class":141},[131,903,886],{"class":145},[131,905,906],{"class":141},"candidateId\n",[131,908,910,913],{"class":133,"line":909},11,[131,911,912],{"class":145},"  }",[131,914,304],{"class":193},[131,916,918,920],{"class":133,"line":917},12,[131,919,301],{"class":145},[131,921,304],{"class":141},[109,923,924],{},"Events are collected and persisted only after the callback succeeds, but still\ninside the same outer transaction.",[117,926,928],{"id":927},"context","Context",[122,930,932],{"className":124,"code":931,"language":126,"meta":127,"style":127},"interface QueryContextInput {\n  requestId?: string\n  tenantId?: string\n  user?: unknown\n  [key: string]: unknown\n}\n",[112,933,934,945,956,965,975,984],{"__ignoreMap":127},[131,935,936,939,943],{"class":133,"line":134},[131,937,938],{"class":137},"interface",[131,940,942],{"class":941},"sBMFI"," QueryContextInput",[131,944,178],{"class":145},[131,946,947,950,953],{"class":133,"line":181},[131,948,949],{"class":193},"  requestId",[131,951,952],{"class":145},"?:",[131,954,955],{"class":941}," string\n",[131,957,958,961,963],{"class":133,"line":190},[131,959,960],{"class":193},"  tenantId",[131,962,952],{"class":145},[131,964,955],{"class":941},[131,966,967,970,972],{"class":133,"line":241},[131,968,969],{"class":193},"  user",[131,971,952],{"class":145},[131,973,974],{"class":941}," unknown\n",[131,976,977,980,982],{"class":133,"line":255},[131,978,979],{"class":141},"  [key: string]",[131,981,197],{"class":145},[131,983,974],{"class":941},[131,985,986],{"class":133,"line":276},[131,987,295],{"class":145},[109,989,990],{},"Context feeds hooks, visibility rules, audit metadata and domain events. It does\nnot enforce authorization or tenant isolation by itself.",[992,993,994],"style",{},"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 pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":127,"searchDepth":134,"depth":181,"links":996},[997,998,999,1000,1001],{"id":119,"depth":181,"text":120},{"id":363,"depth":181,"text":364},{"id":679,"depth":181,"text":680},{"id":726,"depth":181,"text":727},{"id":927,"depth":181,"text":928},"Execute typed reads, safe mutations and application transactions.","md",null,{},{"icon":29},{"title":26,"description":1002},"FNL-pXEp68rAoCyZHn3PwsYbP2ruM1CJqr5--7Ac2sA",[1010,1012],{"title":21,"path":22,"stem":23,"description":1011,"icon":24,"children":-1},"Define the domain model once and preserve it through the typed runtime.",{"title":38,"path":39,"stem":40,"description":1013,"icon":41,"children":-1},"Record transactional mutation history with actors and field changes.",1783784235117]