Lifecycle Hooks
Execute custom logic before and after database operations
Available Hooks
Stabilize provides the following lifecycle hooks:
beforeCreate- Before inserting a new recordafterCreate- After inserting a new recordbeforeUpdate- Before updating a recordafterUpdate- After updating a recordbeforeSave- Before create or updateafterSave- After create or updatebeforeDelete- Before deleting a recordafterDelete- After deleting a record
Define Hooks in Model
models/user.tstypescript
import { defineModel, DataTypes } from "stabilize-orm";const User = defineModel({tableName: "users",columns: {id: { type: DataTypes.INTEGER },email: { type: DataTypes.STRING, length: 100 },password: { type: DataTypes.STRING, length: 255 },},hooks: {beforeCreate: async (entity) => {// Hash password before savingentity.password = await hashPassword(entity.password);},afterCreate: async (entity) => {// Send welcome emailawait sendWelcomeEmail(entity.email);},beforeUpdate: async (entity) => {// Update modified timestampentity.updatedAt = new Date();},},});
Multiple Hooks
You can define multiple callbacks for the same hook:
models/user.tstypescript
const User = defineModel({tableName: "users",columns: { /* ... */ },hooks: {beforeCreate: [async (entity) => {entity.password = await hashPassword(entity.password);},async (entity) => {entity.createdAt = new Date();},],},});
