Technology
The migration module provides comprehensive database migration capabilities for Project Forge applications. It enables structured database schema evolution with version control and automated migration execution.
Overview
This module provides:
- CLI Migration Command: Execute migrations from the command line using
./bin/app migrate - Web UI Interface: View and manage migrations through the web interface
- Automatic Migration: Run migrations on application startup
- Version Control: Track schema changes with versioned migration files
- Multi-Database Support: Works with PostgreSQL, SQLite, MySQL, and SQL Server
Key Features
Migration Management
- Versioned migration files in SQL format
- Automatic migration tracking and execution
- Rollback capabilities for schema changes
- Migration status monitoring and reporting
Integration Options
- Command Line:
./bin/app migratefor manual execution - Web Interface: Browser-based migration management
- Application Startup: Automatic migration on app initialization
- CI/CD Integration: Execute migrations in deployment pipelines
Database Support
- PostgreSQL (primary support)
- SQLite (embedded applications)
- MySQL (enterprise applications)
- SQL Server (enterprise applications)
Package Structure
Migration Library
lib/database/migrate/- Core migration functionality- Migration file parsing and execution
- Version tracking and state management
- Database schema validation
- Rollback and recovery operations
Migration Files
queries/migrations/- SQL migration files directory- Strongly-typed
quicktemplatefunctions - Versioned schema changes
- Data transformation scripts
- Index and constraint definitions
- Seed data initialization
- Strongly-typed
Usage
Basic Setup
- Add Migration Dependency: Include
migrationin your project modules - Create Migration Files: Add SQL files to
./queries/migrations/ - Register Migrations: Call
AddMigration()to register migration files - Execute Migrations: Use CLI command or automatic startup
Creating Migrations
Create SQL files in ./queries/migrations/ directory:
1 | |
Registration
Register migrations in your application:
1 | |
Execution Methods
Command Line Execution
1 | |
Automatic Startup Execution
1 | |
Web Interface
- Navigate to
/admin/migrationsin your application - View migration status and execution history
Dependencies
databasemodule - Database connection and management
Best Practices
Migration File Structure
- One logical change per migration file
- Test migrations on sample data
- Use transactions for atomic operations
Version Control
- Commit migration files with application code
- Never modify existing migration files
- Create new migrations for schema changes
- Tag releases after successful migrations
Production Deployment
- Test migrations in staging environments
- Backup databases before migration execution
- Monitor migration execution time and performance
- Plan for rollback scenarios
Source Code
- Repository: https://github.com/kyleu/projectforge/tree/main/module/migration
- License: CC0 (Public Domain)
- Author: Kyle U (kyle@kyleu.com)
See Also
- Database Module - Database connection and management
- Configuration Guide - Environment variable configuration
- Project Forge Documentation - Complete documentation