f3-migrations
f3-migrations copied to clipboard
F3-Migrations is a database helper plugin for the Fat-Free framework.
F3-Migrations
F3-Migrations is a database helper plugin for the Fat-Free Framework.
It's something like version control for the sql databases. Every time you have to make some changes manually in your database, you can make a MigrationCase, and the plugin will handle that.
- F3-Migrations
- Installation
- Operation and basic usage
- Instantiate
- First migration
- Config
- Logging
- CLI mode
- Upgrade
- License
Installation
If you use composer, run the below code:
composer require myaghobi/f3-migrations
For manual installation:
- Copy the content of
lib/folder into yourlib/folder. - Install Schema Builder as mentioned in its documentation.
- Install Html2Text, by placing the
html2text.phpinside of a folder namedhtml2textin yourlib/.
Operation and basic usage
The plugin provides a simple web interface, consists of 4 routes that will auto add to your app:
GET /migrationsdisplays the web interfaceGET /migrations/@actiontriggers an actionGET /migrations/@action/@targetspecific target version for the actionGET /migrations/theme/@type/@fileto retrive css/js files if you have stored the UI dir in non-web-accessible path (recommended)
Also, it will create a table in your database named migrations to handle migrations.
Instantiate
Instantiate the Migrations class before f3->run(). The plugin works if DEBUG>=3, otherwise, it goes disable because of security issues and to get no resource usage.
To work with Migrations you need an active SQL connection:
// require('vendor/autoload.php');
// $f3=Base::instance();
$f3=require('lib/base.php');
...
// Acording to f3-schema-builder
// MySQL, SQLite, PostgreSQL & SQL Server are supported
$db = new \DB\SQL('mysql:host=localhost;port=3306;dbname='.$DBName, $user, $pass);
...
\DB\MIGRATIONS\Migrations::instance($db);
$f3->run();
First migration
- Make sure the path of your cases directory be exists and secure.
- Call
yourAppPublicUrl/migrationsin browser. - Use
makecaseaction to make your first migration case. - Call
migrateaction.
Config
This plugin is configurable via config file:
[migrations]
ENABLE=true
; PATH relative to `index.php`
PATH=../migrations
SHOW_BY_VERSOIN=true
CASE_PREFIX=migration_case_
LOG=true
The above config is the default, you can ignore/remove each one you don't need to change.
Logging
You can find the logs of actions in migrations.log located in the LOGS folder.
CLI mode
Just run the below code:
php index.php /migrations
Upgrade
- First update the plugin via composer or manually.
- Now the path of migration cases is relative to
index.php, so make sure it be exists. - Make a backup of your DB and migration cases.
- Call
upgrademcaction to update the old migration cases.
Finally call fresh action.
License
You are allowed to use this plugin under the terms of the GNU General Public License version 3 or later.
Copyright (C) 2021 Mohammad Yaghobi