Hooks and Callbacks
Hook va callback'lar
GORM modelга maxsus nomli metod qo'shsangiz, GORM uni tegishli amaldan oldin yoki keyin avtomatik chaqiradi — bu "hook" (ilgak) deyiladi. Eng ko'p ishlatiladigani: BeforeCreate.
import (
"errors"
"gorm.io/gorm"
)
type User struct {
ID uint
Name string
Email string
}
// BeforeCreate — Create chaqirilishidan OLDIN avtomatik ishga tushadi
func (u *User) BeforeCreate(tx *gorm.DB) error {
if u.Email == "" {
return errors.New("email bo'sh bo'lishi mumkin emas")
}
return nil
}
// AfterCreate — Create MUVAFFAQIYATLI bo'lgach ishga tushadi
func (u *User) AfterCreate(tx *gorm.DB) error {
fmt.Println("yangi foydalanuvchi yaratildi:", u.ID)
return nil
}BeforeCreate xato (error) qaytarsa, GORM yozuvni umuman yaratmaydi — bu validatsiyani markazlashtirish uchun juda qulay (har safar Create chaqirilgan joyda alohida tekshirish shart emas). Boshqa mashhur hook'lar: BeforeUpdate, BeforeDelete, AfterFind. Bu naqsh — "Test Fixtures and Helpers" darsida ko'rgan t.Cleanup() g'oyasiga o'xshaydi: "bu voqea sodir bo'lganda, avtomatik shu kodni ham bajar".
Key Takeaway
Key Takeaway:
BeforeCreate, AfterCreate kabi hook metodlari GORM tomonidan avtomatik chaqiriladi — validatsiya va yon ta'sirlarni markazlashtirish uchun ishlatiladi.
NEXT UP
Transactions