2701-как будто ок днд работает

This commit is contained in:
2026-01-27 12:09:54 +03:00
parent de4bd9c8d7
commit 1e2d43be8e
13 changed files with 10257 additions and 175 deletions

View File

@@ -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
}