[{"data":1,"prerenderedAt":1435},["ShallowReactive",2],{"navigation_docs":3,"-models-transactions":74,"-models-transactions-surround":1431},[4,20,65],{"title":5,"path":6,"stem":7,"children":8,"page":19},"Getting Started","/getting-started","1.getting-started",[9,14],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",false,{"title":21,"path":22,"stem":23,"children":24,"page":19},"Models","/models","2.models",[25,30,35,40,45,50,55,60],{"title":26,"path":27,"stem":28,"icon":29},"Defining Models","/models/defining-models","2.models/1.defining-models","i-lucide-database",{"title":31,"path":32,"stem":33,"icon":34},"Retrieving Models","/models/retrieving","2.models/2.retrieving","i-lucide-database-search",{"title":36,"path":37,"stem":38,"icon":39},"Inserting & Updating Models","/models/inserting-and-updating","2.models/3.inserting-and-updating","i-lucide-between-horizontal-start",{"title":41,"path":42,"stem":43,"icon":44},"Deleting Models","/models/deleting","2.models/4.deleting","i-lucide-trash",{"title":46,"path":47,"stem":48,"icon":49},"Relationships","/models/relationships","2.models/5.relationships","i-lucide-share-2",{"title":51,"path":52,"stem":53,"icon":54},"Events","/models/events","2.models/6.events","i-lucide-bell",{"title":56,"path":57,"stem":58,"icon":59},"Migrations & Seeders","/models/migrations-and-seeders","2.models/7.migrations-and-seeders","i-lucide-wrench",{"title":61,"path":62,"stem":63,"icon":64},"Transactions","/models/transactions","2.models/8.transactions","i-lucide-git-commit-horizontal",{"title":66,"path":67,"stem":68,"children":69,"page":19},"Contributing","/contributing","3.contributing",[70],{"title":71,"path":72,"stem":73},"Local Development","/contributing/local-development","3.contributing/1.local-development",{"id":75,"title":61,"body":76,"description":1423,"extension":1424,"links":1425,"meta":1426,"navigation":1427,"path":62,"seo":1428,"stem":63,"__hash__":1430},"docs/2.models/8.transactions.md",{"type":77,"value":78,"toc":1415},"minimark",[79,84,101,111,382,386,393,532,538,615,619,629,773,784,795,890,894,903,1097,1100,1103,1235,1239,1246,1411],[80,81,83],"h2",{"id":82},"running-a-transaction","Running a Transaction",[85,86,87,88,92,93,100],"p",{},"Start a transaction with Kysely's ",[89,90,91],"code",{},"db.transaction().execute()"," (or the ",[94,95,97],"a",{"href":96},"#modeltransaction",[89,98,99],{},"Model.transaction"," shorthand) and pass the transaction object to the model operations that should run inside it. The transaction commits when the callback resolves and rolls back if it throws.",[85,102,103,104,110],{},"More documentation on Kysely transactions is available in the ",[94,105,109],{"href":106,"rel":107},"https://kysely.dev/docs/examples/transactions/simple-transaction",[108],"nofollow","Kysely docs",".",[112,113,118],"pre",{"className":114,"code":115,"language":116,"meta":117,"style":117},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import db from \"./database/db\";\n\nawait db.transaction().execute(async (trx) => {\n  const person = await Person.create({ name: \"Aang\", birthday: new Date(\"1993-01-01\") }, trx);\n\n  const pet = new Pet({ name: \"Appa\", type: \"bison\", person_id: person.id });\n  await pet.save(trx);\n});\n","ts","",[89,119,120,150,157,203,281,286,351,372],{"__ignoreMap":117},[121,122,125,129,133,136,140,144,147],"span",{"class":123,"line":124},"line",1,[121,126,128],{"class":127},"s7zQu","import",[121,130,132],{"class":131},"sTEyZ"," db ",[121,134,135],{"class":127},"from",[121,137,139],{"class":138},"sMK4o"," \"",[121,141,143],{"class":142},"sfazB","./database/db",[121,145,146],{"class":138},"\"",[121,148,149],{"class":138},";\n",[121,151,153],{"class":123,"line":152},2,[121,154,156],{"emptyLinePlaceholder":155},true,"\n",[121,158,160,163,166,168,172,175,177,180,183,187,190,194,197,200],{"class":123,"line":159},3,[121,161,162],{"class":127},"await",[121,164,165],{"class":131}," db",[121,167,110],{"class":138},[121,169,171],{"class":170},"s2Zo4","transaction",[121,173,174],{"class":131},"()",[121,176,110],{"class":138},[121,178,179],{"class":170},"execute",[121,181,182],{"class":131},"(",[121,184,186],{"class":185},"spNyl","async",[121,188,189],{"class":138}," (",[121,191,193],{"class":192},"sHdIc","trx",[121,195,196],{"class":138},")",[121,198,199],{"class":185}," =>",[121,201,202],{"class":138}," {\n",[121,204,206,209,212,215,218,221,223,226,229,232,235,238,240,243,245,248,251,253,256,259,261,263,266,268,271,274,277,279],{"class":123,"line":205},4,[121,207,208],{"class":185},"  const",[121,210,211],{"class":131}," person",[121,213,214],{"class":138}," =",[121,216,217],{"class":127}," await",[121,219,220],{"class":131}," Person",[121,222,110],{"class":138},[121,224,225],{"class":170},"create",[121,227,182],{"class":228},"swJcz",[121,230,231],{"class":138},"{",[121,233,234],{"class":228}," name",[121,236,237],{"class":138},":",[121,239,139],{"class":138},[121,241,242],{"class":142},"Aang",[121,244,146],{"class":138},[121,246,247],{"class":138},",",[121,249,250],{"class":228}," birthday",[121,252,237],{"class":138},[121,254,255],{"class":138}," new",[121,257,258],{"class":170}," Date",[121,260,182],{"class":228},[121,262,146],{"class":138},[121,264,265],{"class":142},"1993-01-01",[121,267,146],{"class":138},[121,269,270],{"class":228},") ",[121,272,273],{"class":138},"},",[121,275,276],{"class":131}," trx",[121,278,196],{"class":228},[121,280,149],{"class":138},[121,282,284],{"class":123,"line":283},5,[121,285,156],{"emptyLinePlaceholder":155},[121,287,289,291,294,296,298,301,303,305,307,309,311,314,316,318,321,323,325,328,330,332,335,337,339,341,344,347,349],{"class":123,"line":288},6,[121,290,208],{"class":185},[121,292,293],{"class":131}," pet",[121,295,214],{"class":138},[121,297,255],{"class":138},[121,299,300],{"class":170}," Pet",[121,302,182],{"class":228},[121,304,231],{"class":138},[121,306,234],{"class":228},[121,308,237],{"class":138},[121,310,139],{"class":138},[121,312,313],{"class":142},"Appa",[121,315,146],{"class":138},[121,317,247],{"class":138},[121,319,320],{"class":228}," type",[121,322,237],{"class":138},[121,324,139],{"class":138},[121,326,327],{"class":142},"bison",[121,329,146],{"class":138},[121,331,247],{"class":138},[121,333,334],{"class":228}," person_id",[121,336,237],{"class":138},[121,338,211],{"class":131},[121,340,110],{"class":138},[121,342,343],{"class":131},"id",[121,345,346],{"class":138}," }",[121,348,196],{"class":228},[121,350,149],{"class":138},[121,352,354,357,359,361,364,366,368,370],{"class":123,"line":353},7,[121,355,356],{"class":127},"  await",[121,358,293],{"class":131},[121,360,110],{"class":138},[121,362,363],{"class":170},"save",[121,365,182],{"class":228},[121,367,193],{"class":131},[121,369,196],{"class":228},[121,371,149],{"class":138},[121,373,375,378,380],{"class":123,"line":374},8,[121,376,377],{"class":138},"}",[121,379,196],{"class":131},[121,381,149],{"class":138},[80,383,385],{"id":384},"queries","Queries",[85,387,388,389,392],{},"Pass the transaction to ",[89,390,391],{},"query()"," to run a query on it. Everything chained from the builder runs on the transaction.",[112,394,396],{"className":114,"code":395,"language":116,"meta":117,"style":117},"await db.transaction().execute(async (trx) => {\n  const pets = await Pet.query(trx).where(\"type\", \"cat\").get();\n  const owner = await Person.query(trx).find(1);\n});\n",[89,397,398,428,486,524],{"__ignoreMap":117},[121,399,400,402,404,406,408,410,412,414,416,418,420,422,424,426],{"class":123,"line":124},[121,401,162],{"class":127},[121,403,165],{"class":131},[121,405,110],{"class":138},[121,407,171],{"class":170},[121,409,174],{"class":131},[121,411,110],{"class":138},[121,413,179],{"class":170},[121,415,182],{"class":131},[121,417,186],{"class":185},[121,419,189],{"class":138},[121,421,193],{"class":192},[121,423,196],{"class":138},[121,425,199],{"class":185},[121,427,202],{"class":138},[121,429,430,432,435,437,439,441,443,446,448,450,452,454,457,459,461,464,466,468,470,473,475,477,479,482,484],{"class":123,"line":152},[121,431,208],{"class":185},[121,433,434],{"class":131}," pets",[121,436,214],{"class":138},[121,438,217],{"class":127},[121,440,300],{"class":131},[121,442,110],{"class":138},[121,444,445],{"class":170},"query",[121,447,182],{"class":228},[121,449,193],{"class":131},[121,451,196],{"class":228},[121,453,110],{"class":138},[121,455,456],{"class":170},"where",[121,458,182],{"class":228},[121,460,146],{"class":138},[121,462,463],{"class":142},"type",[121,465,146],{"class":138},[121,467,247],{"class":138},[121,469,139],{"class":138},[121,471,472],{"class":142},"cat",[121,474,146],{"class":138},[121,476,196],{"class":228},[121,478,110],{"class":138},[121,480,481],{"class":170},"get",[121,483,174],{"class":228},[121,485,149],{"class":138},[121,487,488,490,493,495,497,499,501,503,505,507,509,511,514,516,520,522],{"class":123,"line":159},[121,489,208],{"class":185},[121,491,492],{"class":131}," owner",[121,494,214],{"class":138},[121,496,217],{"class":127},[121,498,220],{"class":131},[121,500,110],{"class":138},[121,502,445],{"class":170},[121,504,182],{"class":228},[121,506,193],{"class":131},[121,508,196],{"class":228},[121,510,110],{"class":138},[121,512,513],{"class":170},"find",[121,515,182],{"class":228},[121,517,519],{"class":518},"sbssI","1",[121,521,196],{"class":228},[121,523,149],{"class":138},[121,525,526,528,530],{"class":123,"line":205},[121,527,377],{"class":138},[121,529,196],{"class":131},[121,531,149],{"class":138},[85,533,534,535,110],{},"You can also bind a connection to an existing builder chain with ",[89,536,537],{},"useConnection",[112,539,541],{"className":114,"code":540,"language":116,"meta":117,"style":117},"const query = Pet.query().where(\"type\", \"cat\");\nconst pets = await query.useConnection(trx).get();\n",[89,542,543,586],{"__ignoreMap":117},[121,544,545,548,551,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584],{"class":123,"line":124},[121,546,547],{"class":185},"const",[121,549,550],{"class":131}," query ",[121,552,553],{"class":138},"=",[121,555,300],{"class":131},[121,557,110],{"class":138},[121,559,445],{"class":170},[121,561,174],{"class":131},[121,563,110],{"class":138},[121,565,456],{"class":170},[121,567,182],{"class":131},[121,569,146],{"class":138},[121,571,463],{"class":142},[121,573,146],{"class":138},[121,575,247],{"class":138},[121,577,139],{"class":138},[121,579,472],{"class":142},[121,581,146],{"class":138},[121,583,196],{"class":131},[121,585,149],{"class":138},[121,587,588,590,593,595,597,600,602,604,607,609,611,613],{"class":123,"line":152},[121,589,547],{"class":185},[121,591,592],{"class":131}," pets ",[121,594,553],{"class":138},[121,596,217],{"class":127},[121,598,599],{"class":131}," query",[121,601,110],{"class":138},[121,603,537],{"class":170},[121,605,606],{"class":131},"(trx)",[121,608,110],{"class":138},[121,610,481],{"class":170},[121,612,174],{"class":131},[121,614,149],{"class":138},[80,616,618],{"id":617},"models-remember-their-connection","Models Remember Their Connection",[85,620,621,622,624,625,628],{},"Models loaded through a transaction-bound query keep that connection. Calling ",[89,623,363],{},", ",[89,626,627],{},"delete",", or accessing relations on them stays inside the transaction. You don't need to pass the transaction again for subsequent operations.",[112,630,632],{"className":114,"code":631,"language":116,"meta":117,"style":117},"await db.transaction().execute(async (trx) => {\n  const pet = await Pet.query(trx).firstOrFail();\n\n  pet.name = \"Momo\";\n  await pet.save(); // runs on trx\n\n  const owner = await pet.owner; // loaded through trx\n});\n",[89,633,634,664,695,699,720,739,743,765],{"__ignoreMap":117},[121,635,636,638,640,642,644,646,648,650,652,654,656,658,660,662],{"class":123,"line":124},[121,637,162],{"class":127},[121,639,165],{"class":131},[121,641,110],{"class":138},[121,643,171],{"class":170},[121,645,174],{"class":131},[121,647,110],{"class":138},[121,649,179],{"class":170},[121,651,182],{"class":131},[121,653,186],{"class":185},[121,655,189],{"class":138},[121,657,193],{"class":192},[121,659,196],{"class":138},[121,661,199],{"class":185},[121,663,202],{"class":138},[121,665,666,668,670,672,674,676,678,680,682,684,686,688,691,693],{"class":123,"line":152},[121,667,208],{"class":185},[121,669,293],{"class":131},[121,671,214],{"class":138},[121,673,217],{"class":127},[121,675,300],{"class":131},[121,677,110],{"class":138},[121,679,445],{"class":170},[121,681,182],{"class":228},[121,683,193],{"class":131},[121,685,196],{"class":228},[121,687,110],{"class":138},[121,689,690],{"class":170},"firstOrFail",[121,692,174],{"class":228},[121,694,149],{"class":138},[121,696,697],{"class":123,"line":159},[121,698,156],{"emptyLinePlaceholder":155},[121,700,701,704,706,709,711,713,716,718],{"class":123,"line":205},[121,702,703],{"class":131},"  pet",[121,705,110],{"class":138},[121,707,708],{"class":131},"name",[121,710,214],{"class":138},[121,712,139],{"class":138},[121,714,715],{"class":142},"Momo",[121,717,146],{"class":138},[121,719,149],{"class":138},[121,721,722,724,726,728,730,732,735],{"class":123,"line":283},[121,723,356],{"class":127},[121,725,293],{"class":131},[121,727,110],{"class":138},[121,729,363],{"class":170},[121,731,174],{"class":228},[121,733,734],{"class":138},";",[121,736,738],{"class":737},"sHwdD"," // runs on trx\n",[121,740,741],{"class":123,"line":288},[121,742,156],{"emptyLinePlaceholder":155},[121,744,745,747,749,751,753,755,757,760,762],{"class":123,"line":353},[121,746,208],{"class":185},[121,748,492],{"class":131},[121,750,214],{"class":138},[121,752,217],{"class":127},[121,754,293],{"class":131},[121,756,110],{"class":138},[121,758,759],{"class":131},"owner",[121,761,734],{"class":138},[121,763,764],{"class":737}," // loaded through trx\n",[121,766,767,769,771],{"class":123,"line":374},[121,768,377],{"class":138},[121,770,196],{"class":131},[121,772,149],{"class":138},[85,774,775,776,779,780,783],{},"The same applies to models returned by ",[89,777,778],{},"create(attributes, trx)"," and to eager-loaded relations (",[89,781,782],{},"Pet.query(trx).with(\"owner\")",").",[85,785,786,787,789,790,792,793,237],{},"For a model instance that isn't already bound to a transaction, either pass the transaction to ",[89,788,363],{},"/",[89,791,627],{}," directly or bind it with ",[89,794,537],{},[112,796,798],{"className":114,"code":797,"language":116,"meta":117,"style":117},"const pet = new Pet({ name: \"Hawky\", type: \"hawk\" });\n\nawait pet.save(trx);\n// or\nawait pet.useConnection(trx).save();\n",[89,799,800,847,851,865,870],{"__ignoreMap":117},[121,801,802,804,807,809,811,813,815,817,819,821,823,826,828,830,832,834,836,839,841,843,845],{"class":123,"line":124},[121,803,547],{"class":185},[121,805,806],{"class":131}," pet ",[121,808,553],{"class":138},[121,810,255],{"class":138},[121,812,300],{"class":170},[121,814,182],{"class":131},[121,816,231],{"class":138},[121,818,234],{"class":228},[121,820,237],{"class":138},[121,822,139],{"class":138},[121,824,825],{"class":142},"Hawky",[121,827,146],{"class":138},[121,829,247],{"class":138},[121,831,320],{"class":228},[121,833,237],{"class":138},[121,835,139],{"class":138},[121,837,838],{"class":142},"hawk",[121,840,146],{"class":138},[121,842,346],{"class":138},[121,844,196],{"class":131},[121,846,149],{"class":138},[121,848,849],{"class":123,"line":152},[121,850,156],{"emptyLinePlaceholder":155},[121,852,853,855,857,859,861,863],{"class":123,"line":159},[121,854,162],{"class":127},[121,856,293],{"class":131},[121,858,110],{"class":138},[121,860,363],{"class":170},[121,862,606],{"class":131},[121,864,149],{"class":138},[121,866,867],{"class":123,"line":205},[121,868,869],{"class":737},"// or\n",[121,871,872,874,876,878,880,882,884,886,888],{"class":123,"line":283},[121,873,162],{"class":127},[121,875,293],{"class":131},[121,877,110],{"class":138},[121,879,537],{"class":170},[121,881,606],{"class":131},[121,883,110],{"class":138},[121,885,363],{"class":170},[121,887,174],{"class":131},[121,889,149],{"class":138},[80,891,893],{"id":892},"creating","Creating",[85,895,896,898,899,902],{},[89,897,225],{}," and ",[89,900,901],{},"createMany"," accept a connection as their second argument.",[112,904,906],{"className":114,"code":905,"language":116,"meta":117,"style":117},"await db.transaction().execute(async (trx) => {\n  await Pet.create({ name: \"Momo\", type: \"lemur\" }, trx);\n\n  await Pet.create(\n    [\n      { name: \"Appa\", type: \"bison\" },\n      { name: \"Hawky\", type: \"hawk\" },\n    ],\n    trx,\n  );\n});\n",[89,907,908,938,984,988,1001,1006,1036,1064,1072,1080,1088],{"__ignoreMap":117},[121,909,910,912,914,916,918,920,922,924,926,928,930,932,934,936],{"class":123,"line":124},[121,911,162],{"class":127},[121,913,165],{"class":131},[121,915,110],{"class":138},[121,917,171],{"class":170},[121,919,174],{"class":131},[121,921,110],{"class":138},[121,923,179],{"class":170},[121,925,182],{"class":131},[121,927,186],{"class":185},[121,929,189],{"class":138},[121,931,193],{"class":192},[121,933,196],{"class":138},[121,935,199],{"class":185},[121,937,202],{"class":138},[121,939,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,973,975,978,980,982],{"class":123,"line":152},[121,941,356],{"class":127},[121,943,300],{"class":131},[121,945,110],{"class":138},[121,947,225],{"class":170},[121,949,182],{"class":228},[121,951,231],{"class":138},[121,953,234],{"class":228},[121,955,237],{"class":138},[121,957,139],{"class":138},[121,959,715],{"class":142},[121,961,146],{"class":138},[121,963,247],{"class":138},[121,965,320],{"class":228},[121,967,237],{"class":138},[121,969,139],{"class":138},[121,971,972],{"class":142},"lemur",[121,974,146],{"class":138},[121,976,977],{"class":138}," },",[121,979,276],{"class":131},[121,981,196],{"class":228},[121,983,149],{"class":138},[121,985,986],{"class":123,"line":159},[121,987,156],{"emptyLinePlaceholder":155},[121,989,990,992,994,996,998],{"class":123,"line":205},[121,991,356],{"class":127},[121,993,300],{"class":131},[121,995,110],{"class":138},[121,997,225],{"class":170},[121,999,1000],{"class":228},"(\n",[121,1002,1003],{"class":123,"line":283},[121,1004,1005],{"class":228},"    [\n",[121,1007,1008,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033],{"class":123,"line":288},[121,1009,1010],{"class":138},"      {",[121,1012,234],{"class":228},[121,1014,237],{"class":138},[121,1016,139],{"class":138},[121,1018,313],{"class":142},[121,1020,146],{"class":138},[121,1022,247],{"class":138},[121,1024,320],{"class":228},[121,1026,237],{"class":138},[121,1028,139],{"class":138},[121,1030,327],{"class":142},[121,1032,146],{"class":138},[121,1034,1035],{"class":138}," },\n",[121,1037,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062],{"class":123,"line":353},[121,1039,1010],{"class":138},[121,1041,234],{"class":228},[121,1043,237],{"class":138},[121,1045,139],{"class":138},[121,1047,825],{"class":142},[121,1049,146],{"class":138},[121,1051,247],{"class":138},[121,1053,320],{"class":228},[121,1055,237],{"class":138},[121,1057,139],{"class":138},[121,1059,838],{"class":142},[121,1061,146],{"class":138},[121,1063,1035],{"class":138},[121,1065,1066,1069],{"class":123,"line":374},[121,1067,1068],{"class":228},"    ]",[121,1070,1071],{"class":138},",\n",[121,1073,1075,1078],{"class":123,"line":1074},9,[121,1076,1077],{"class":131},"    trx",[121,1079,1071],{"class":138},[121,1081,1083,1086],{"class":123,"line":1082},10,[121,1084,1085],{"class":228},"  )",[121,1087,149],{"class":138},[121,1089,1091,1093,1095],{"class":123,"line":1090},11,[121,1092,377],{"class":138},[121,1094,196],{"class":131},[121,1096,149],{"class":138},[80,1098,99],{"id":1099},"modeltransaction",[85,1101,1102],{},"As a shorthand, you can start a transaction directly from any model without importing the database instance. The transaction runs on that model's database and can be used with any model on the same database.",[112,1104,1106],{"className":114,"code":1105,"language":116,"meta":117,"style":117},"await Person.transaction(async (trx) => {\n  const person = await Person.create({ name: \"Katara\" }, trx);\n  await Pet.create({ name: \"Momo\", type: \"lemur\", person_id: person.id }, trx);\n});\n",[89,1107,1108,1132,1171,1227],{"__ignoreMap":117},[121,1109,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130],{"class":123,"line":124},[121,1111,162],{"class":127},[121,1113,220],{"class":131},[121,1115,110],{"class":138},[121,1117,171],{"class":170},[121,1119,182],{"class":131},[121,1121,186],{"class":185},[121,1123,189],{"class":138},[121,1125,193],{"class":192},[121,1127,196],{"class":138},[121,1129,199],{"class":185},[121,1131,202],{"class":138},[121,1133,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1161,1163,1165,1167,1169],{"class":123,"line":152},[121,1135,208],{"class":185},[121,1137,211],{"class":131},[121,1139,214],{"class":138},[121,1141,217],{"class":127},[121,1143,220],{"class":131},[121,1145,110],{"class":138},[121,1147,225],{"class":170},[121,1149,182],{"class":228},[121,1151,231],{"class":138},[121,1153,234],{"class":228},[121,1155,237],{"class":138},[121,1157,139],{"class":138},[121,1159,1160],{"class":142},"Katara",[121,1162,146],{"class":138},[121,1164,977],{"class":138},[121,1166,276],{"class":131},[121,1168,196],{"class":228},[121,1170,149],{"class":138},[121,1172,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225],{"class":123,"line":159},[121,1174,356],{"class":127},[121,1176,300],{"class":131},[121,1178,110],{"class":138},[121,1180,225],{"class":170},[121,1182,182],{"class":228},[121,1184,231],{"class":138},[121,1186,234],{"class":228},[121,1188,237],{"class":138},[121,1190,139],{"class":138},[121,1192,715],{"class":142},[121,1194,146],{"class":138},[121,1196,247],{"class":138},[121,1198,320],{"class":228},[121,1200,237],{"class":138},[121,1202,139],{"class":138},[121,1204,972],{"class":142},[121,1206,146],{"class":138},[121,1208,247],{"class":138},[121,1210,334],{"class":228},[121,1212,237],{"class":138},[121,1214,211],{"class":131},[121,1216,110],{"class":138},[121,1218,343],{"class":131},[121,1220,977],{"class":138},[121,1222,276],{"class":131},[121,1224,196],{"class":228},[121,1226,149],{"class":138},[121,1228,1229,1231,1233],{"class":123,"line":205},[121,1230,377],{"class":138},[121,1232,196],{"class":131},[121,1234,149],{"class":138},[80,1236,1238],{"id":1237},"raw-kysely-queries","Raw Kysely Queries",[85,1240,1241,1242,1245],{},"The transaction is a regular Kysely ",[89,1243,1244],{},"Transaction",", so raw queries can run on it alongside model activity.",[112,1247,1249],{"className":114,"code":1248,"language":116,"meta":117,"style":117},"await db.transaction().execute(async (trx) => {\n  await Person.create({ name: \"Toph\" }, trx);\n\n  await trx.updateTable(\"people\").set({ favorite_color: \"green\" }).where(\"name\", \"=\", \"Toph\").execute();\n});\n",[89,1250,1251,1281,1314,1318,1403],{"__ignoreMap":117},[121,1252,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279],{"class":123,"line":124},[121,1254,162],{"class":127},[121,1256,165],{"class":131},[121,1258,110],{"class":138},[121,1260,171],{"class":170},[121,1262,174],{"class":131},[121,1264,110],{"class":138},[121,1266,179],{"class":170},[121,1268,182],{"class":131},[121,1270,186],{"class":185},[121,1272,189],{"class":138},[121,1274,193],{"class":192},[121,1276,196],{"class":138},[121,1278,199],{"class":185},[121,1280,202],{"class":138},[121,1282,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1304,1306,1308,1310,1312],{"class":123,"line":152},[121,1284,356],{"class":127},[121,1286,220],{"class":131},[121,1288,110],{"class":138},[121,1290,225],{"class":170},[121,1292,182],{"class":228},[121,1294,231],{"class":138},[121,1296,234],{"class":228},[121,1298,237],{"class":138},[121,1300,139],{"class":138},[121,1302,1303],{"class":142},"Toph",[121,1305,146],{"class":138},[121,1307,977],{"class":138},[121,1309,276],{"class":131},[121,1311,196],{"class":228},[121,1313,149],{"class":138},[121,1315,1316],{"class":123,"line":159},[121,1317,156],{"emptyLinePlaceholder":155},[121,1319,1320,1322,1324,1326,1329,1331,1333,1336,1338,1340,1342,1345,1347,1349,1352,1354,1356,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401],{"class":123,"line":205},[121,1321,356],{"class":127},[121,1323,276],{"class":131},[121,1325,110],{"class":138},[121,1327,1328],{"class":170},"updateTable",[121,1330,182],{"class":228},[121,1332,146],{"class":138},[121,1334,1335],{"class":142},"people",[121,1337,146],{"class":138},[121,1339,196],{"class":228},[121,1341,110],{"class":138},[121,1343,1344],{"class":170},"set",[121,1346,182],{"class":228},[121,1348,231],{"class":138},[121,1350,1351],{"class":228}," favorite_color",[121,1353,237],{"class":138},[121,1355,139],{"class":138},[121,1357,1358],{"class":142},"green",[121,1360,146],{"class":138},[121,1362,346],{"class":138},[121,1364,196],{"class":228},[121,1366,110],{"class":138},[121,1368,456],{"class":170},[121,1370,182],{"class":228},[121,1372,146],{"class":138},[121,1374,708],{"class":142},[121,1376,146],{"class":138},[121,1378,247],{"class":138},[121,1380,139],{"class":138},[121,1382,553],{"class":142},[121,1384,146],{"class":138},[121,1386,247],{"class":138},[121,1388,139],{"class":138},[121,1390,1303],{"class":142},[121,1392,146],{"class":138},[121,1394,196],{"class":228},[121,1396,110],{"class":138},[121,1398,179],{"class":170},[121,1400,174],{"class":228},[121,1402,149],{"class":138},[121,1404,1405,1407,1409],{"class":123,"line":283},[121,1406,377],{"class":138},[121,1408,196],{"class":131},[121,1410,149],{"class":138},[1412,1413,1414],"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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":117,"searchDepth":152,"depth":152,"links":1416},[1417,1418,1419,1420,1421,1422],{"id":82,"depth":152,"text":83},{"id":384,"depth":152,"text":385},{"id":617,"depth":152,"text":618},{"id":892,"depth":152,"text":893},{"id":1099,"depth":152,"text":99},{"id":1237,"depth":152,"text":1238},"Wrapping model activity in database transactions with Vasta.","md",null,{},{"icon":64},{"description":1429,"title":61},"Learn how to wrap model activity in database transactions with Vasta.","vBluhyUJaN1baZ_RfyIdfbt4w663Qm-g4VB3XjFmpZs",[1432,1434],{"title":56,"path":57,"stem":58,"description":1433,"icon":59,"children":-1},"Defining migrations and seeders using kysely-ctl and Vasta",{"title":71,"path":72,"stem":73,"description":117,"children":-1},1784320969157]