[{"data":1,"prerenderedAt":1358},["ShallowReactive",2],{"navigation":3,"\u002Fadapters\u002Fdrizzle":103,"\u002Fadapters\u002Fdrizzle-surround":1353},[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":94,"body":105,"description":1346,"extension":1347,"links":1348,"meta":1349,"navigation":1350,"path":95,"seo":1351,"stem":96,"__hash__":1352},"docs\u002F04.adapters\u002Fdrizzle.md",{"type":106,"value":107,"toc":1335},"minimark",[108,120,125,193,196,200,261,275,284,288,447,450,454,461,521,905,909,912,939,942,946,1087,1090,1094,1120,1129,1176,1180,1309,1320,1324,1331],[109,110,111,115,116,119],"p",{},[112,113,114],"code",{},"DrizzleAdapter"," implements ",[112,117,118],{},"DatabaseAdapter"," for Drizzle's asynchronous PostgreSQL database.",[121,122,124],"h2",{"id":123},"create-an-adapter","Create an adapter",[126,127,132],"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createDrizzleAdapter } from '@opensya\u002Fpersistence'\n\nconst adapter = createDrizzleAdapter(db)\n","ts","",[112,133,134,167,174],{"__ignoreMap":131},[135,136,139,143,147,151,154,157,160,164],"span",{"class":137,"line":138},"line",1,[135,140,142],{"class":141},"s7zQu","import",[135,144,146],{"class":145},"sMK4o"," {",[135,148,150],{"class":149},"sTEyZ"," createDrizzleAdapter",[135,152,153],{"class":145}," }",[135,155,156],{"class":141}," from",[135,158,159],{"class":145}," '",[135,161,163],{"class":162},"sfazB","@opensya\u002Fpersistence",[135,165,166],{"class":145},"'\n",[135,168,170],{"class":137,"line":169},2,[135,171,173],{"emptyLinePlaceholder":172},true,"\n",[135,175,177,181,184,187,190],{"class":137,"line":176},3,[135,178,180],{"class":179},"spNyl","const",[135,182,183],{"class":149}," adapter ",[135,185,186],{"class":145},"=",[135,188,150],{"class":189},"s2Zo4",[135,191,192],{"class":149},"(db)\n",[109,194,195],{},"The database must support Drizzle's select, insert, update, delete, execute, and transaction APIs.",[121,197,199],{"id":198},"runtime-tables","Runtime tables",[126,201,203],{"className":128,"code":202,"language":130,"meta":131,"style":131},"for (const metadata of registry.getAll()) {\n  adapter.buildTable(metadata)\n}\n",[112,204,205,236,256],{"__ignoreMap":131},[135,206,207,210,213,215,218,221,224,227,230,233],{"class":137,"line":138},[135,208,209],{"class":141},"for",[135,211,212],{"class":149}," (",[135,214,180],{"class":179},[135,216,217],{"class":149}," metadata ",[135,219,220],{"class":145},"of",[135,222,223],{"class":149}," registry",[135,225,226],{"class":145},".",[135,228,229],{"class":189},"getAll",[135,231,232],{"class":149},"()) ",[135,234,235],{"class":145},"{\n",[135,237,238,241,243,246,250,253],{"class":137,"line":169},[135,239,240],{"class":149},"  adapter",[135,242,226],{"class":145},[135,244,245],{"class":189},"buildTable",[135,247,249],{"class":248},"swJcz","(",[135,251,252],{"class":149},"metadata",[135,254,255],{"class":248},")\n",[135,257,258],{"class":137,"line":176},[135,259,260],{"class":145},"}\n",[109,262,263,266,267,270,271,274],{},[112,264,265],{},"buildTable()"," converts each ",[112,268,269],{},"TableMetadata"," into a Drizzle ",[112,272,273],{},"pgTable"," and indexes it by the logical metadata name.",[276,277,281],"callout",{"color":278,"icon":279,"variant":280},"warning","i-tabler-alert-triangle","subtle",[109,282,283],{},"Query operations fail when the logical table has not been built. Runtime table construction does not execute DDL or migrations.",[121,285,287],{"id":286},"column-mapping","Column mapping",[289,290,291,307],"table",{},[292,293,294],"thead",{},[295,296,297,301,304],"tr",{},[298,299,300],"th",{},"Metadata",[298,302,303],{},"PostgreSQL builder",[298,305,306],{},"Runtime validation",[308,309,310,325,338,350,364,378,391,405,418,432],"tbody",{},[295,311,312,318,322],{},[313,314,315],"td",{},[112,316,317],{},"uuid",[313,319,320],{},[112,321,317],{},[313,323,324],{},"string",[295,326,327,331,336],{},[313,328,329],{},[112,330,324],{},[313,332,333],{},[112,334,335],{},"text",[313,337,324],{},[295,339,340,344,348],{},[313,341,342],{},[112,343,335],{},[313,345,346],{},[112,347,335],{},[313,349,324],{},[295,351,352,357,361],{},[313,353,354],{},[112,355,356],{},"integer",[313,358,359],{},[112,360,356],{},[313,362,363],{},"integer number",[295,365,366,371,376],{},[313,367,368],{},[112,369,370],{},"bigint",[313,372,373],{},[112,374,375],{},"bigint({ mode: 'bigint' })",[313,377,370],{},[295,379,380,385,389],{},[313,381,382],{},[112,383,384],{},"boolean",[313,386,387],{},[112,388,384],{},[313,390,384],{},[295,392,393,398,402],{},[313,394,395],{},[112,396,397],{},"timestamp",[313,399,400],{},[112,401,397],{},[313,403,404],{},"Date",[295,406,407,412,416],{},[313,408,409],{},[112,410,411],{},"date",[313,413,414],{},[112,415,411],{},[313,417,324],{},[295,419,420,425,429],{},[313,421,422],{},[112,423,424],{},"json",[313,426,427],{},[112,428,424],{},[313,430,431],{},"any value",[295,433,434,439,444],{},[313,435,436],{},[112,437,438],{},"decimal",[313,440,441],{},[112,442,443],{},"numeric",[313,445,446],{},"string or number",[109,448,449],{},"The adapter maps primary keys, nullability, uniqueness, and static or factory defaults to the corresponding Drizzle builder methods.",[121,451,453],{"id":452},"query-translation","Query translation",[109,455,456,457,460],{},"The adapter compiles ",[112,458,459],{},"QueryFilter"," recursively:",[462,463,464,472,482,491,497],"ul",{},[465,466,467,468,471],"li",{},"conditions at the same level are joined with ",[112,469,470],{},"AND",";",[465,473,474,475,478,479,471],{},"nested ",[112,476,477],{},"and"," groups use Drizzle ",[112,480,481],{},"and()",[465,483,474,484,487,488,471],{},[112,485,486],{},"or"," groups use ",[112,489,490],{},"or()",[465,492,493,496],{},[112,494,495],{},"not"," wraps the compiled nested expression;",[465,498,499,500,503,504,503,507,503,510,513,514,517,518,226],{},"operators map to ",[112,501,502],{},"eq",", ",[112,505,506],{},"ne",[112,508,509],{},"inArray",[112,511,512],{},"notInArray",", comparisons, ",[112,515,516],{},"isNull",", and ",[112,519,520],{},"isNotNull",[126,522,524],{"className":128,"code":523,"language":130,"meta":131,"style":131},"await adapter.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  },\n  orderBy: [{ field: 'createdAt', direction: 'desc' }],\n  limit: 20,\n  offset: 0\n})\n",[112,525,526,555,565,575,581,591,636,642,648,653,663,669,679,723,729,735,740,749,791,796,802,807,813,819,825,872,886,897],{"__ignoreMap":131},[135,527,528,531,534,536,539,541,544,547,549,552],{"class":137,"line":138},[135,529,530],{"class":141},"await",[135,532,533],{"class":149}," adapter",[135,535,226],{"class":145},[135,537,538],{"class":189},"findMany",[135,540,249],{"class":149},[135,542,543],{"class":145},"'",[135,545,546],{"class":162},"users",[135,548,543],{"class":145},[135,550,551],{"class":145},",",[135,553,554],{"class":145}," {\n",[135,556,557,560,563],{"class":137,"line":169},[135,558,559],{"class":248},"  where",[135,561,562],{"class":145},":",[135,564,554],{"class":145},[135,566,567,570,572],{"class":137,"line":176},[135,568,569],{"class":248},"    and",[135,571,562],{"class":145},[135,573,574],{"class":149}," [\n",[135,576,578],{"class":137,"line":577},4,[135,579,580],{"class":145},"      {\n",[135,582,584,587,589],{"class":137,"line":583},5,[135,585,586],{"class":248},"        conditions",[135,588,562],{"class":145},[135,590,574],{"class":149},[135,592,594,597,600,602,604,607,609,611,614,616,618,620,622,624,627,629,633],{"class":137,"line":593},6,[135,595,596],{"class":145},"          {",[135,598,599],{"class":248}," field",[135,601,562],{"class":145},[135,603,159],{"class":145},[135,605,606],{"class":162},"active",[135,608,543],{"class":145},[135,610,551],{"class":145},[135,612,613],{"class":248}," operator",[135,615,562],{"class":145},[135,617,159],{"class":145},[135,619,502],{"class":162},[135,621,543],{"class":145},[135,623,551],{"class":145},[135,625,626],{"class":248}," value",[135,628,562],{"class":145},[135,630,632],{"class":631},"sfNiH"," true",[135,634,635],{"class":145}," }\n",[135,637,639],{"class":137,"line":638},7,[135,640,641],{"class":149},"        ]\n",[135,643,645],{"class":137,"line":644},8,[135,646,647],{"class":145},"      },\n",[135,649,651],{"class":137,"line":650},9,[135,652,580],{"class":145},[135,654,656,659,661],{"class":137,"line":655},10,[135,657,658],{"class":248},"        or",[135,660,562],{"class":145},[135,662,574],{"class":149},[135,664,666],{"class":137,"line":665},11,[135,667,668],{"class":145},"          {\n",[135,670,672,675,677],{"class":137,"line":671},12,[135,673,674],{"class":248},"            conditions",[135,676,562],{"class":145},[135,678,574],{"class":149},[135,680,682,685,687,689,691,694,696,698,700,702,704,706,708,710,712,714,716,719,721],{"class":137,"line":681},13,[135,683,684],{"class":145},"              {",[135,686,599],{"class":248},[135,688,562],{"class":145},[135,690,159],{"class":145},[135,692,693],{"class":162},"role",[135,695,543],{"class":145},[135,697,551],{"class":145},[135,699,613],{"class":248},[135,701,562],{"class":145},[135,703,159],{"class":145},[135,705,502],{"class":162},[135,707,543],{"class":145},[135,709,551],{"class":145},[135,711,626],{"class":248},[135,713,562],{"class":145},[135,715,159],{"class":145},[135,717,718],{"class":162},"admin",[135,720,543],{"class":145},[135,722,635],{"class":145},[135,724,726],{"class":137,"line":725},14,[135,727,728],{"class":149},"            ]\n",[135,730,732],{"class":137,"line":731},15,[135,733,734],{"class":145},"          },\n",[135,736,738],{"class":137,"line":737},16,[135,739,668],{"class":145},[135,741,743,745,747],{"class":137,"line":742},17,[135,744,674],{"class":248},[135,746,562],{"class":145},[135,748,574],{"class":149},[135,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,787,789],{"class":137,"line":751},18,[135,753,684],{"class":145},[135,755,599],{"class":248},[135,757,562],{"class":145},[135,759,159],{"class":145},[135,761,693],{"class":162},[135,763,543],{"class":145},[135,765,551],{"class":145},[135,767,613],{"class":248},[135,769,562],{"class":145},[135,771,159],{"class":145},[135,773,502],{"class":162},[135,775,543],{"class":145},[135,777,551],{"class":145},[135,779,626],{"class":248},[135,781,562],{"class":145},[135,783,159],{"class":145},[135,785,786],{"class":162},"owner",[135,788,543],{"class":145},[135,790,635],{"class":145},[135,792,794],{"class":137,"line":793},19,[135,795,728],{"class":149},[135,797,799],{"class":137,"line":798},20,[135,800,801],{"class":145},"          }\n",[135,803,805],{"class":137,"line":804},21,[135,806,641],{"class":149},[135,808,810],{"class":137,"line":809},22,[135,811,812],{"class":145},"      }\n",[135,814,816],{"class":137,"line":815},23,[135,817,818],{"class":149},"    ]\n",[135,820,822],{"class":137,"line":821},24,[135,823,824],{"class":145},"  },\n",[135,826,828,831,833,836,839,841,843,845,848,850,852,855,857,859,862,864,866,869],{"class":137,"line":827},25,[135,829,830],{"class":248},"  orderBy",[135,832,562],{"class":145},[135,834,835],{"class":149}," [",[135,837,838],{"class":145},"{",[135,840,599],{"class":248},[135,842,562],{"class":145},[135,844,159],{"class":145},[135,846,847],{"class":162},"createdAt",[135,849,543],{"class":145},[135,851,551],{"class":145},[135,853,854],{"class":248}," direction",[135,856,562],{"class":145},[135,858,159],{"class":145},[135,860,861],{"class":162},"desc",[135,863,543],{"class":145},[135,865,153],{"class":145},[135,867,868],{"class":149},"]",[135,870,871],{"class":145},",\n",[135,873,875,878,880,884],{"class":137,"line":874},26,[135,876,877],{"class":248},"  limit",[135,879,562],{"class":145},[135,881,883],{"class":882},"sbssI"," 20",[135,885,871],{"class":145},[135,887,889,892,894],{"class":137,"line":888},27,[135,890,891],{"class":248},"  offset",[135,893,562],{"class":145},[135,895,896],{"class":882}," 0\n",[135,898,900,903],{"class":137,"line":899},28,[135,901,902],{"class":145},"}",[135,904,255],{"class":149},[121,906,908],{"id":907},"adapter-level-guards","Adapter-level guards",[109,910,911],{},"Before executing SQL, the adapter verifies:",[462,913,914,917,927,936],{},[465,915,916],{},"filter, sort, insert, and update fields exist on the built table;",[465,918,919,922,923,926],{},[112,920,921],{},"limit"," and ",[112,924,925],{},"offset"," are not negative;",[465,928,929,922,932,935],{},[112,930,931],{},"in",[112,933,934],{},"notIn"," receive non-empty arrays;",[465,937,938],{},"update and delete filters contain at least one effective constraint.",[109,940,941],{},"These checks also apply when the adapter is used directly. Direct calls do not, however, run Query Engine validators or lifecycle hooks.",[121,943,945],{"id":944},"transactions","Transactions",[126,947,949],{"className":128,"code":948,"language":130,"meta":131,"style":131},"await adapter.transaction(async tx => {\n  const user = await tx.insert('users', input)\n\n  await tx.insert('profiles', {\n    id: crypto.randomUUID(),\n    userId: user.id\n  })\n})\n",[112,950,951,976,1012,1016,1040,1060,1074,1081],{"__ignoreMap":131},[135,952,953,955,957,959,962,964,967,971,974],{"class":137,"line":138},[135,954,530],{"class":141},[135,956,533],{"class":149},[135,958,226],{"class":145},[135,960,961],{"class":189},"transaction",[135,963,249],{"class":149},[135,965,966],{"class":179},"async",[135,968,970],{"class":969},"sHdIc"," tx",[135,972,973],{"class":179}," =>",[135,975,554],{"class":145},[135,977,978,981,984,987,990,992,994,997,999,1001,1003,1005,1007,1010],{"class":137,"line":169},[135,979,980],{"class":179},"  const",[135,982,983],{"class":149}," user",[135,985,986],{"class":145}," =",[135,988,989],{"class":141}," await",[135,991,970],{"class":149},[135,993,226],{"class":145},[135,995,996],{"class":189},"insert",[135,998,249],{"class":248},[135,1000,543],{"class":145},[135,1002,546],{"class":162},[135,1004,543],{"class":145},[135,1006,551],{"class":145},[135,1008,1009],{"class":149}," input",[135,1011,255],{"class":248},[135,1013,1014],{"class":137,"line":176},[135,1015,173],{"emptyLinePlaceholder":172},[135,1017,1018,1021,1023,1025,1027,1029,1031,1034,1036,1038],{"class":137,"line":577},[135,1019,1020],{"class":141},"  await",[135,1022,970],{"class":149},[135,1024,226],{"class":145},[135,1026,996],{"class":189},[135,1028,249],{"class":248},[135,1030,543],{"class":145},[135,1032,1033],{"class":162},"profiles",[135,1035,543],{"class":145},[135,1037,551],{"class":145},[135,1039,554],{"class":145},[135,1041,1042,1045,1047,1050,1052,1055,1058],{"class":137,"line":583},[135,1043,1044],{"class":248},"    id",[135,1046,562],{"class":145},[135,1048,1049],{"class":149}," crypto",[135,1051,226],{"class":145},[135,1053,1054],{"class":189},"randomUUID",[135,1056,1057],{"class":248},"()",[135,1059,871],{"class":145},[135,1061,1062,1065,1067,1069,1071],{"class":137,"line":593},[135,1063,1064],{"class":248},"    userId",[135,1066,562],{"class":145},[135,1068,983],{"class":149},[135,1070,226],{"class":145},[135,1072,1073],{"class":149},"id\n",[135,1075,1076,1079],{"class":137,"line":638},[135,1077,1078],{"class":145},"  }",[135,1080,255],{"class":248},[135,1082,1083,1085],{"class":137,"line":644},[135,1084,902],{"class":145},[135,1086,255],{"class":149},[109,1088,1089],{},"The callback receives a new adapter bound to the Drizzle transaction while sharing the previously built table map.",[121,1091,1093],{"id":1092},"postgresql-introspection","PostgreSQL introspection",[126,1095,1097],{"className":128,"code":1096,"language":130,"meta":131,"style":131},"const actualSchema = await adapter.introspect()\n",[112,1098,1099],{"__ignoreMap":131},[135,1100,1101,1103,1106,1108,1110,1112,1114,1117],{"class":137,"line":138},[135,1102,180],{"class":179},[135,1104,1105],{"class":149}," actualSchema ",[135,1107,186],{"class":145},[135,1109,989],{"class":141},[135,1111,533],{"class":149},[135,1113,226],{"class":145},[135,1115,1116],{"class":189},"introspect",[135,1118,1119],{"class":149},"()\n",[109,1121,1122,1123,1126,1127,226],{},"The adapter queries ",[112,1124,1125],{},"information_schema"," directly. Introspection does not depend on the tables previously passed to ",[112,1128,265],{},[1130,1131,1133,1138,1148,1152,1158,1162,1165,1169],"steps",{"level":1132},"3",[1134,1135,1137],"h3",{"id":1136},"discover-tables","Discover tables",[109,1139,1140,1141,1144,1145,226],{},"Reads base tables from ",[112,1142,1143],{},"information_schema.tables"," where ",[112,1146,1147],{},"table_schema = 'public'",[1134,1149,1151],{"id":1150},"discover-columns","Discover columns",[109,1153,1154,1155,226],{},"Reads column name, SQL data type, nullability, and ordinal position from ",[112,1156,1157],{},"information_schema.columns",[1134,1159,1161],{"id":1160},"discover-keys-and-indexes","Discover keys and indexes",[109,1163,1164],{},"Reads primary keys, unique indexes and standalone indexes from PostgreSQL\ncatalogs, preserving composite field order and uniqueness.",[1134,1166,1168],{"id":1167},"produce-metadata","Produce metadata",[109,1170,1171,1172,1175],{},"Returns ",[112,1173,1174],{},"TableMetadata[]"," with physical names used as both logical and collection names.",[121,1177,1179],{"id":1178},"introspected-sql-types","Introspected SQL types",[289,1181,1182,1195],{},[292,1183,1184],{},[295,1185,1186,1192],{},[298,1187,1188,1189],{},"PostgreSQL ",[112,1190,1191],{},"data_type",[298,1193,1194],{},"Metadata type",[308,1196,1197,1207,1218,1228,1238,1248,1258,1267,1277,1290,1300],{},[295,1198,1199,1203],{},[313,1200,1201],{},[112,1202,317],{},[313,1204,1205],{},[112,1206,317],{},[295,1208,1209,1214],{},[313,1210,1211],{},[112,1212,1213],{},"character varying",[313,1215,1216],{},[112,1217,324],{},[295,1219,1220,1224],{},[313,1221,1222],{},[112,1223,335],{},[313,1225,1226],{},[112,1227,335],{},[295,1229,1230,1234],{},[313,1231,1232],{},[112,1233,356],{},[313,1235,1236],{},[112,1237,356],{},[295,1239,1240,1244],{},[313,1241,1242],{},[112,1243,370],{},[313,1245,1246],{},[112,1247,370],{},[295,1249,1250,1254],{},[313,1251,1252],{},[112,1253,384],{},[313,1255,1256],{},[112,1257,384],{},[295,1259,1260,1263],{},[313,1261,1262],{},"timestamp with or without time zone",[313,1264,1265],{},[112,1266,397],{},[295,1268,1269,1273],{},[313,1270,1271],{},[112,1272,411],{},[313,1274,1275],{},[112,1276,411],{},[295,1278,1279,1286],{},[313,1280,1281,503,1283],{},[112,1282,424],{},[112,1284,1285],{},"jsonb",[313,1287,1288],{},[112,1289,424],{},[295,1291,1292,1296],{},[313,1293,1294],{},[112,1295,443],{},[313,1297,1298],{},[112,1299,438],{},[295,1301,1302,1305],{},[313,1303,1304],{},"any unrecognized type",[313,1306,1307],{},[112,1308,335],{},[276,1310,1314],{"color":1311,"icon":1312,"variant":280,"title":1313},"info","i-tabler-info-circle","Introspection boundaries",[109,1315,1316,1317,1319],{},"Foreign keys and relations are returned as empty arrays. Defaults, check\nconstraints and custom validators are not introspected. Unknown SQL types\ndeliberately fall back to ",[112,1318,335],{}," so consistency checking reports drift instead\nof crashing.",[121,1321,1323],{"id":1322},"when-to-use-the-adapter-directly","When to use the adapter directly",[109,1325,1326,1327,1330],{},"Use ",[112,1328,1329],{},"QueryEngine"," for domain operations. Use the adapter directly for infrastructure code that intentionally needs lower-level access, such as schema inspection or transaction-scoped operations inside hooks.",[1332,1333,1334],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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":131,"searchDepth":138,"depth":169,"links":1336},[1337,1338,1339,1340,1341,1342,1343,1344,1345],{"id":123,"depth":169,"text":124},{"id":198,"depth":169,"text":199},{"id":286,"depth":169,"text":287},{"id":452,"depth":169,"text":453},{"id":907,"depth":169,"text":908},{"id":944,"depth":169,"text":945},{"id":1092,"depth":169,"text":1093},{"id":1178,"depth":169,"text":1179},{"id":1322,"depth":169,"text":1323},"PostgreSQL query execution, runtime table construction, transactions, and schema introspection.","md",null,{},{"icon":97},{"title":94,"description":1346},"qQR3hXRl5Nc_kloGOBRg6peKqm46Q2gHYt5NBB5g4eY",[1354,1356],{"title":83,"path":84,"stem":85,"description":1355,"icon":86,"children":-1},"Validate structure and domain rules before data reaches the adapter.",{"title":99,"path":100,"stem":101,"description":1357,"icon":102,"children":-1},"The current technical boundaries of OpenSya Persistence.",1783784236288]