major-domo-database/MIGRATION_QUICK_REFERENCE.md
Cal Corum 57c943e340 CLAUDE: Add custom commands system with migration from legacy database
- Add CustomCommandCreator and CustomCommand models to db_engine.py
- Add comprehensive custom commands API router with full CRUD operations
- Include migration script for transferring 140 commands from sba_is_fun.db
- Add FastAPI integration for /api/v3/custom_commands endpoints
- Implement usage tracking, search, autocomplete, and statistics features
- Add grace period handling for unused commands to prevent deletion
- Include comprehensive documentation for migration process

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 16:31:39 -05:00

2.8 KiB

Custom Commands Migration - Quick Reference

TL;DR - Ready to Execute

Current Status

Local Testing: Complete - 140 commands migrated successfully
Production API: Working - Tables created, endpoints functional
Migration Script: Ready - Handles conflicts, grace periods, logging

Execute Production Migration (Copy & Paste)

# 1. Copy files to production
scp /mnt/NV2/Development/major-domo/sba_is_fun.db sba-database:/tmp/
scp /mnt/NV2/Development/major-domo/database/migrate_custom_commands.py sba-database:/tmp/

# 2. SSH and prepare
ssh sba-database
docker cp /tmp/sba_is_fun.db sba_database:/usr/src/app/storage/
docker cp /tmp/migrate_custom_commands.py sba_database:/usr/src/app/storage/

# 3. DRY RUN FIRST (always!)
docker exec sba_database python /usr/src/app/storage/migrate_custom_commands.py \
  --source /usr/src/app/storage/sba_is_fun.db \
  --target /usr/src/app/storage/sba_master.db \
  --dry-run

# 4. If dry run looks good, run actual migration
docker exec sba_database python /usr/src/app/storage/migrate_custom_commands.py \
  --source /usr/src/app/storage/sba_is_fun.db \
  --target /usr/src/app/storage/sba_master.db

# 5. Validate results
curl -s "https://sba.manticorum.com/api/v3/custom_commands/stats"
curl -s "https://sba.manticorum.com/api/v3/custom_commands/by_name/yeli"

Expected Results

  • 30 creators migrated
  • 140 commands migrated
  • All last_used dates preserved or updated to prevent deletion
  • Migration tags added to all commands
  • API endpoints immediately functional

What Migration Does

  1. Maps old schema (creator, command) to new schema (custom_command_creators, custom_commands)
  2. Preserves all data: names, content, timestamps, relationships
  3. Updates last_used dates for commands older than 60 days (prevents deletion)
  4. Adds ["migrated"] tag to all migrated commands
  5. Updates creator statistics automatically
  6. Handles conflicts gracefully (skips existing entries)

Rollback If Needed

# Remove migrated data (keeps any manually created commands)
docker exec sba_database python -c "
import sqlite3
conn = sqlite3.connect('/usr/src/app/storage/sba_master.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM custom_commands WHERE tags LIKE \"%migrated%\"')
cursor.execute('DELETE FROM custom_command_creators WHERE discord_id NOT IN (SELECT DISTINCT creator_discord_id FROM custom_commands WHERE creator_discord_id IS NOT NULL)')
conn.commit()
conn.close()
print('Rollback complete')
"

Key Files


Ready to execute. No additional setup required.