Proje: Okul Platform · Hub: Okul Platform — Conventions
DB Transaction Pattern
Kritik operasyonlarda DB::transaction() kullanılıyor. Özellikle Checkout controller’da yaygın:
// Closure ile
$checkout = DB::transaction(function () use ($dto) {
return $this->checkoutService->create($dto);
});
// Arrow function ile
DB::transaction(fn () => $this->checkoutService->delete($checkout));Exception + Transaction Birlikte Kullanım
try {
$checkout = DB::transaction(
fn () => $this->checkoutService->update($checkout, $dto)
);
} catch (CheckoutCannotBeModifiedException $e) {
return JsonResponse::unprocessable($e->getMessage());
}Transaction fail olursa rollback, exception yakalanırsa hata response.
DatabaseTransactions Test Trait
Test ortamında DatabaseTransactions kullanılıyor → Her test sonrası otomatik rollback.
Bu sayede DB::transaction içindeki kodlar da test sonrası geri alınır.
Neden Transaction?
- Checkout oluşturma: birden fazla tablo güncelleme
- Medya taşıma (media/move)
- Ödeme onayı: checkout + payment kaydı
Related
- api-checkout-flow — Checkout operasyonları
- api-testing-conventions — DatabaseTransactions test trait