sqflite_migrate 0.4.0
sqflite_migrate: ^0.4.0 copied to clipboard
SQFLite migration tool
sqflite_migrate #

Proper, and traditional way to do migrations in sqflite
- Supports using plain
sqlsyntax to create migration files - A working CLI with all the necessary commands
- A programmatic approach for more fine grained control (not recommended for production)
Usage #
dart pub global activate sqflitemigrate
This will give you access to global cli from pub.flutter-io.cn website
Create your migrations folder #
Create migrations folder wherever you think its most suitable for your app, and fill it with migration files
-- UP --
CREATE TABLE IF NOT EXISTS my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
-- DOWN --
DROP TABLE my_table;
-- UP -- and -- DOWN -- are just plain sql comments required to separate the up and down queries
You can write as many queries as you want in the up and down sections, as long as the statements are separated by ; delimiter
-- UP --
CREATE TABLE IF NOT EXISTS my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS my_table2 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
-- DOWN --
DROP TABLE my_table;
DROP TABLE my_table2;
Naming format #
The migration files should be named in the following format
<version>_<description>.sql
Currently the version format is just a simple integer, that should be incremental, and sorted in ascending order that you want to run the migrations to run
In next releases we will add create command in the cli, with options to create it with a timestamp, or a version number
Running the migrations #
sqflite_migrate cli has the following commands
migrate --database DB_PATH --path MIGRATIONS_FOLDER_PATH [OPTIONS]- Runs the migrationsrollback --database DB_PATH --path MIGRATIONS_FOLDER_PATH [OPTIONS]- Rolls back the migrationsstatus --database DB_PATH --path MIGRATIONS_FOLDER_PATH- Shows the current status of the migrationsclear --database DB_PATH- Clears all the records from migrations tabledelete-db --database DB_PATH- Deletes the database file, and all the migrations records
Programmatic usage #
You can also use the MigrationRunner class to run the migrations programmatically, but it is not recommended to use it in production, as it is not properly tested for this approach
import 'package:sqflite_migrate/sqflite_migrate.dart';
void main() async {
final migrator = MigrationRunner.init(
database: 'path/to/db',
migrationsPath: 'path/to/migrations',
);
await migrator.migrate()..rollback();
}
Coming up #
- Add
createcommand in the cli - Add
timestampandversionoptions in thecreatecommand - Add
--forceoption in themigratecommand to force run all the migrations - Add
--forceoption in therollbackcommand to force rollback all the migrations