Skip to main content

angel3_migration_runner 10.0.1 copy "angel3_migration_runner: ^10.0.1" to clipboard
angel3_migration_runner: ^10.0.1 copied to clipboard

The implementation of database migration for Angel3 framework. Designed to work with Angel3 ORM.

example/main.dart

import 'dart:io';

import 'package:angel3_migration/angel3_migration.dart';
import 'package:angel3_migration_runner/angel3_migration_runner.dart';
import 'package:angel3_migration_runner/mysql.dart';
import 'package:angel3_migration_runner/postgres.dart';
import 'package:angel3_orm/angel3_orm.dart';
import 'package:mysql_dart/mysql_dart.dart';
import 'package:postgres/postgres.dart';

import 'todo.dart';

void main(List<String> args) async {
  // Run migration on PostgreSQL database
  postgresqlMigration(args);

  // Run migration on MySQL database
  mysqlMigration(args);
}

void postgresqlMigration(List<String> args) async {
  var host = Platform.environment['DB_HOST'] ?? 'localhost';
  var database = Platform.environment['DB_NAME'] ?? 'demo';
  var username = Platform.environment['DB_USERNAME'] ?? 'demouser';
  var password = Platform.environment['DB_PASSWORD'] ?? 'demo123';

  print("$host $database $username $password");

  Connection conn = await Connection.open(
    Endpoint(
      host: host,
      port: 5432,
      database: database,
      username: username,
      password: password,
    ),
    settings: ConnectionSettings(sslMode: SslMode.disable),
  );

  var runner = PostgresMigrationRunner(
    conn,
    migrations: [UserMigration(), TodoMigration(), FooMigration()],
  );

  runMigrations(runner, args);
}

void mysqlMigration(List<String> args) async {
  var host = Platform.environment['MYSQL_HOST'] ?? 'localhost';
  var database = Platform.environment['MYSQL_DB'] ?? 'orm_test';
  var username = Platform.environment['MYSQL_USERNAME'] ?? 'test';
  var password = Platform.environment['MYSQL_PASSWORD'] ?? 'Test123';

  var mySQLConn = await MySQLConnection.createConnection(
    host: host,
    port: 3306,
    databaseName: database,
    userName: username,
    password: password,
    secure: true,
    // `mysql_dart` 4 verifies the server's TLS certificate. A server in Docker
    // or on the same host has a self-signed one, so accept it here; for a
    // server with a certificate from your own CA, keep verifying and trust the
    // CA in `securityContext` instead.
    verifyServerCertificate: false,
  );
  await mySQLConn.connect();

  // ignore: unused_local_variable
  var runner = MySqlMigrationRunner(
    mySQLConn,
    migrations: [UserMigration(), TodoMigration(), FooMigration()],
  );

  runMigrations(runner, args);
}

class FooMigration extends Migration {
  @override
  void up(Schema schema) {
    schema.create('foos', (table) {
      table
        ..serial('id').primaryKey()
        ..varChar('bar', length: 64)
        ..timeStamp('created_at').defaultsTo(currentTimestamp);
    });
  }

  @override
  void down(Schema schema) => schema.drop('foos');
}
4
likes
160
points
1.17k
downloads

Documentation

API reference

Publisher

verified publisherdukefirehawk.com

Weekly Downloads

The implementation of database migration for Angel3 framework. Designed to work with Angel3 ORM.

Homepage
Repository (GitHub)
View/report issues
Contributing

License

BSD-3-Clause (license)

Dependencies

angel3_migration, angel3_orm, args, logging, mysql_dart, postgres

More

Packages that depend on angel3_migration_runner