Skip to content

F3-Migrations is a database helper plugin for the Fat-Free framework.

License

Notifications You must be signed in to change notification settings

myaaghubi/f3-migrations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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.

Installation

If you use composer, run the below code:

composer require myaghobi/f3-migrations

For manual installation:

  1. Copy the content of lib/ folder into your lib/ folder.
  2. Install Schema Builder as mentioned in its documentation.
  3. Install Html2Text, by placing the html2text.php inside of a folder named html2text in your lib/.

Operation and basic usage

The plugin provides a simple web interface, consists of 4 routes that will auto add to your app:

  • GET /migrations displays the web interface
  • GET /migrations/@action triggers an action
  • GET /migrations/@action/@target specific target version for the action
  • GET /migrations/theme/@type/@file to 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

  1. Make sure the path of your cases directory be exists and secure.
  2. Call yourAppPublicUrl/migrations in browser.
  3. Use makecase action to make your first migration case.
  4. Call migrate action.

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

  1. First update the plugin via composer or manually.
  2. Now the path of migration cases is relative to index.php, so make sure it be exists.
  3. Make a backup of your DB and migration cases.
  4. Call upgrademc action 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