refac: atomic merge, lost-update race, RunPurge cost, duplicated walks

This commit is contained in:
Florian Sylvain committed 2026-10-21 22:47:46 +02:00
1 parent 0fc3511e2b
commit 074944c99a
45 files changed
+2204 -267

No files matched your search

@@ -0,0 +1,30 @@
package persistence
import (
domain "RenewCMS/internal/domain/transaction"
"context"
"gorm.io/gorm"
)
var _ domain.Transactor = &Transactor{}
type Transactor struct {
db *gorm.DB
}
func NewTransactor(db *gorm.DB) *Transactor {
return &Transactor{db}
}
func (t *Transactor) Run(ctx context.Context, work func(domain.Repositories) error) error {
return t.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
return work(domain.Repositories{
Articles: NewArticleRepository(tx),
Sites: NewSiteRepository(tx),
Authors: NewAuthorRepository(tx),
Entries: NewEntryRepository(tx),
Images: NewImageRepository(tx),
})
})
}