sojorn/migrations/README.md
Patrick Britton 0bb1dd4055 feat: organize SQL scripts into structured migration folders
- Create organized migration folder structure:
  - database/ - Core schema changes and migrations
  - tests/ - Test scripts and verification queries
  - directus/ - Directus CMS configuration scripts
  - fixes/ - Database fixes and patches
  - archive/ - Historical and deprecated scripts

- Move 60+ SQL files from root to appropriate folders
- Add comprehensive README with usage guidelines
- Consolidate old migrations_archive into new archive folder
- Maintain clear separation of concerns for different script types

Benefits:
- Cleaner project root directory
- Easier to find specific types of SQL scripts
- Better organization for maintenance and development
- Clear documentation for migration procedures
- Proper separation of production vs development scripts
2026-02-05 09:13:47 -06:00

166 lines
4.2 KiB
Markdown

# Database Migrations & SQL Scripts
This directory contains all SQL scripts organized by purpose and category.
## 📁 **Directory Structure**
### 🗄️ **`database/`**
Core database schema changes and migration scripts that modify the database structure.
**Files:**
- `create_verification_tokens.sql` - Creates email verification tokens table
- `fix_constraint.sql` - Fixes database constraint syntax errors
- `update_user_status.sql` - Updates user status enum with new moderation states
**Usage:**
```bash
# Apply database migrations
psql -d postgres -f migrations/database/create_verification_tokens.sql
```
---
### 🧪 **`tests/`**
Test scripts, verification queries, and diagnostic SQL used for testing and debugging.
**Files:**
- `check_*.sql` - Various database inspection queries
- `test_*.sql` - Test scripts for features
- `count_*.sql` - Count queries for verification
- `verify_*.sql` - Verification scripts
- `final_*.sql` - Final system tests
**Usage:**
```bash
# Run verification tests
psql -d postgres -f migrations/tests/check_tables.sql
psql -d postgres -f migrations/tests/test_moderation_integration.sql
```
---
### 🎨 **`directus/`**
Directus CMS configuration, collections, permissions, and UI setup scripts.
**Files:**
- `add_directus_*.sql` - Directus collections and fields
- `fix_directus_*.sql` - Directus configuration fixes
- `use_existing_policy.sql` - Directus policy setup
- `fix_permissions_correct.sql` - Permission fixes
**Usage:**
```bash
# Setup Directus collections
psql -d postgres -f migrations/directus/add_directus_collections.sql
```
---
### 🔧 **`fixes/`**
Database fixes, patches, and repair scripts for specific issues.
**Files:**
- `fix_collections_complete.sql` - Complete Directus collections fix
- `grant_permissions.sql` - Database permission grants
**Usage:**
```bash
# Apply database fixes
psql -d postgres -f migrations/fixes/fix_collections_complete.sql
```
---
### 📦 **`archive/`**
Historical scripts, temporary queries, and deprecated SQL files.
**Files:**
- All historical migration scripts
- Temporary diagnostic queries
- Deprecated or one-time scripts
- Original migrations_archive content
**Usage:**
```bash
# Archive scripts - for reference only
# Generally should not be run on production
```
---
## 🚀 **Official Migrations**
The official Go backend migrations are located in:
```
go-backend/internal/database/migrations/
```
These are timestamped migrations that are automatically applied by the Go application.
**Current Official Migrations:**
- `20260205000002_user_appeal_system_fixed.up.sql` - User appeal system
- `20260205000003_add_email_preferences.up.sql` - Email preferences
## 📋 **Usage Guidelines**
### **🔴 Production**
- Only use scripts from `database/` and official Go migrations
- Test thoroughly in staging first
- Always backup before applying
### **🟡 Staging**
- Can use `tests/` and `directus/` scripts
- Verify functionality before production
### **🟢 Development**
- All scripts available for testing
- Use `archive/` for reference and experimentation
### **⚠️ Important Notes**
- Always review scripts before running
- Check for dependencies between scripts
- Some scripts may be one-time use only
- Archive scripts may be outdated
---
## 🔄 **Migration Order**
For new deployments, follow this order:
1. **Database Schema** (`database/`)
2. **Directus Setup** (`directus/`)
3. **Apply Fixes** (`fixes/`)
4. **Run Tests** (`tests/`)
5. **Official Go Migrations** (auto-applied)
---
## 📝 **Adding New Scripts**
When adding new SQL scripts:
1. **Choose appropriate folder** based on purpose
2. **Use descriptive naming** with date/prefix
3. **Add comments** explaining purpose
4. **Test thoroughly** before committing
5. **Update this README** if adding new categories
**Naming Convention:**
- `YYYY-MM-DD_description.sql` for migrations
- `check_feature.sql` for verification scripts
- `test_feature.sql` for test scripts
- `fix_issue.sql` for fix scripts
---
## 🛠️ **Maintenance**
- **Review archive quarterly** - remove outdated scripts
- **Update documentation** - keep README current
- **Test migrations** - ensure they work with current schema
- **Backup before changes** - always backup production data
**Last Updated:** 2026-02-05
**Maintainer:** Development Team