mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
2701-как будто ок днд работает
This commit is contained in:
@@ -921,3 +921,32 @@ func (s *Service) ReorderItem(draftID, itemID uuid.UUID, newOrder int) error {
|
||||
// Обновляем порядок целевого элемента
|
||||
return s.draftRepo.UpdateItemOrder(itemID, newOrder)
|
||||
}
|
||||
|
||||
// ReorderItems обновляет порядок нескольких элементов в черновике
|
||||
func (s *Service) ReorderItems(draftID uuid.UUID, items []struct {
|
||||
ID uuid.UUID
|
||||
Order int
|
||||
}) error {
|
||||
// Проверяем, что черновик существует
|
||||
draft, err := s.draftRepo.GetByID(draftID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("черновик не найден: %w", err)
|
||||
}
|
||||
|
||||
// Проверяем, что все элементы принадлежат указанному черновику
|
||||
for _, item := range items {
|
||||
found := false
|
||||
for _, draftItem := range draft.Items {
|
||||
if draftItem.ID == item.ID {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return fmt.Errorf("элемент с id %s не принадлежит черновику %s", item.ID.String(), draftID.String())
|
||||
}
|
||||
}
|
||||
|
||||
// Вызываем метод репозитория для обновления порядка
|
||||
return s.draftRepo.ReorderItems(draftID, items)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user