geo distance meter

This commit is contained in:
2025-11-06 15:34:51 +09:00
parent 0bbeb0767b
commit 240864617f
8 changed files with 290 additions and 11 deletions

View File

@@ -0,0 +1,85 @@
# Скрипт очистки взаимодействий пользователей
## Описание
Этот скрипт удаляет все взаимодействия между пользователями, оставляя только сами профили. Полезно для тестирования или сброса состояния приложения.
## Что удаляется
-**Messages** - все сообщения в чатах
-**Matches** - все матчи между пользователями
-**Profile Views** - все просмотры профилей
-**Swipes** - все свайпы (лайки, дизлайки, суперлайки)
-**Notifications** - все уведомления
## Что НЕ удаляется
-**Users** - пользователи остаются
-**Profiles** - профили пользователей остаются
## Использование
### Способ 1: Через Makefile (рекомендуется)
```bash
make clear-interactions
```
### Способ 2: Прямой запуск скрипта
```bash
./bin/clear_interactions.sh
```
### Способ 3: Прямое выполнение SQL
```bash
PGPASSWORD='your_password' psql -h host -U username -d database -f sql/clear_interactions.sql
```
## Подтверждение
Скрипт запросит подтверждение перед выполнением:
```
Вы уверены, что хотите продолжить? (yes/no):
```
Введите `yes` для продолжения или `no` для отмены.
## Требования
- Файл `.env` должен существовать и содержать переменные:
- `DB_HOST`
- `DB_PORT`
- `DB_NAME`
- `DB_USERNAME`
- `DB_PASSWORD`
## Вывод
После успешного выполнения скрипт покажет статистику:
```
table_name | remaining_records
-------------------+-------------------
messages | 0
matches | 0
profile_views | 0
swipes | 0
notifications | 0
users | 2
profiles | 2
```
## Безопасность
- Скрипт использует транзакцию (BEGIN/COMMIT) для безопасности
- Все операции выполняются атомарно
- В случае ошибки изменения откатываются
## Примечания
- ⚠️ **Необратимая операция!** Удаленные данные нельзя восстановить
- 💡 Рекомендуется делать резервную копию БД перед запуском
- 🔒 Убедитесь, что у вас есть права на удаление данных в БД

71
bin/clear_interactions.sh Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/bash
# Скрипт для очистки всех взаимодействий между пользователями
# Использование: ./clear_interactions.sh
set -e
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${YELLOW}================================================${NC}"
echo -e "${YELLOW} Скрипт очистки взаимодействий пользователей${NC}"
echo -e "${YELLOW}================================================${NC}"
echo ""
echo -e "${RED}ВНИМАНИЕ!${NC} Будут удалены:"
echo " - Все сообщения (messages)"
echo " - Все матчи (matches)"
echo " - Все просмотры профилей (profile_views)"
echo " - Все свайпы (swipes)"
echo " - Все уведомления (notifications)"
echo ""
echo -e "Профили пользователей ${GREEN}НЕ${NC} будут удалены."
echo ""
# Запрос подтверждения
read -p "Вы уверены, что хотите продолжить? (yes/no): " confirmation
if [ "$confirmation" != "yes" ]; then
echo -e "${YELLOW}Операция отменена.${NC}"
exit 0
fi
echo ""
echo -e "${YELLOW}Загрузка переменных окружения...${NC}"
# Загрузка переменных из .env файла
if [ -f .env ]; then
export $(cat .env | grep -v '^#' | xargs)
else
echo -e "${RED}Ошибка: файл .env не найден!${NC}"
exit 1
fi
# Проверка наличия необходимых переменных
if [ -z "$DB_HOST" ] || [ -z "$DB_PORT" ] || [ -z "$DB_NAME" ] || [ -z "$DB_USERNAME" ] || [ -z "$DB_PASSWORD" ]; then
echo -e "${RED}Ошибка: не все переменные БД определены в .env${NC}"
exit 1
fi
echo -e "${GREEN}Переменные загружены успешно.${NC}"
echo ""
echo -e "${YELLOW}Выполнение SQL скрипта...${NC}"
# Выполнение SQL скрипта
PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USERNAME" -d "$DB_NAME" -f sql/clear_interactions.sql
if [ $? -eq 0 ]; then
echo ""
echo -e "${GREEN}================================================${NC}"
echo -e "${GREEN} ✅ Очистка выполнена успешно!${NC}"
echo -e "${GREEN}================================================${NC}"
else
echo ""
echo -e "${RED}================================================${NC}"
echo -e "${RED} ❌ Ошибка при выполнении очистки!${NC}"
echo -e "${RED}================================================${NC}"
exit 1
fi