[{"data":1,"prerenderedAt":530},["ShallowReactive",2],{"navigation_docs":3,"-models-events":74,"-models-events-surround":525},[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":51,"body":76,"description":517,"extension":518,"links":519,"meta":520,"navigation":521,"path":52,"seo":522,"stem":53,"__hash__":524},"docs/2.models/6.events.md",{"type":77,"value":78,"toc":515},"minimark",[79,83,95,398,401,404,448,451,500,511],[80,81,82],"p",{},"Lifecycle events let you run custom logic before and after model persistence.",[80,84,85,86,90,91,94],{},"Define them in the ",[87,88,89],"code",{},"events"," object passed to ",[87,92,93],{},"defineModel",":",[96,97,102],"pre",{"className":98,"code":99,"language":100,"meta":101,"style":101},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineModel } from \"vasta-orm\";\nimport db from \"@/database/db\";\n\nexport default class Pet extends defineModel({\n  db,\n  table: \"pets\",\n  events: {\n    created: async (pet) => {\n      console.log(`Created pet ${pet.attributes.name}`);\n      await someAsyncFunction();\n    },\n    deleting: (pet) => {\n      console.log(`Deleting pet ${pet.attributes.id}`);\n    },\n  },\n}) {}\n","ts","",[87,103,104,140,160,167,196,205,223,234,260,302,316,322,340,375,380,386],{"__ignoreMap":101},[105,106,109,113,117,121,124,127,130,134,137],"span",{"class":107,"line":108},"line",1,[105,110,112],{"class":111},"s7zQu","import",[105,114,116],{"class":115},"sMK4o"," {",[105,118,120],{"class":119},"sTEyZ"," defineModel",[105,122,123],{"class":115}," }",[105,125,126],{"class":111}," from",[105,128,129],{"class":115}," \"",[105,131,133],{"class":132},"sfazB","vasta-orm",[105,135,136],{"class":115},"\"",[105,138,139],{"class":115},";\n",[105,141,143,145,148,151,153,156,158],{"class":107,"line":142},2,[105,144,112],{"class":111},[105,146,147],{"class":119}," db ",[105,149,150],{"class":111},"from",[105,152,129],{"class":115},[105,154,155],{"class":132},"@/database/db",[105,157,136],{"class":115},[105,159,139],{"class":115},[105,161,163],{"class":107,"line":162},3,[105,164,166],{"emptyLinePlaceholder":165},true,"\n",[105,168,170,173,176,180,184,187,190,193],{"class":107,"line":169},4,[105,171,172],{"class":111},"export",[105,174,175],{"class":111}," default",[105,177,179],{"class":178},"spNyl"," class",[105,181,183],{"class":182},"sBMFI"," Pet",[105,185,186],{"class":178}," extends",[105,188,120],{"class":189},"s2Zo4",[105,191,192],{"class":119},"(",[105,194,195],{"class":115},"{\n",[105,197,199,202],{"class":107,"line":198},5,[105,200,201],{"class":119},"  db",[105,203,204],{"class":115},",\n",[105,206,208,212,214,216,219,221],{"class":107,"line":207},6,[105,209,211],{"class":210},"swJcz","  table",[105,213,94],{"class":115},[105,215,129],{"class":115},[105,217,218],{"class":132},"pets",[105,220,136],{"class":115},[105,222,204],{"class":115},[105,224,226,229,231],{"class":107,"line":225},7,[105,227,228],{"class":210},"  events",[105,230,94],{"class":115},[105,232,233],{"class":115}," {\n",[105,235,237,240,242,245,248,252,255,258],{"class":107,"line":236},8,[105,238,239],{"class":189},"    created",[105,241,94],{"class":115},[105,243,244],{"class":178}," async",[105,246,247],{"class":115}," (",[105,249,251],{"class":250},"sHdIc","pet",[105,253,254],{"class":115},")",[105,256,257],{"class":178}," =>",[105,259,233],{"class":115},[105,261,263,266,269,272,274,277,280,283,285,287,290,292,295,298,300],{"class":107,"line":262},9,[105,264,265],{"class":119},"      console",[105,267,268],{"class":115},".",[105,270,271],{"class":189},"log",[105,273,192],{"class":210},[105,275,276],{"class":115},"`",[105,278,279],{"class":132},"Created pet ",[105,281,282],{"class":115},"${",[105,284,251],{"class":119},[105,286,268],{"class":115},[105,288,289],{"class":119},"attributes",[105,291,268],{"class":115},[105,293,294],{"class":119},"name",[105,296,297],{"class":115},"}`",[105,299,254],{"class":210},[105,301,139],{"class":115},[105,303,305,308,311,314],{"class":107,"line":304},10,[105,306,307],{"class":111},"      await",[105,309,310],{"class":189}," someAsyncFunction",[105,312,313],{"class":210},"()",[105,315,139],{"class":115},[105,317,319],{"class":107,"line":318},11,[105,320,321],{"class":115},"    },\n",[105,323,325,328,330,332,334,336,338],{"class":107,"line":324},12,[105,326,327],{"class":189},"    deleting",[105,329,94],{"class":115},[105,331,247],{"class":115},[105,333,251],{"class":250},[105,335,254],{"class":115},[105,337,257],{"class":178},[105,339,233],{"class":115},[105,341,343,345,347,349,351,353,356,358,360,362,364,366,369,371,373],{"class":107,"line":342},13,[105,344,265],{"class":119},[105,346,268],{"class":115},[105,348,271],{"class":189},[105,350,192],{"class":210},[105,352,276],{"class":115},[105,354,355],{"class":132},"Deleting pet ",[105,357,282],{"class":115},[105,359,251],{"class":119},[105,361,268],{"class":115},[105,363,289],{"class":119},[105,365,268],{"class":115},[105,367,368],{"class":119},"id",[105,370,297],{"class":115},[105,372,254],{"class":210},[105,374,139],{"class":115},[105,376,378],{"class":107,"line":377},14,[105,379,321],{"class":115},[105,381,383],{"class":107,"line":382},15,[105,384,385],{"class":115},"  },\n",[105,387,389,392,395],{"class":107,"line":388},16,[105,390,391],{"class":115},"}",[105,393,394],{"class":119},") ",[105,396,397],{"class":115},"{}\n",[80,399,400],{},"Event handlers receive the model instance as a parameter and should not return anything. They may be async functions, and Vasta will wait for them to resolve before proceeding.",[80,402,403],{},"Supported events:",[405,406,407,413,418,423,428,433,438,443],"ul",{},[408,409,410],"li",{},[87,411,412],{},"creating",[408,414,415],{},[87,416,417],{},"created",[408,419,420],{},[87,421,422],{},"updating",[408,424,425],{},[87,426,427],{},"updated",[408,429,430],{},[87,431,432],{},"saving",[408,434,435],{},[87,436,437],{},"saved",[408,439,440],{},[87,441,442],{},"deleting",[408,444,445],{},[87,446,447],{},"deleted",[80,449,450],{},"Dispatch behavior:",[405,452,453,469,482,491],{},[408,454,455,456,459,460,462,463,462,465,462,467],{},"New model ",[87,457,458],{},"save()"," dispatches: ",[87,461,432],{}," → ",[87,464,412],{},[87,466,417],{},[87,468,437],{},[408,470,471,472,459,474,462,476,462,478,462,480],{},"Existing dirty model ",[87,473,458],{},[87,475,432],{},[87,477,422],{},[87,479,427],{},[87,481,437],{},[408,483,484,485,459,487,462,489],{},"Existing clean model ",[87,486,458],{},[87,488,432],{},[87,490,437],{},[408,492,493,459,496,462,498],{},[87,494,495],{},"delete()",[87,497,442],{},[87,499,447],{},[80,501,502,503,506,507,510],{},"Events ending with ",[87,504,505],{},"-ing"," run before persistence. Events ending with ",[87,508,509],{},"-ed"," run after persistence.",[512,513,514],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .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);}",{"title":101,"searchDepth":142,"depth":142,"links":516},[],"Defining lifecycle events for models with Vasta.","md",null,{},{"icon":54},{"description":523,"title":51},"Learn how to define lifecycle events for models with Vasta.","q8Tt8nwaduTyipEtuA5LKTn_4SA2gFdachaTzgCyEa0",[526,528],{"title":46,"path":47,"stem":48,"description":527,"icon":49,"children":-1},"Defining relationships between models with Vasta.",{"title":56,"path":57,"stem":58,"description":529,"icon":59,"children":-1},"Defining migrations and seeders using kysely-ctl and Vasta",1784320848056]