myaghobi / f3-migrations
A database helper plugin for the Fat-Free framework.
Installs: 808
Dependents: 0
Suggesters: 0
Security: 0
Stars: 15
Watchers: 2
Forks: 3
Open Issues: 0
Language:CSS
pkg:composer/myaghobi/f3-migrations
Requires
- bcosca/fatfree-core: ^3.6
- html2text/html2text: ^4.3.1
- ikkez/f3-schema-builder: ^2.2.4
README
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:
- 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