nakama/DELETE_MUSIC.md

5.3 KiB
Raw Permalink Blame History

Скрипт удаления всех альбомов и треков

Описание

Скрипт deleteAllMusic.js безвозвратно удаляет все музыкальные данные из базы данных:

  • Все треки (Tracks)
  • Все альбомы (Albums)
  • Все избранные треки (FavoriteTrack)
  • Все ссылки на треки в постах (attachedTrack устанавливается в null)

⚠️ ВНИМАНИЕ: Это действие необратимо!

Использование

Шаг 1: Проверка подключения и данных

Сначала проверьте, что скрипт может подключиться к базе и видит данные:

node backend/scripts/testDeleteMusic.js

Этот скрипт покажет статистику без удаления данных.

Шаг 2: Удаление данных

Для Windows (CMD/PowerShell):

cd backend
node scripts\deleteAllMusic.js

Для Linux/Mac:

cd backend
node scripts/deleteAllMusic.js

Или из корня проекта:

node backend/scripts/deleteAllMusic.js

Примечание: Скрипт покажет предупреждение и подождет 3 секунды перед удалением. Нажмите Ctrl+C для отмены, если передумали.

Что делает скрипт

  1. Подключается к MongoDB используя настройки из .env
  2. Показывает статистику текущего количества записей
  3. Удаляет данные в следующем порядке:
    • Избранные треки (FavoriteTrack)
    • Обнуляет attachedTrack в постах
    • Удаляет все треки (Track)
    • Удаляет все альбомы (Album)
  4. Показывает финальную статистику

Пример вывода

🔌 Подключение к MongoDB...
✅ Подключено к MongoDB

📊 Текущая статистика:
   - Треков: 150
   - Альбомов: 25
   - Избранных треков: 500
   - Постов с прикрепленными треками: 80

🗑️  Начало удаления...

1⃣  Удаление избранных треков...
   ✅ Удалено избранных треков: 500

2⃣  Обнуление прикрепленных треков в постах...
   ✅ Обновлено постов: 80

3⃣  Удаление треков...
   ✅ Удалено треков: 150

4⃣  Удаление альбомов...
   ✅ Удалено альбомов: 25

📊 Финальная статистика:
   - Треков: 0
   - Альбомы: 0
   - Избранных треков: 0
   - Постов с прикрепленными треками: 0

✅ Все альбомы и треки успешно удалены!

🔌 Отключено от MongoDB

Важные замечания

  • ⚠️ Физические файлы не удаляются - скрипт удаляет только записи из базы данных. Файлы в backend/uploads/music/ остаются на диске. Для полной очистки нужно вручную удалить файлы.

  • ⚠️ Исполнители (Artists) не удаляются - они остаются в базе, так как могут быть переиспользованы при загрузке новых треков.

  • Посты не удаляются - только обнуляется поле attachedTrack.

Дополнительная очистка файлов

Если нужно также удалить физические файлы (аудио и обложки):

Windows (PowerShell):

# Удалить все файлы в папке музыки (сохранив структуру папок)
Remove-Item -Path "backend\uploads\music\*" -Include *.mp3,*.wav,*.ogg,*.m4a,*.flac,*.jpg,*.jpeg,*.png -Force

# Или полностью удалить папку и создать заново
Remove-Item -Path "backend\uploads\music" -Recurse -Force
New-Item -Path "backend\uploads\music" -ItemType Directory

Linux/Mac:

# Удалить все файлы в папке музыки
rm -f backend/uploads/music/*.{mp3,wav,ogg,m4a,flac,jpg,jpeg,png}

# Или полностью удалить папку и создать заново
rm -rf backend/uploads/music
mkdir -p backend/uploads/music

Восстановление после удаления

После выполнения скрипта невозможно восстановить удаленные данные из базы данных. Если у вас есть резервная копия (backup), вы можете восстановить данные из неё.

Для создания резервной копии перед удалением используйте:

node backend/scripts/backup.js