nakama/DELETE_MUSIC.md

141 lines
5.3 KiB
Markdown
Raw Permalink Normal View History

2025-12-15 20:37:41 +00:00
# Скрипт удаления всех альбомов и треков
## Описание
Скрипт `deleteAllMusic.js` безвозвратно удаляет все музыкальные данные из базы данных:
- Все треки (Tracks)
- Все альбомы (Albums)
- Все избранные треки (FavoriteTrack)
- Все ссылки на треки в постах (attachedTrack устанавливается в null)
**⚠️ ВНИМАНИЕ: Это действие необратимо!**
## Использование
2025-12-15 21:04:26 +00:00
### Шаг 1: Проверка подключения и данных
Сначала проверьте, что скрипт может подключиться к базе и видит данные:
```cmd
node backend/scripts/testDeleteMusic.js
```
Этот скрипт покажет статистику без удаления данных.
### Шаг 2: Удаление данных
2025-12-15 20:37:41 +00:00
### Для Windows (CMD/PowerShell):
```cmd
cd backend
node scripts\deleteAllMusic.js
```
### Для Linux/Mac:
```bash
cd backend
node scripts/deleteAllMusic.js
```
### Или из корня проекта:
```cmd
node backend/scripts/deleteAllMusic.js
```
2025-12-15 21:04:26 +00:00
**Примечание:** Скрипт покажет предупреждение и подождет 3 секунды перед удалением. Нажмите Ctrl+C для отмены, если передумали.
2025-12-15 20:37:41 +00:00
## Что делает скрипт
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):
```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:
```bash
# Удалить все файлы в папке музыки
rm -f backend/uploads/music/*.{mp3,wav,ogg,m4a,flac,jpg,jpeg,png}
# Или полностью удалить папку и создать заново
rm -rf backend/uploads/music
mkdir -p backend/uploads/music
```
## Восстановление после удаления
После выполнения скрипта невозможно восстановить удаленные данные из базы данных. Если у вас есть резервная копия (backup), вы можете восстановить данные из неё.
Для создания резервной копии перед удалением используйте:
```cmd
node backend/scripts/backup.js
```