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

74 lines
2.8 KiB
Markdown

# 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)
```bash
# 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
```bash
# 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
- **Migration Script**: `/mnt/NV2/Development/major-domo/database/migrate_custom_commands.py`
- **Source DB**: `/mnt/NV2/Development/major-domo/sba_is_fun.db`
- **Production API**: https://sba.manticorum.com/api/v3/custom_commands
---
**Ready to execute. No additional setup required.**