dubs-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +280 -0
- package/CLAUDE.md +46 -0
- package/CONNECT4_PRODUCTION_DEPLOY.md +155 -0
- package/CURRENT_SESSION.md +171 -0
- package/CURRENT_SESSION_DRAW.md +516 -0
- package/MARCH_MADNESS_SURVIVOR.md +254 -0
- package/PANDA.md +166 -0
- package/Procfile +4 -0
- package/README.md +476 -0
- package/controllers/livescoresController.js +376 -0
- package/controllers/pickemController.js +554 -0
- package/controllers/survivorAdminController.js +887 -0
- package/controllers/survivorController.js +623 -0
- package/cron/oracleMonitor.js +77 -0
- package/cron/pickemOracleMonitor.js +73 -0
- package/data/jackpot-history.json +952 -0
- package/data/ncaaTeams.js +406 -0
- package/documentation/API_SECURITY_GUIDE.md +327 -0
- package/documentation/ARCADE_API.md +593 -0
- package/documentation/ARCADE_IMPLEMENTATION_SUMMARY.md +399 -0
- package/documentation/ARCADE_QUICKSTART.md +242 -0
- package/documentation/AUTOMATIC_MODE_ORACLE.md +321 -0
- package/documentation/BUG_FIX_COHORT_DATE_DISPLAY.md +171 -0
- package/documentation/CLAIM_MIGRATION_INSTRUCTIONS.md +52 -0
- package/documentation/CLAIM_STATUS_FIX.md +67 -0
- package/documentation/CLI_TOOL_GUIDE.md +372 -0
- package/documentation/COHORT_RETENTION_ANALYSIS.md +295 -0
- package/documentation/COHORT_RETENTION_IMPLEMENTATION_COMPLETE.md +461 -0
- package/documentation/COHORT_RETENTION_SUMMARY.md +204 -0
- package/documentation/COMPLETE_PROJECT_SUMMARY.md +490 -0
- package/documentation/DATABASE_QUERIES.md +269 -0
- package/documentation/DATABASE_RETENTION_POLICY.md +390 -0
- package/documentation/DATABASE_SETUP_GUIDE.md +361 -0
- package/documentation/DATABASE_SETUP_SUMMARY.md +247 -0
- package/documentation/DEMO_API_CURL_COMMANDS.md +656 -0
- package/documentation/DEPLOYMENT_SUMMARY.txt +100 -0
- package/documentation/DUPLICATE_NOTIFICATIONS_FIXED.md +201 -0
- package/documentation/EXCHANGE_RATES_INTEGRATION.md +371 -0
- package/documentation/FINAL_API_PROTECTION_TABLE.md +175 -0
- package/documentation/GAME_START_NOTIFICATIONS_DEPLOYMENT.md +256 -0
- package/documentation/GAME_START_NOTIFICATIONS_INTEGRATION.md +275 -0
- package/documentation/HEROKU_DEPLOYMENT.md +134 -0
- package/documentation/HEROKU_SCHEDULER_SETUP.md +271 -0
- package/documentation/JACKPOT_API.md +521 -0
- package/documentation/JACKPOT_DEPLOYMENT_GUIDE.md +362 -0
- package/documentation/JWT_IMPLEMENTATION_SUMMARY.md +373 -0
- package/documentation/JWT_QUICK_SETUP.md +268 -0
- package/documentation/JWT_TESTING_GUIDE.md +404 -0
- package/documentation/KEEPER_RECOVERY_GUIDE.md +381 -0
- package/documentation/KEEPER_SETUP.md +206 -0
- package/documentation/KEEPER_STATE_MACHINE.md +423 -0
- package/documentation/LATEST_PRODUCTION_SETUP.md +387 -0
- package/documentation/LOCAL_VOTING_TEST.md +279 -0
- package/documentation/ORACLE_FIXES_SUMMARY.md +188 -0
- package/documentation/ORACLE_POSTGRESQL_UPDATE.md +202 -0
- package/documentation/PAYMENT_DEPLOYMENT.md +209 -0
- package/documentation/PNL_TRACKING_SETUP.md +189 -0
- package/documentation/PREVENTING_LOCKUP_ERRORS.md +472 -0
- package/documentation/PRODUCTION_READY_SUMMARY.md +227 -0
- package/documentation/PUBLIC_VS_PRIVATE_ENDPOINTS.md +278 -0
- package/documentation/QUICK_AUTH_SETUP.md +99 -0
- package/documentation/QUICK_DEPLOY.md +224 -0
- package/documentation/QUICK_FIX.md +114 -0
- package/documentation/QUICK_START.md +152 -0
- package/documentation/REFEREE_MODE_GUIDE.md +392 -0
- package/documentation/RETENTION_CORE_ACTION_UPDATE.md +313 -0
- package/documentation/RETENTION_UPDATE_SUMMARY.md +108 -0
- package/documentation/RUN_MIGRATION_NOW.md +39 -0
- package/documentation/SCRIPTS_UPDATE_SUMMARY.md +251 -0
- package/documentation/SETUP_GUIDE.md +184 -0
- package/documentation/STATE_MACHINE_IMPLEMENTATION.md +250 -0
- package/documentation/TELEGRAM_NOTIFICATIONS_DIAGNOSIS.md +361 -0
- package/documentation/UNIFIED_ARCHITECTURE.md +231 -0
- package/documentation/VOTING_DEPLOYMENT_SUMMARY.md +392 -0
- package/documentation/WEBSOCKET_ARCHITECTURE.md +881 -0
- package/documentation/WHAT_WE_BUILT_TODAY.md +369 -0
- package/documentation/latest/LATEST_PRODUCTION_SETUP.md +865 -0
- package/ecosystem.config.js +65 -0
- package/env.template +125 -0
- package/middleware/apiKeyAuth.js +136 -0
- package/middleware/authenticate.js +214 -0
- package/middleware/developerUserAuth.js +76 -0
- package/middleware/socketAuth.js +69 -0
- package/package.json +49 -0
- package/postman/Dubs-API-v1-With-Voting.postman_collection.json +555 -0
- package/postman/Dubs-API-v1.postman_collection.json +205 -0
- package/postman/Dubs_Developer_API.postman_collection.json +662 -0
- package/postman/QUICKSTART.md +118 -0
- package/postman/QUICK_REFERENCE.md +246 -0
- package/postman/README.md +71 -0
- package/postman/VOTING_API_GUIDE.md +426 -0
- package/refactor/Animations.md +148 -0
- package/refactor/Chat.md +252 -0
- package/routes/actionsRoutes.js +699 -0
- package/routes/adminRoutes.js +370 -0
- package/routes/analyticsRoutes.js +1262 -0
- package/routes/arcadeRoutes.js +557 -0
- package/routes/authRoutes.js +2310 -0
- package/routes/avatarRoutes.js +85 -0
- package/routes/botRoutes.js +211 -0
- package/routes/chatRoutes.js +377 -0
- package/routes/cryptoPriceRoutes.js +105 -0
- package/routes/developerRoutes.js +4201 -0
- package/routes/deviceRoutes.js +214 -0
- package/routes/dmRoutes.js +167 -0
- package/routes/esportsRoutes.js +806 -0
- package/routes/exchangeRateRoutes.js +233 -0
- package/routes/gamesRoutes.js +3028 -0
- package/routes/jackpotRoutes.js +754 -0
- package/routes/keeperMonitoringRoutes.js +156 -0
- package/routes/keeperWebhookRoutes.js +466 -0
- package/routes/livescoresRoutes.js +31 -0
- package/routes/pickemAdminRoutes.js +199 -0
- package/routes/pickemRoutes.js +231 -0
- package/routes/playerStatsRoutes.js +147 -0
- package/routes/portfolioRoutes.js +217 -0
- package/routes/promoRoutes.js +418 -0
- package/routes/referralEarningsRoutes.js +392 -0
- package/routes/socialRoutes.js +459 -0
- package/routes/sportsRoutes.js +1271 -0
- package/routes/survivorAdminRoutes.js +345 -0
- package/routes/survivorRoutes.js +756 -0
- package/routes/uploadRoutes.js +256 -0
- package/routes/userProfileRoutes.js +244 -0
- package/routes/whatsNewRoutes.js +331 -0
- package/scripts/.claude/settings.local.json +15 -0
- package/scripts/README.md +170 -0
- package/scripts/RESTART_EVERYTHING.sh +104 -0
- package/scripts/add-claim-columns.sql +48 -0
- package/scripts/add-crypto-prices-cache.sql +27 -0
- package/scripts/add-exchange-rates-cache.sql +40 -0
- package/scripts/add-game-invite-column.sql +23 -0
- package/scripts/add-game-invite-notification.sql +33 -0
- package/scripts/add-game-invite-telegram-pref.sql +16 -0
- package/scripts/add-game-joined-notification.sql +16 -0
- package/scripts/add-game-joined-pref.js +40 -0
- package/scripts/add-game-joined-preference.sql +6 -0
- package/scripts/add-game-start-notifications.sql +41 -0
- package/scripts/add-notification-flags-to-games.sql +55 -0
- package/scripts/add-pending-game-dismissals.sql +19 -0
- package/scripts/add-preferred-currency.sql +34 -0
- package/scripts/add-winner-columns.js +61 -0
- package/scripts/add_mention_system.sql +53 -0
- package/scripts/add_payment_system.sql +96 -0
- package/scripts/add_sports_event_id_column.sql +22 -0
- package/scripts/analyze-cohort-data-heroku.js +276 -0
- package/scripts/analyze-cohort-data.js +295 -0
- package/scripts/analyze-prod-cohorts.sh +10 -0
- package/scripts/backfill-matchup-images.js +245 -0
- package/scripts/backfill-missing-signatures.js +175 -0
- package/scripts/backfill-referral-earnings.js +202 -0
- package/scripts/check-chat-schema.js +130 -0
- package/scripts/check-db.sh +14 -0
- package/scripts/check_oracle_in_game.js +54 -0
- package/scripts/cleanup-database.js +193 -0
- package/scripts/clear-notification-cache.js +85 -0
- package/scripts/convert-mnemonic.js +50 -0
- package/scripts/create-users-table.sql +44 -0
- package/scripts/debug-cohort-counts.js +248 -0
- package/scripts/debug-winner-calc.js +84 -0
- package/scripts/deploy-payment-system.sh +118 -0
- package/scripts/deploy-to-heroku.sh +63 -0
- package/scripts/diagnose-locked-round.js +143 -0
- package/scripts/dubs-cli.js +720 -0
- package/scripts/dump-account.js +65 -0
- package/scripts/find-vrf-offset.js +48 -0
- package/scripts/fix-chat-notifications-constraint.sql +122 -0
- package/scripts/fix-claim-columns.js +124 -0
- package/scripts/fix-constraint-now.js +44 -0
- package/scripts/fix-lock-timestamps.js +96 -0
- package/scripts/fix-locked-round.sh +126 -0
- package/scripts/fix-missing-badges.sql +91 -0
- package/scripts/fix-payment-notifications.sql +41 -0
- package/scripts/force-new-round.js +55 -0
- package/scripts/force-resolve-and-claim.js +278 -0
- package/scripts/important/README.md +115 -0
- package/scripts/important/authority-force-lock.js +197 -0
- package/scripts/important/authority-resolve-game.js +267 -0
- package/scripts/important/check-game-status.js +373 -0
- package/scripts/important/list-pending-games-by-version.js +270 -0
- package/scripts/important/reconcile-v1-v2-payouts.js +270 -0
- package/scripts/initialize-jackpot.js +111 -0
- package/scripts/jackpot/.claude/settings.local.json +10 -0
- package/scripts/jackpot/force-reset.js +84 -0
- package/scripts/jackpot/initialize-mainnet.js +100 -0
- package/scripts/jackpot/keeper.js +742 -0
- package/scripts/jackpot/status.js +107 -0
- package/scripts/jackpot/update-round-duration.js +143 -0
- package/scripts/keeper-bot.js +112 -0
- package/scripts/list-pending-games.js +131 -0
- package/scripts/migrate-chat-v2.js +127 -0
- package/scripts/migrate-chat-winners.js +84 -0
- package/scripts/migrate-chat.sh +17 -0
- package/scripts/migrate-game-invite.js +83 -0
- package/scripts/migrate-heroku-game-notifications.sh +159 -0
- package/scripts/migrations/001_analytics_tables.sql +422 -0
- package/scripts/migrations/002_add_matchup_image_url.sql +14 -0
- package/scripts/migrations/003_referral_earnings.sql +208 -0
- package/scripts/migrations/004_add_whats_new_notification_type.sql +62 -0
- package/scripts/migrations/005_add_connect4_your_turn_notification.sql +61 -0
- package/scripts/migrations/005_push_notifications.sql +55 -0
- package/scripts/migrations/006_add_draw_team_players.sql +28 -0
- package/scripts/migrations/006_add_game_cancelled_notification.sql +62 -0
- package/scripts/migrations/007_add_gif_url.sql +8 -0
- package/scripts/migrations/008_add_connect4_columns.sql +139 -0
- package/scripts/migrations/008_add_pool_tracking.sql +22 -0
- package/scripts/migrations/009_create_survivor_pool_tables.sql +174 -0
- package/scripts/migrations/010_add_survivor_pool_outcome.sql +28 -0
- package/scripts/migrations/011_create_developer_tables.sql +67 -0
- package/scripts/migrations/011_fix_keeper_tables.sql +85 -0
- package/scripts/migrations/012_create_developer_webhooks.sql +31 -0
- package/scripts/migrations/013_add_network_mode.sql +18 -0
- package/scripts/migrations/014_create_developer_app_users.sql +19 -0
- package/scripts/migrations/015_add_ui_config.sql +4 -0
- package/scripts/migrations/016_add_resolution_secret.sql +4 -0
- package/scripts/migrations/017_add_external_game_id.sql +3 -0
- package/scripts/migrations/018_create_pickem_tables.sql +115 -0
- package/scripts/migrations/019_expo_push_tokens.sql +19 -0
- package/scripts/migrations/create_whats_new_tables.sql +88 -0
- package/scripts/migrations/drop_live_games_tables.sql +34 -0
- package/scripts/open-jackpot-round.js +85 -0
- package/scripts/purge-all-data.sh +329 -0
- package/scripts/purge-all-data.sql +142 -0
- package/scripts/purge-heroku-data.sh +149 -0
- package/scripts/purge-heroku-data.sql +62 -0
- package/scripts/rebuild-heroku-database.sh +113 -0
- package/scripts/recover-funds.js +357 -0
- package/scripts/regenerate-epl-images.js +278 -0
- package/scripts/resize-s3-matchup-images.js +374 -0
- package/scripts/resolve-direct.js +88 -0
- package/scripts/resolve-mock-game.js +124 -0
- package/scripts/resolve-pickem-game.js +55 -0
- package/scripts/resolve-round-manual.js +83 -0
- package/scripts/resolve-stuck-game.js +382 -0
- package/scripts/resolve-stuck-round.js +42 -0
- package/scripts/run-connect4-migration.sh +16 -0
- package/scripts/run-mention-migration.sh +32 -0
- package/scripts/run-payment-migration.sh +51 -0
- package/scripts/run-preferred-currency-migration.sh +31 -0
- package/scripts/run-referral-earnings-migration.sh +32 -0
- package/scripts/run-survivor-outcome-migration.sh +16 -0
- package/scripts/seed-test-users.js +346 -0
- package/scripts/setup-auth-tables.js +78 -0
- package/scripts/setup-complete-database.sql +992 -0
- package/scripts/setup-database-fresh.sh +359 -0
- package/scripts/setup-heroku-keeper.sh +48 -0
- package/scripts/setup-keeper-database.js +83 -0
- package/scripts/setup-keeper-state-db.sql +110 -0
- package/scripts/setup-oracle.sh +39 -0
- package/scripts/setup-pnl-tracking.js +111 -0
- package/scripts/start-devnet.sh +14 -0
- package/scripts/test-arcade-devnet.sh +160 -0
- package/scripts/test-arcade-match.sh +109 -0
- package/scripts/test-automatic-mode.sh +239 -0
- package/scripts/test-connect4-cancel-claim.js +370 -0
- package/scripts/test-connect4-e2e.js +369 -0
- package/scripts/test-connect4-resolve.js +369 -0
- package/scripts/test-game-state-endpoint.js +136 -0
- package/scripts/test-invite-notification.js +86 -0
- package/scripts/test-jackpot-api.sh +71 -0
- package/scripts/test-poll-confirmation.js +267 -0
- package/scripts/test-resolve-game.js +271 -0
- package/scripts/test-resolve-signature.js +223 -0
- package/scripts/test-signature-preservation.js +124 -0
- package/scripts/test-state-machine.js +291 -0
- package/scripts/test-webhook-receiver.js +60 -0
- package/scripts/update-notification-constraint.js +52 -0
- package/scripts/verify-account-layout.js +145 -0
- package/scripts/verify-winner-algorithm.js +278 -0
- package/server.js +5259 -0
- package/services/arcadeMatchService.js +763 -0
- package/services/automaticGameOracle.js +1596 -0
- package/services/chatService.js +1612 -0
- package/services/connect4GameService.js +1049 -0
- package/services/connect4NotificationService.js +374 -0
- package/services/cryptoPriceService.js +223 -0
- package/services/customGameResolver.js +260 -0
- package/services/db.js +79 -0
- package/services/directMessageService.js +389 -0
- package/services/discordNotifications.js +160 -0
- package/services/exchangeRateService.js +289 -0
- package/services/expoPushService.js +314 -0
- package/services/gamesCacheService.js +539 -0
- package/services/jackpotHistory.js +331 -0
- package/services/jackpotService.js +856 -0
- package/services/keeperStateService.js +355 -0
- package/services/matchupImageService.js +591 -0
- package/services/notificationCacheService.js +407 -0
- package/services/pickemOracle.js +440 -0
- package/services/playerStatsService.js +389 -0
- package/services/portfolioService.js +555 -0
- package/services/promoService.js +757 -0
- package/services/promoTreasuryService.js +239 -0
- package/services/pushNotifications.js +353 -0
- package/services/redisService.js +422 -0
- package/services/referralEarningsService.js +728 -0
- package/services/s3Service.js +396 -0
- package/services/socialService.js +1202 -0
- package/services/survivorOracle.js +469 -0
- package/services/survivorSimulator.js +475 -0
- package/services/telegramNotifications.js +461 -0
- package/services/userProfileStatsService.js +1185 -0
- package/services/whatsNewService.js +388 -0
- package/utils/urlHelper.js +95 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# ============================================
|
|
4
|
+
# 🎮 DUBS SERVER - PURGE ALL DATA
|
|
5
|
+
# ============================================
|
|
6
|
+
# This script removes ALL data from ALL tables
|
|
7
|
+
# ⚠️ WARNING: This is DESTRUCTIVE and IRREVERSIBLE!
|
|
8
|
+
# Schema (table structure) is preserved, only data is deleted
|
|
9
|
+
|
|
10
|
+
set -e # Exit on error
|
|
11
|
+
|
|
12
|
+
# Colors for output
|
|
13
|
+
RED='\033[0;31m'
|
|
14
|
+
YELLOW='\033[1;33m'
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
BLUE='\033[0;34m'
|
|
17
|
+
NC='\033[0m' # No Color
|
|
18
|
+
|
|
19
|
+
DB_NAME="${DB_NAME:-dubs_db}"
|
|
20
|
+
|
|
21
|
+
echo "╔════════════════════════════════════════════════╗"
|
|
22
|
+
echo "║ ⚠️ PURGE ALL DATA - WARNING! ⚠️ ║"
|
|
23
|
+
echo "╚════════════════════════════════════════════════╝"
|
|
24
|
+
echo ""
|
|
25
|
+
|
|
26
|
+
echo -e "${RED}⚠️ THIS WILL DELETE ALL DATA FROM ALL TABLES!${NC}"
|
|
27
|
+
echo -e "${YELLOW}This action is IRREVERSIBLE!${NC}"
|
|
28
|
+
echo ""
|
|
29
|
+
echo "Database: $DB_NAME"
|
|
30
|
+
echo ""
|
|
31
|
+
echo "This will remove:"
|
|
32
|
+
echo " • All user accounts and sessions"
|
|
33
|
+
echo " • All chat messages, notifications, and payments"
|
|
34
|
+
echo " • All friend relationships"
|
|
35
|
+
echo " • All player stats and history"
|
|
36
|
+
echo " • All jackpot rounds and keeper data"
|
|
37
|
+
echo " • All referral earnings and payout batches"
|
|
38
|
+
echo " • All What's New posts and read tracking"
|
|
39
|
+
echo " • All promo codes and reservations"
|
|
40
|
+
echo " • All developer accounts, apps, API keys, and webhooks"
|
|
41
|
+
echo " • Everything else in the database"
|
|
42
|
+
echo ""
|
|
43
|
+
echo -e "${BLUE}The table structure will remain intact (safe for re-use)${NC}"
|
|
44
|
+
echo ""
|
|
45
|
+
|
|
46
|
+
# Confirmation 1
|
|
47
|
+
read -p "Are you ABSOLUTELY sure you want to purge all data? (type 'yes' to confirm): " -r
|
|
48
|
+
echo ""
|
|
49
|
+
|
|
50
|
+
if [[ ! $REPLY == "yes" ]]; then
|
|
51
|
+
echo -e "${GREEN}✅ Cancelled. No data was deleted.${NC}"
|
|
52
|
+
exit 0
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# Confirmation 2 (extra safety)
|
|
56
|
+
echo -e "${RED}FINAL WARNING: This cannot be undone!${NC}"
|
|
57
|
+
read -p "Type the database name '$DB_NAME' to proceed: " -r
|
|
58
|
+
echo ""
|
|
59
|
+
|
|
60
|
+
if [[ ! $REPLY == "$DB_NAME" ]]; then
|
|
61
|
+
echo -e "${GREEN}✅ Cancelled. No data was deleted.${NC}"
|
|
62
|
+
exit 0
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
echo ""
|
|
66
|
+
echo "🗑️ Purging all data..."
|
|
67
|
+
echo ""
|
|
68
|
+
|
|
69
|
+
# Check if database exists
|
|
70
|
+
if ! psql -lqt | cut -d \| -f 1 | grep -qw $DB_NAME; then
|
|
71
|
+
echo -e "${RED}❌ Database '$DB_NAME' does not exist${NC}"
|
|
72
|
+
exit 1
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# Count records before deletion
|
|
76
|
+
echo "📊 Counting records before deletion..."
|
|
77
|
+
TOTAL_BEFORE=$(psql -d $DB_NAME -t -c "
|
|
78
|
+
SELECT
|
|
79
|
+
(SELECT COUNT(*) FROM users) +
|
|
80
|
+
(SELECT COUNT(*) FROM chat_messages) +
|
|
81
|
+
(SELECT COUNT(*) FROM chat_payments) +
|
|
82
|
+
(SELECT COUNT(*) FROM player_stats) +
|
|
83
|
+
(SELECT COUNT(*) FROM jackpot_rounds) +
|
|
84
|
+
(SELECT COUNT(*) FROM user_sessions) +
|
|
85
|
+
(SELECT COUNT(*) FROM auth_nonces) +
|
|
86
|
+
(SELECT COUNT(*) FROM chat_notifications) +
|
|
87
|
+
(SELECT COUNT(*) FROM friends) +
|
|
88
|
+
(SELECT COUNT(*) FROM player_history) +
|
|
89
|
+
(SELECT COUNT(*) FROM keeper_rounds) +
|
|
90
|
+
(SELECT COUNT(*) FROM referral_earnings) +
|
|
91
|
+
(SELECT COUNT(*) FROM referral_payout_batches) +
|
|
92
|
+
(SELECT COUNT(*) FROM whats_new_posts) +
|
|
93
|
+
(SELECT COUNT(*) FROM user_whats_new_reads) +
|
|
94
|
+
(SELECT COUNT(*) FROM promo_codes) +
|
|
95
|
+
(SELECT COUNT(*) FROM developer_accounts) +
|
|
96
|
+
(SELECT COUNT(*) FROM developer_apps) +
|
|
97
|
+
(SELECT COUNT(*) FROM developer_api_keys) +
|
|
98
|
+
(SELECT COUNT(*) FROM developer_game_attributions) +
|
|
99
|
+
(SELECT COUNT(*) FROM developer_api_logs) +
|
|
100
|
+
(SELECT COUNT(*) FROM developer_webhooks) +
|
|
101
|
+
(SELECT COUNT(*) FROM developer_webhook_logs) +
|
|
102
|
+
(SELECT COUNT(*) FROM developer_app_users)
|
|
103
|
+
" 2>/dev/null || echo "0")
|
|
104
|
+
|
|
105
|
+
echo "Total records: $(echo $TOTAL_BEFORE | xargs)"
|
|
106
|
+
echo ""
|
|
107
|
+
|
|
108
|
+
# Execute purge
|
|
109
|
+
echo "🗑️ Deleting all data..."
|
|
110
|
+
|
|
111
|
+
psql -d $DB_NAME << 'EOF'
|
|
112
|
+
-- Disable triggers for faster deletion
|
|
113
|
+
SET session_replication_role = 'replica';
|
|
114
|
+
|
|
115
|
+
-- Truncate all tables (CASCADE handles foreign keys)
|
|
116
|
+
-- Chat & Messaging
|
|
117
|
+
TRUNCATE TABLE chat_payments CASCADE;
|
|
118
|
+
TRUNCATE TABLE chat_notifications CASCADE;
|
|
119
|
+
TRUNCATE TABLE message_mentions CASCADE;
|
|
120
|
+
TRUNCATE TABLE chat_reactions CASCADE;
|
|
121
|
+
TRUNCATE TABLE chat_messages CASCADE;
|
|
122
|
+
TRUNCATE TABLE direct_messages CASCADE;
|
|
123
|
+
|
|
124
|
+
-- Social & Relationships
|
|
125
|
+
TRUNCATE TABLE user_relationships CASCADE;
|
|
126
|
+
TRUNCATE TABLE friend_requests CASCADE;
|
|
127
|
+
TRUNCATE TABLE friends CASCADE;
|
|
128
|
+
TRUNCATE TABLE group_members CASCADE;
|
|
129
|
+
TRUNCATE TABLE groups CASCADE;
|
|
130
|
+
|
|
131
|
+
-- Games V1
|
|
132
|
+
TRUNCATE TABLE user_game_refs CASCADE;
|
|
133
|
+
TRUNCATE TABLE games CASCADE;
|
|
134
|
+
|
|
135
|
+
-- Games V2 (DROP entirely - no longer needed)
|
|
136
|
+
DROP TABLE IF EXISTS positions_v2 CASCADE;
|
|
137
|
+
DROP TABLE IF EXISTS games_v2 CASCADE;
|
|
138
|
+
DROP TABLE IF EXISTS referral_earnings_v2 CASCADE;
|
|
139
|
+
|
|
140
|
+
-- Live Games (DROP entirely - no longer needed)
|
|
141
|
+
DROP TABLE IF EXISTS live_game_plays CASCADE;
|
|
142
|
+
DROP TABLE IF EXISTS live_game_polling_log CASCADE;
|
|
143
|
+
DROP TABLE IF EXISTS live_game_stats CASCADE;
|
|
144
|
+
DROP TABLE IF EXISTS live_game_subscriptions CASCADE;
|
|
145
|
+
DROP TABLE IF EXISTS live_games CASCADE;
|
|
146
|
+
|
|
147
|
+
-- Player Data
|
|
148
|
+
TRUNCATE TABLE audit_logs CASCADE;
|
|
149
|
+
TRUNCATE TABLE player_history CASCADE;
|
|
150
|
+
TRUNCATE TABLE player_stats CASCADE;
|
|
151
|
+
TRUNCATE TABLE sports_betting_stats CASCADE;
|
|
152
|
+
TRUNCATE TABLE user_badges CASCADE;
|
|
153
|
+
TRUNCATE TABLE pending_game_dismissals CASCADE;
|
|
154
|
+
|
|
155
|
+
-- Notifications & Settings
|
|
156
|
+
TRUNCATE TABLE telegram_notification_preferences CASCADE;
|
|
157
|
+
TRUNCATE TABLE push_notification_preferences CASCADE;
|
|
158
|
+
TRUNCATE TABLE push_subscriptions CASCADE;
|
|
159
|
+
TRUNCATE TABLE device_settings CASCADE;
|
|
160
|
+
|
|
161
|
+
-- Auth & Sessions
|
|
162
|
+
TRUNCATE TABLE auth_nonces CASCADE;
|
|
163
|
+
TRUNCATE TABLE user_sessions CASCADE;
|
|
164
|
+
|
|
165
|
+
-- Keeper & Jackpot
|
|
166
|
+
TRUNCATE TABLE keeper_actions CASCADE;
|
|
167
|
+
TRUNCATE TABLE keeper_health CASCADE;
|
|
168
|
+
TRUNCATE TABLE keeper_rounds CASCADE;
|
|
169
|
+
TRUNCATE TABLE jackpot_rounds CASCADE;
|
|
170
|
+
|
|
171
|
+
-- Referrals
|
|
172
|
+
TRUNCATE TABLE referral_earnings CASCADE;
|
|
173
|
+
TRUNCATE TABLE referral_payout_batches CASCADE;
|
|
174
|
+
|
|
175
|
+
-- What's New
|
|
176
|
+
TRUNCATE TABLE user_whats_new_reads CASCADE;
|
|
177
|
+
TRUNCATE TABLE whats_new_posts CASCADE;
|
|
178
|
+
|
|
179
|
+
-- Promo & Cache
|
|
180
|
+
TRUNCATE TABLE promo_codes CASCADE;
|
|
181
|
+
TRUNCATE TABLE crypto_prices_cache CASCADE;
|
|
182
|
+
TRUNCATE TABLE exchange_rates_cache CASCADE;
|
|
183
|
+
|
|
184
|
+
-- Developer Platform
|
|
185
|
+
TRUNCATE TABLE developer_app_users CASCADE;
|
|
186
|
+
TRUNCATE TABLE developer_webhook_logs CASCADE;
|
|
187
|
+
TRUNCATE TABLE developer_webhooks CASCADE;
|
|
188
|
+
TRUNCATE TABLE developer_api_logs CASCADE;
|
|
189
|
+
TRUNCATE TABLE developer_game_attributions CASCADE;
|
|
190
|
+
TRUNCATE TABLE developer_api_keys CASCADE;
|
|
191
|
+
TRUNCATE TABLE developer_apps CASCADE;
|
|
192
|
+
TRUNCATE TABLE developer_accounts CASCADE;
|
|
193
|
+
|
|
194
|
+
-- Users (last due to foreign keys)
|
|
195
|
+
TRUNCATE TABLE users CASCADE;
|
|
196
|
+
|
|
197
|
+
-- Re-enable triggers
|
|
198
|
+
SET session_replication_role = 'origin';
|
|
199
|
+
|
|
200
|
+
-- Reset sequences (auto-increment IDs back to 1)
|
|
201
|
+
-- Chat & Messaging
|
|
202
|
+
ALTER SEQUENCE chat_payments_id_seq RESTART WITH 1;
|
|
203
|
+
ALTER SEQUENCE chat_messages_id_seq RESTART WITH 1;
|
|
204
|
+
ALTER SEQUENCE chat_reactions_id_seq RESTART WITH 1;
|
|
205
|
+
ALTER SEQUENCE chat_notifications_id_seq RESTART WITH 1;
|
|
206
|
+
ALTER SEQUENCE message_mentions_id_seq RESTART WITH 1;
|
|
207
|
+
ALTER SEQUENCE direct_messages_id_seq RESTART WITH 1;
|
|
208
|
+
|
|
209
|
+
-- Social & Relationships
|
|
210
|
+
ALTER SEQUENCE user_relationships_id_seq RESTART WITH 1;
|
|
211
|
+
ALTER SEQUENCE friends_id_seq RESTART WITH 1;
|
|
212
|
+
ALTER SEQUENCE friend_requests_id_seq RESTART WITH 1;
|
|
213
|
+
ALTER SEQUENCE groups_id_seq RESTART WITH 1;
|
|
214
|
+
ALTER SEQUENCE group_members_id_seq RESTART WITH 1;
|
|
215
|
+
|
|
216
|
+
-- Games V1
|
|
217
|
+
ALTER SEQUENCE games_id_seq RESTART WITH 1;
|
|
218
|
+
ALTER SEQUENCE user_game_refs_id_seq RESTART WITH 1;
|
|
219
|
+
|
|
220
|
+
-- Games V2 sequences dropped with tables
|
|
221
|
+
|
|
222
|
+
-- Live Games sequences dropped with tables
|
|
223
|
+
|
|
224
|
+
-- Player Data
|
|
225
|
+
ALTER SEQUENCE audit_logs_id_seq RESTART WITH 1;
|
|
226
|
+
ALTER SEQUENCE player_history_id_seq RESTART WITH 1;
|
|
227
|
+
ALTER SEQUENCE user_badges_id_seq RESTART WITH 1;
|
|
228
|
+
ALTER SEQUENCE pending_game_dismissals_id_seq RESTART WITH 1;
|
|
229
|
+
|
|
230
|
+
-- Notifications & Settings
|
|
231
|
+
ALTER SEQUENCE push_subscriptions_id_seq RESTART WITH 1;
|
|
232
|
+
ALTER SEQUENCE device_settings_id_seq RESTART WITH 1;
|
|
233
|
+
|
|
234
|
+
-- Auth & Sessions
|
|
235
|
+
ALTER SEQUENCE user_sessions_id_seq RESTART WITH 1;
|
|
236
|
+
|
|
237
|
+
-- Keeper & Jackpot
|
|
238
|
+
ALTER SEQUENCE keeper_actions_id_seq RESTART WITH 1;
|
|
239
|
+
ALTER SEQUENCE keeper_health_id_seq RESTART WITH 1;
|
|
240
|
+
ALTER SEQUENCE keeper_rounds_id_seq RESTART WITH 1;
|
|
241
|
+
ALTER SEQUENCE jackpot_rounds_id_seq RESTART WITH 1;
|
|
242
|
+
|
|
243
|
+
-- Referrals
|
|
244
|
+
ALTER SEQUENCE referral_earnings_id_seq RESTART WITH 1;
|
|
245
|
+
ALTER SEQUENCE referral_payout_batches_id_seq RESTART WITH 1;
|
|
246
|
+
|
|
247
|
+
-- What's New
|
|
248
|
+
ALTER SEQUENCE whats_new_posts_id_seq RESTART WITH 1;
|
|
249
|
+
ALTER SEQUENCE user_whats_new_reads_id_seq RESTART WITH 1;
|
|
250
|
+
|
|
251
|
+
-- Promo & Cache
|
|
252
|
+
ALTER SEQUENCE promo_codes_id_seq RESTART WITH 1;
|
|
253
|
+
ALTER SEQUENCE crypto_prices_cache_id_seq RESTART WITH 1;
|
|
254
|
+
ALTER SEQUENCE exchange_rates_cache_id_seq RESTART WITH 1;
|
|
255
|
+
|
|
256
|
+
-- Developer Platform
|
|
257
|
+
ALTER SEQUENCE developer_webhook_logs_id_seq RESTART WITH 1;
|
|
258
|
+
ALTER SEQUENCE developer_webhooks_id_seq RESTART WITH 1;
|
|
259
|
+
ALTER SEQUENCE developer_api_logs_id_seq RESTART WITH 1;
|
|
260
|
+
ALTER SEQUENCE developer_game_attributions_id_seq RESTART WITH 1;
|
|
261
|
+
ALTER SEQUENCE developer_api_keys_id_seq RESTART WITH 1;
|
|
262
|
+
ALTER SEQUENCE developer_apps_id_seq RESTART WITH 1;
|
|
263
|
+
ALTER SEQUENCE developer_accounts_id_seq RESTART WITH 1;
|
|
264
|
+
|
|
265
|
+
-- Users
|
|
266
|
+
ALTER SEQUENCE users_id_seq RESTART WITH 1;
|
|
267
|
+
EOF
|
|
268
|
+
|
|
269
|
+
if [ $? -eq 0 ]; then
|
|
270
|
+
echo ""
|
|
271
|
+
echo -e "${GREEN}✅ All data has been deleted${NC}"
|
|
272
|
+
echo ""
|
|
273
|
+
|
|
274
|
+
# Verify deletion
|
|
275
|
+
echo "📊 Verifying deletion..."
|
|
276
|
+
|
|
277
|
+
TABLE_COUNT=$(psql -d $DB_NAME -t -c "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE';" | xargs)
|
|
278
|
+
|
|
279
|
+
TOTAL_AFTER=$(psql -d $DB_NAME -t -c "
|
|
280
|
+
SELECT
|
|
281
|
+
(SELECT COUNT(*) FROM users) +
|
|
282
|
+
(SELECT COUNT(*) FROM chat_messages) +
|
|
283
|
+
(SELECT COUNT(*) FROM chat_payments) +
|
|
284
|
+
(SELECT COUNT(*) FROM player_stats) +
|
|
285
|
+
(SELECT COUNT(*) FROM jackpot_rounds) +
|
|
286
|
+
(SELECT COUNT(*) FROM user_sessions) +
|
|
287
|
+
(SELECT COUNT(*) FROM auth_nonces) +
|
|
288
|
+
(SELECT COUNT(*) FROM referral_earnings) +
|
|
289
|
+
(SELECT COUNT(*) FROM referral_payout_batches) +
|
|
290
|
+
(SELECT COUNT(*) FROM whats_new_posts) +
|
|
291
|
+
(SELECT COUNT(*) FROM user_whats_new_reads) +
|
|
292
|
+
(SELECT COUNT(*) FROM promo_codes) +
|
|
293
|
+
(SELECT COUNT(*) FROM developer_accounts) +
|
|
294
|
+
(SELECT COUNT(*) FROM developer_apps) +
|
|
295
|
+
(SELECT COUNT(*) FROM developer_api_keys) +
|
|
296
|
+
(SELECT COUNT(*) FROM developer_game_attributions) +
|
|
297
|
+
(SELECT COUNT(*) FROM developer_api_logs) +
|
|
298
|
+
(SELECT COUNT(*) FROM developer_webhooks) +
|
|
299
|
+
(SELECT COUNT(*) FROM developer_webhook_logs) +
|
|
300
|
+
(SELECT COUNT(*) FROM developer_app_users)
|
|
301
|
+
" | xargs)
|
|
302
|
+
|
|
303
|
+
echo "Tables still exist: $TABLE_COUNT"
|
|
304
|
+
echo "Records remaining: $TOTAL_AFTER"
|
|
305
|
+
echo ""
|
|
306
|
+
|
|
307
|
+
if [ "$TOTAL_AFTER" -eq 0 ]; then
|
|
308
|
+
echo -e "${GREEN}✅ Verification successful - all data removed${NC}"
|
|
309
|
+
else
|
|
310
|
+
echo -e "${YELLOW}⚠️ Warning: Some data may still exist${NC}"
|
|
311
|
+
fi
|
|
312
|
+
|
|
313
|
+
echo ""
|
|
314
|
+
echo "╔════════════════════════════════════════════════╗"
|
|
315
|
+
echo "║ ✅ PURGE COMPLETE ✅ ║"
|
|
316
|
+
echo "╚════════════════════════════════════════════════╝"
|
|
317
|
+
echo ""
|
|
318
|
+
echo "Database: $DB_NAME"
|
|
319
|
+
echo "Status: Empty (structure intact)"
|
|
320
|
+
echo "Ready for: Fresh data"
|
|
321
|
+
echo ""
|
|
322
|
+
echo "💡 The database is now clean and ready to use!"
|
|
323
|
+
echo ""
|
|
324
|
+
else
|
|
325
|
+
echo ""
|
|
326
|
+
echo -e "${RED}❌ Error occurred during purge${NC}"
|
|
327
|
+
exit 1
|
|
328
|
+
fi
|
|
329
|
+
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
-- ============================================
|
|
2
|
+
-- 🎮 DUBS SERVER - PURGE ALL DATA (SQL)
|
|
3
|
+
-- ============================================
|
|
4
|
+
-- This SQL script removes ALL data from ALL tables
|
|
5
|
+
-- ⚠️ WARNING: This is DESTRUCTIVE and IRREVERSIBLE!
|
|
6
|
+
-- Schema (table structure) is preserved
|
|
7
|
+
--
|
|
8
|
+
-- Usage: psql -d dubs_db -f scripts/purge-all-data.sql
|
|
9
|
+
|
|
10
|
+
\echo '⚠️ WARNING: This will delete ALL data from ALL tables!'
|
|
11
|
+
\echo 'Press Ctrl+C now to cancel, or press Enter to continue...'
|
|
12
|
+
\prompt 'Type YES to confirm: ' confirmation
|
|
13
|
+
|
|
14
|
+
-- Only proceed if confirmed (this won't actually work in psql, it's just documentation)
|
|
15
|
+
-- Use the bash script for interactive confirmation
|
|
16
|
+
|
|
17
|
+
\echo ''
|
|
18
|
+
\echo '🗑️ Purging all data...'
|
|
19
|
+
\echo ''
|
|
20
|
+
|
|
21
|
+
-- Disable triggers for faster deletion
|
|
22
|
+
SET session_replication_role = 'replica';
|
|
23
|
+
|
|
24
|
+
-- Truncate all tables (CASCADE handles foreign keys)
|
|
25
|
+
-- Order doesn't matter with CASCADE, but listing in logical order
|
|
26
|
+
|
|
27
|
+
\echo 'Deleting chat data...'
|
|
28
|
+
TRUNCATE TABLE chat_notifications CASCADE;
|
|
29
|
+
TRUNCATE TABLE chat_reactions CASCADE;
|
|
30
|
+
TRUNCATE TABLE chat_messages CASCADE;
|
|
31
|
+
TRUNCATE TABLE user_relationships CASCADE;
|
|
32
|
+
|
|
33
|
+
\echo 'Deleting social data...'
|
|
34
|
+
TRUNCATE TABLE friend_requests CASCADE;
|
|
35
|
+
TRUNCATE TABLE friends CASCADE;
|
|
36
|
+
TRUNCATE TABLE group_members CASCADE;
|
|
37
|
+
TRUNCATE TABLE groups CASCADE;
|
|
38
|
+
|
|
39
|
+
\echo 'Deleting player data...'
|
|
40
|
+
TRUNCATE TABLE player_history CASCADE;
|
|
41
|
+
TRUNCATE TABLE player_stats CASCADE;
|
|
42
|
+
TRUNCATE TABLE user_badges CASCADE;
|
|
43
|
+
|
|
44
|
+
\echo 'Deleting auth data...'
|
|
45
|
+
TRUNCATE TABLE auth_nonces CASCADE;
|
|
46
|
+
TRUNCATE TABLE user_sessions CASCADE;
|
|
47
|
+
|
|
48
|
+
\echo 'Deleting jackpot data...'
|
|
49
|
+
TRUNCATE TABLE keeper_actions CASCADE;
|
|
50
|
+
TRUNCATE TABLE keeper_health CASCADE;
|
|
51
|
+
TRUNCATE TABLE keeper_rounds CASCADE;
|
|
52
|
+
TRUNCATE TABLE jackpot_rounds CASCADE;
|
|
53
|
+
|
|
54
|
+
\echo 'Deleting developer data...'
|
|
55
|
+
TRUNCATE TABLE developer_webhook_logs CASCADE;
|
|
56
|
+
TRUNCATE TABLE developer_webhooks CASCADE;
|
|
57
|
+
TRUNCATE TABLE developer_api_logs CASCADE;
|
|
58
|
+
TRUNCATE TABLE developer_game_attributions CASCADE;
|
|
59
|
+
TRUNCATE TABLE developer_api_keys CASCADE;
|
|
60
|
+
TRUNCATE TABLE developer_apps CASCADE;
|
|
61
|
+
TRUNCATE TABLE developer_accounts CASCADE;
|
|
62
|
+
|
|
63
|
+
\echo 'Deleting users...'
|
|
64
|
+
TRUNCATE TABLE users CASCADE;
|
|
65
|
+
|
|
66
|
+
-- Re-enable triggers
|
|
67
|
+
SET session_replication_role = 'origin';
|
|
68
|
+
|
|
69
|
+
\echo ''
|
|
70
|
+
\echo 'Resetting ID sequences...'
|
|
71
|
+
|
|
72
|
+
-- Reset sequences (auto-increment IDs back to 1)
|
|
73
|
+
ALTER SEQUENCE IF EXISTS chat_messages_id_seq RESTART WITH 1;
|
|
74
|
+
ALTER SEQUENCE IF EXISTS chat_reactions_id_seq RESTART WITH 1;
|
|
75
|
+
ALTER SEQUENCE IF EXISTS chat_notifications_id_seq RESTART WITH 1;
|
|
76
|
+
ALTER SEQUENCE IF EXISTS user_relationships_id_seq RESTART WITH 1;
|
|
77
|
+
ALTER SEQUENCE IF EXISTS friends_id_seq RESTART WITH 1;
|
|
78
|
+
ALTER SEQUENCE IF EXISTS friend_requests_id_seq RESTART WITH 1;
|
|
79
|
+
ALTER SEQUENCE IF EXISTS groups_id_seq RESTART WITH 1;
|
|
80
|
+
ALTER SEQUENCE IF EXISTS group_members_id_seq RESTART WITH 1;
|
|
81
|
+
ALTER SEQUENCE IF EXISTS player_history_id_seq RESTART WITH 1;
|
|
82
|
+
ALTER SEQUENCE IF EXISTS user_badges_id_seq RESTART WITH 1;
|
|
83
|
+
ALTER SEQUENCE IF EXISTS user_sessions_id_seq RESTART WITH 1;
|
|
84
|
+
ALTER SEQUENCE IF EXISTS keeper_actions_id_seq RESTART WITH 1;
|
|
85
|
+
ALTER SEQUENCE IF EXISTS keeper_health_id_seq RESTART WITH 1;
|
|
86
|
+
ALTER SEQUENCE IF EXISTS keeper_rounds_id_seq RESTART WITH 1;
|
|
87
|
+
ALTER SEQUENCE IF EXISTS jackpot_rounds_id_seq RESTART WITH 1;
|
|
88
|
+
ALTER SEQUENCE IF EXISTS developer_webhook_logs_id_seq RESTART WITH 1;
|
|
89
|
+
ALTER SEQUENCE IF EXISTS developer_webhooks_id_seq RESTART WITH 1;
|
|
90
|
+
ALTER SEQUENCE IF EXISTS developer_api_logs_id_seq RESTART WITH 1;
|
|
91
|
+
ALTER SEQUENCE IF EXISTS developer_game_attributions_id_seq RESTART WITH 1;
|
|
92
|
+
ALTER SEQUENCE IF EXISTS developer_api_keys_id_seq RESTART WITH 1;
|
|
93
|
+
ALTER SEQUENCE IF EXISTS developer_apps_id_seq RESTART WITH 1;
|
|
94
|
+
ALTER SEQUENCE IF EXISTS developer_accounts_id_seq RESTART WITH 1;
|
|
95
|
+
ALTER SEQUENCE IF EXISTS users_id_seq RESTART WITH 1;
|
|
96
|
+
|
|
97
|
+
\echo ''
|
|
98
|
+
\echo '✅ All data has been deleted'
|
|
99
|
+
\echo '📊 Verifying deletion...'
|
|
100
|
+
\echo ''
|
|
101
|
+
|
|
102
|
+
-- Show table counts
|
|
103
|
+
SELECT
|
|
104
|
+
'users' as table_name,
|
|
105
|
+
COUNT(*) as records
|
|
106
|
+
FROM users
|
|
107
|
+
UNION ALL
|
|
108
|
+
SELECT 'chat_messages', COUNT(*) FROM chat_messages
|
|
109
|
+
UNION ALL
|
|
110
|
+
SELECT 'player_stats', COUNT(*) FROM player_stats
|
|
111
|
+
UNION ALL
|
|
112
|
+
SELECT 'jackpot_rounds', COUNT(*) FROM jackpot_rounds
|
|
113
|
+
UNION ALL
|
|
114
|
+
SELECT 'user_sessions', COUNT(*) FROM user_sessions
|
|
115
|
+
UNION ALL
|
|
116
|
+
SELECT 'auth_nonces', COUNT(*) FROM auth_nonces
|
|
117
|
+
UNION ALL
|
|
118
|
+
SELECT 'friends', COUNT(*) FROM friends
|
|
119
|
+
UNION ALL
|
|
120
|
+
SELECT 'chat_notifications', COUNT(*) FROM chat_notifications
|
|
121
|
+
UNION ALL
|
|
122
|
+
SELECT 'developer_accounts', COUNT(*) FROM developer_accounts
|
|
123
|
+
UNION ALL
|
|
124
|
+
SELECT 'developer_apps', COUNT(*) FROM developer_apps
|
|
125
|
+
UNION ALL
|
|
126
|
+
SELECT 'developer_webhooks', COUNT(*) FROM developer_webhooks
|
|
127
|
+
ORDER BY table_name;
|
|
128
|
+
|
|
129
|
+
\echo ''
|
|
130
|
+
\echo '🎉 Purge complete! Database is now empty.'
|
|
131
|
+
\echo ''
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# ============================================
|
|
4
|
+
# 🎮 DUBS SERVER - PURGE HEROKU DATABASE
|
|
5
|
+
# ============================================
|
|
6
|
+
# This script removes ALL data from ALL tables on Heroku
|
|
7
|
+
# ⚠️ WARNING: This is DESTRUCTIVE and IRREVERSIBLE!
|
|
8
|
+
# Schema (table structure) is preserved, only data is deleted
|
|
9
|
+
|
|
10
|
+
set -e # Exit on error
|
|
11
|
+
|
|
12
|
+
# Colors for output
|
|
13
|
+
RED='\033[0;31m'
|
|
14
|
+
YELLOW='\033[1;33m'
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
BLUE='\033[0;34m'
|
|
17
|
+
NC='\033[0m' # No Color
|
|
18
|
+
|
|
19
|
+
APP_NAME="${APP_NAME:-dubs-server-dev}"
|
|
20
|
+
|
|
21
|
+
echo "╔════════════════════════════════════════════════╗"
|
|
22
|
+
echo "║ ⚠️ PURGE HEROKU DATA - WARNING! ⚠️ ║"
|
|
23
|
+
echo "╚════════════════════════════════════════════════╝"
|
|
24
|
+
echo ""
|
|
25
|
+
|
|
26
|
+
echo -e "${RED}⚠️ THIS WILL DELETE ALL DATA FROM HEROKU DATABASE!${NC}"
|
|
27
|
+
echo -e "${YELLOW}This action is IRREVERSIBLE!${NC}"
|
|
28
|
+
echo ""
|
|
29
|
+
echo "Heroku App: $APP_NAME"
|
|
30
|
+
echo ""
|
|
31
|
+
echo "This will remove:"
|
|
32
|
+
echo " • All user accounts and sessions"
|
|
33
|
+
echo " • All chat messages and notifications"
|
|
34
|
+
echo " • All friend relationships"
|
|
35
|
+
echo " • All games and game references"
|
|
36
|
+
echo " • All player stats and history"
|
|
37
|
+
echo " • All jackpot rounds and keeper data"
|
|
38
|
+
echo " • Everything else in the database"
|
|
39
|
+
echo ""
|
|
40
|
+
echo -e "${BLUE}The table structure will remain intact (safe for re-use)${NC}"
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
# Confirmation 1
|
|
44
|
+
read -p "Are you ABSOLUTELY sure you want to purge Heroku data? (type 'yes' to confirm): " -r
|
|
45
|
+
echo ""
|
|
46
|
+
|
|
47
|
+
if [[ ! $REPLY == "yes" ]]; then
|
|
48
|
+
echo -e "${GREEN}✅ Cancelled. No data was deleted.${NC}"
|
|
49
|
+
exit 0
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Confirmation 2 (extra safety)
|
|
53
|
+
echo -e "${RED}FINAL WARNING: This cannot be undone!${NC}"
|
|
54
|
+
read -p "Type the app name '$APP_NAME' to proceed: " -r
|
|
55
|
+
echo ""
|
|
56
|
+
|
|
57
|
+
if [[ ! $REPLY == "$APP_NAME" ]]; then
|
|
58
|
+
echo -e "${GREEN}✅ Cancelled. No data was deleted.${NC}"
|
|
59
|
+
exit 0
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
echo ""
|
|
63
|
+
echo "🗑️ Purging all data from Heroku database..."
|
|
64
|
+
echo ""
|
|
65
|
+
|
|
66
|
+
# Execute purge using Heroku's psql
|
|
67
|
+
heroku pg:psql --app $APP_NAME << 'EOF'
|
|
68
|
+
-- Disable triggers for faster deletion
|
|
69
|
+
SET session_replication_role = 'replica';
|
|
70
|
+
|
|
71
|
+
-- Truncate all tables (CASCADE handles foreign keys)
|
|
72
|
+
TRUNCATE TABLE chat_notifications CASCADE;
|
|
73
|
+
TRUNCATE TABLE chat_reactions CASCADE;
|
|
74
|
+
TRUNCATE TABLE chat_messages CASCADE;
|
|
75
|
+
TRUNCATE TABLE user_relationships CASCADE;
|
|
76
|
+
TRUNCATE TABLE friend_requests CASCADE;
|
|
77
|
+
TRUNCATE TABLE friends CASCADE;
|
|
78
|
+
TRUNCATE TABLE group_members CASCADE;
|
|
79
|
+
TRUNCATE TABLE groups CASCADE;
|
|
80
|
+
TRUNCATE TABLE user_game_refs CASCADE;
|
|
81
|
+
TRUNCATE TABLE games CASCADE;
|
|
82
|
+
TRUNCATE TABLE audit_logs CASCADE;
|
|
83
|
+
TRUNCATE TABLE player_history CASCADE;
|
|
84
|
+
TRUNCATE TABLE player_stats CASCADE;
|
|
85
|
+
TRUNCATE TABLE user_badges CASCADE;
|
|
86
|
+
TRUNCATE TABLE telegram_notification_preferences CASCADE;
|
|
87
|
+
TRUNCATE TABLE auth_nonces CASCADE;
|
|
88
|
+
TRUNCATE TABLE user_sessions CASCADE;
|
|
89
|
+
TRUNCATE TABLE keeper_actions CASCADE;
|
|
90
|
+
TRUNCATE TABLE keeper_health CASCADE;
|
|
91
|
+
TRUNCATE TABLE keeper_rounds CASCADE;
|
|
92
|
+
TRUNCATE TABLE jackpot_rounds CASCADE;
|
|
93
|
+
TRUNCATE TABLE users CASCADE;
|
|
94
|
+
|
|
95
|
+
-- Re-enable triggers
|
|
96
|
+
SET session_replication_role = 'origin';
|
|
97
|
+
|
|
98
|
+
-- Reset sequences (auto-increment IDs back to 1)
|
|
99
|
+
DO $$
|
|
100
|
+
DECLARE
|
|
101
|
+
r RECORD;
|
|
102
|
+
BEGIN
|
|
103
|
+
FOR r IN (SELECT schemaname, sequencename FROM pg_sequences WHERE schemaname = 'public') LOOP
|
|
104
|
+
EXECUTE 'ALTER SEQUENCE ' || quote_ident(r.schemaname) || '.' || quote_ident(r.sequencename) || ' RESTART WITH 1;';
|
|
105
|
+
END LOOP;
|
|
106
|
+
END $$;
|
|
107
|
+
|
|
108
|
+
-- Show verification
|
|
109
|
+
SELECT 'Users' as table_name, COUNT(*) as records FROM users
|
|
110
|
+
UNION ALL
|
|
111
|
+
SELECT 'Games', COUNT(*) FROM games
|
|
112
|
+
UNION ALL
|
|
113
|
+
SELECT 'Chat Messages', COUNT(*) FROM chat_messages
|
|
114
|
+
UNION ALL
|
|
115
|
+
SELECT 'Player Stats', COUNT(*) FROM player_stats
|
|
116
|
+
UNION ALL
|
|
117
|
+
SELECT 'Jackpot Rounds', COUNT(*) FROM jackpot_rounds;
|
|
118
|
+
EOF
|
|
119
|
+
|
|
120
|
+
if [ $? -eq 0 ]; then
|
|
121
|
+
echo ""
|
|
122
|
+
echo -e "${GREEN}✅ All data has been deleted from Heroku${NC}"
|
|
123
|
+
echo ""
|
|
124
|
+
echo "╔════════════════════════════════════════════════╗"
|
|
125
|
+
echo "║ ✅ PURGE COMPLETE ✅ ║"
|
|
126
|
+
echo "╚════════════════════════════════════════════════╝"
|
|
127
|
+
echo ""
|
|
128
|
+
echo "Heroku App: $APP_NAME"
|
|
129
|
+
echo "Database Status: Empty (structure intact)"
|
|
130
|
+
echo "Ready for: Fresh data"
|
|
131
|
+
echo ""
|
|
132
|
+
echo "💡 The database is now clean and ready to use!"
|
|
133
|
+
echo ""
|
|
134
|
+
else
|
|
135
|
+
echo ""
|
|
136
|
+
echo -e "${RED}❌ Error occurred during purge${NC}"
|
|
137
|
+
exit 1
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
-- ============================================
|
|
2
|
+
-- 🎮 DUBS SERVER - PURGE ALL HEROKU DATA
|
|
3
|
+
-- ============================================
|
|
4
|
+
-- This script removes ALL data from ALL tables
|
|
5
|
+
-- ⚠️ WARNING: This is DESTRUCTIVE and IRREVERSIBLE!
|
|
6
|
+
-- Schema (table structure) is preserved, only data is deleted
|
|
7
|
+
|
|
8
|
+
-- Disable triggers for faster deletion
|
|
9
|
+
SET session_replication_role = 'replica';
|
|
10
|
+
|
|
11
|
+
-- Truncate all tables (CASCADE handles foreign keys)
|
|
12
|
+
TRUNCATE TABLE chat_notifications CASCADE;
|
|
13
|
+
TRUNCATE TABLE chat_reactions CASCADE;
|
|
14
|
+
TRUNCATE TABLE chat_messages CASCADE;
|
|
15
|
+
TRUNCATE TABLE user_relationships CASCADE;
|
|
16
|
+
TRUNCATE TABLE friend_requests CASCADE;
|
|
17
|
+
TRUNCATE TABLE friends CASCADE;
|
|
18
|
+
TRUNCATE TABLE group_members CASCADE;
|
|
19
|
+
TRUNCATE TABLE groups CASCADE;
|
|
20
|
+
TRUNCATE TABLE user_game_refs CASCADE;
|
|
21
|
+
TRUNCATE TABLE games CASCADE;
|
|
22
|
+
TRUNCATE TABLE audit_logs CASCADE;
|
|
23
|
+
TRUNCATE TABLE player_history CASCADE;
|
|
24
|
+
TRUNCATE TABLE player_stats CASCADE;
|
|
25
|
+
TRUNCATE TABLE user_badges CASCADE;
|
|
26
|
+
TRUNCATE TABLE telegram_notification_preferences CASCADE;
|
|
27
|
+
TRUNCATE TABLE auth_nonces CASCADE;
|
|
28
|
+
TRUNCATE TABLE user_sessions CASCADE;
|
|
29
|
+
TRUNCATE TABLE keeper_actions CASCADE;
|
|
30
|
+
TRUNCATE TABLE keeper_health CASCADE;
|
|
31
|
+
TRUNCATE TABLE keeper_rounds CASCADE;
|
|
32
|
+
TRUNCATE TABLE jackpot_rounds CASCADE;
|
|
33
|
+
TRUNCATE TABLE users CASCADE;
|
|
34
|
+
|
|
35
|
+
-- Re-enable triggers
|
|
36
|
+
SET session_replication_role = 'origin';
|
|
37
|
+
|
|
38
|
+
-- Reset sequences (auto-increment IDs back to 1)
|
|
39
|
+
ALTER SEQUENCE IF EXISTS chat_messages_id_seq RESTART WITH 1;
|
|
40
|
+
ALTER SEQUENCE IF EXISTS chat_reactions_id_seq RESTART WITH 1;
|
|
41
|
+
ALTER SEQUENCE IF EXISTS chat_notifications_id_seq RESTART WITH 1;
|
|
42
|
+
ALTER SEQUENCE IF EXISTS user_relationships_id_seq RESTART WITH 1;
|
|
43
|
+
ALTER SEQUENCE IF EXISTS friends_id_seq RESTART WITH 1;
|
|
44
|
+
ALTER SEQUENCE IF EXISTS friend_requests_id_seq RESTART WITH 1;
|
|
45
|
+
ALTER SEQUENCE IF EXISTS groups_id_seq RESTART WITH 1;
|
|
46
|
+
ALTER SEQUENCE IF EXISTS group_members_id_seq RESTART WITH 1;
|
|
47
|
+
ALTER SEQUENCE IF EXISTS player_history_id_seq RESTART WITH 1;
|
|
48
|
+
ALTER SEQUENCE IF EXISTS user_badges_id_seq RESTART WITH 1;
|
|
49
|
+
ALTER SEQUENCE IF EXISTS user_sessions_id_seq RESTART WITH 1;
|
|
50
|
+
ALTER SEQUENCE IF EXISTS keeper_actions_id_seq RESTART WITH 1;
|
|
51
|
+
ALTER SEQUENCE IF EXISTS keeper_health_id_seq RESTART WITH 1;
|
|
52
|
+
ALTER SEQUENCE IF EXISTS keeper_rounds_id_seq RESTART WITH 1;
|
|
53
|
+
ALTER SEQUENCE IF EXISTS jackpot_rounds_id_seq RESTART WITH 1;
|
|
54
|
+
ALTER SEQUENCE IF EXISTS users_id_seq RESTART WITH 1;
|
|
55
|
+
|
|
56
|
+
-- Verify deletion
|
|
57
|
+
SELECT 'PURGE COMPLETE!' as status,
|
|
58
|
+
(SELECT COUNT(*) FROM users) as users_count,
|
|
59
|
+
(SELECT COUNT(*) FROM chat_messages) as messages_count,
|
|
60
|
+
(SELECT COUNT(*) FROM player_stats) as stats_count,
|
|
61
|
+
(SELECT COUNT(*) FROM user_sessions) as sessions_count;
|
|
62
|
+
|