mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
2701-как будто ок днд работает
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package drafts
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"rmser/internal/domain/drafts"
|
||||
|
||||
"github.com/google/uuid"
|
||||
@@ -105,6 +107,35 @@ func (r *pgRepository) UpdateItemOrder(itemID uuid.UUID, newOrder int) error {
|
||||
Update("order", newOrder).Error
|
||||
}
|
||||
|
||||
// ReorderItems обновляет порядок нескольких элементов в одной транзакции
|
||||
func (r *pgRepository) ReorderItems(draftID uuid.UUID, items []struct {
|
||||
ID uuid.UUID
|
||||
Order int
|
||||
}) error {
|
||||
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||
for _, item := range items {
|
||||
// Проверяем, что элемент принадлежит указанному черновику
|
||||
var count int64
|
||||
if err := tx.Model(&drafts.DraftInvoiceItem{}).
|
||||
Where("id = ? AND draft_id = ?", item.ID, draftID).
|
||||
Count(&count).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if count == 0 {
|
||||
return fmt.Errorf("элемент с id %s не принадлежит черновику %s", item.ID.String(), draftID.String())
|
||||
}
|
||||
|
||||
// Обновляем только колонку order
|
||||
if err := tx.Model(&drafts.DraftInvoiceItem{}).
|
||||
Where("id = ?", item.ID).
|
||||
Update("order", item.Order).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (r *pgRepository) Delete(id uuid.UUID) error {
|
||||
return r.db.Delete(&drafts.DraftInvoice{}, id).Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user