Merge pull request #145 from dukefirehawk/bugfix/mariadb
Fixed mariadb issue
This commit is contained in:
commit
7cbdcb0255
5 changed files with 34 additions and 21 deletions
|
@ -1,5 +1,9 @@
|
|||
# Change Log
|
||||
|
||||
## 8.2.2
|
||||
|
||||
Fixed `MariaDbMigrationRunner` migration issues
|
||||
|
||||
## 8.2.1
|
||||
|
||||
* Updated README
|
||||
|
|
|
@ -14,18 +14,15 @@ This package contains the implementation of the database migration for the follo
|
|||
## Usage
|
||||
|
||||
* Use `PostgresMigrationRunner` to perform database migration for PostgreSQL.
|
||||
|
||||
* Use `MySqlMigrationRunner` to perform database migration for MySQL and MariaDB. This runner is using [`mysql_client`](https://pub.dev/packages?q=mysql_client) driver.
|
||||
|
||||
* Use `MariaDbMigrationRunner` to perform database migration for MariaDB. This runner is using [`mysql1`](https://pub.dev/packages?q=mysql1) driver.
|
||||
|
||||
## Supported Operations
|
||||
|
||||
* reset - Clear out all records in the `migrations` table and drop all the ORM related tables.
|
||||
* up - Generate all the tables based on the ORM models.
|
||||
* reset - Clear out all records in the `migrations` table and drop all the ORM related tables.
|
||||
* refresh - Run `reset` follow by `up`
|
||||
|
||||
## To do
|
||||
## Limitation
|
||||
|
||||
* Update existing tables
|
||||
* Reverse engineer tables into models
|
||||
* Update schema changes is not supported
|
||||
|
|
|
@ -14,12 +14,12 @@ class MariaDbMigrationRunner implements MigrationRunner {
|
|||
final Map<String, Migration> migrations = {};
|
||||
final Queue<Migration> _migrationQueue = Queue();
|
||||
final MySqlConnection connection;
|
||||
bool _connected = false;
|
||||
//bool _connected = false;
|
||||
|
||||
MariaDbMigrationRunner(this.connection,
|
||||
{Iterable<Migration> migrations = const [], bool connected = false}) {
|
||||
{Iterable<Migration> migrations = const [], bool connected = true}) {
|
||||
if (migrations.isNotEmpty) migrations.forEach(addMigration);
|
||||
_connected = connected;
|
||||
//_connected = connected;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -34,20 +34,18 @@ class MariaDbMigrationRunner implements MigrationRunner {
|
|||
migrations.putIfAbsent(path.replaceAll('\\', '\\\\'), () => migration);
|
||||
}
|
||||
|
||||
if (!_connected) {
|
||||
_connected = true;
|
||||
}
|
||||
|
||||
await connection.query('''
|
||||
CREATE TABLE IF NOT EXISTS migrations (
|
||||
id integer NOT NULL AUTO_INCREMENT,
|
||||
batch integer,
|
||||
path varchar(255),
|
||||
path varchar(500),
|
||||
PRIMARY KEY(id)
|
||||
);
|
||||
''').then((result) {
|
||||
//print(result.affectedRows);
|
||||
_log.fine('Check and create "migrations" table');
|
||||
}).catchError((e) {
|
||||
//print(e);
|
||||
_log.severe('Failed to create "migrations" table.', e);
|
||||
});
|
||||
}
|
||||
|
@ -59,7 +57,10 @@ class MariaDbMigrationRunner implements MigrationRunner {
|
|||
|
||||
var existing = <String>[];
|
||||
if (result.isNotEmpty) {
|
||||
existing = result.expand((x) => x).cast<String>().toList();
|
||||
var pathList = result.expand((x) => x).cast<String>().toList();
|
||||
for (var path in pathList) {
|
||||
existing.add(path.replaceAll("\\", "\\\\"));
|
||||
}
|
||||
}
|
||||
|
||||
var toRun = <String>[];
|
||||
|
@ -121,7 +122,10 @@ class MariaDbMigrationRunner implements MigrationRunner {
|
|||
.query('SELECT path from migrations WHERE batch = $curBatch;');
|
||||
var existing = <String>[];
|
||||
if (result.isNotEmpty) {
|
||||
existing = result.expand((x) => x).cast<String>().toList();
|
||||
var pathList = result.expand((x) => x).cast<String>().toList();
|
||||
for (var path in pathList) {
|
||||
existing.add(path.replaceAll("\\", "\\\\"));
|
||||
}
|
||||
}
|
||||
|
||||
var toRun = <String>[];
|
||||
|
@ -153,7 +157,10 @@ class MariaDbMigrationRunner implements MigrationRunner {
|
|||
.query('SELECT path from migrations ORDER BY batch DESC;');
|
||||
var existing = <String>[];
|
||||
if (r.isNotEmpty) {
|
||||
existing = r.expand((x) => x).cast<String>().toList();
|
||||
var pathList = r.expand((x) => x).cast<String>().toList();
|
||||
for (var path in pathList) {
|
||||
existing.add(path.replaceAll("\\", "\\\\"));
|
||||
}
|
||||
}
|
||||
|
||||
var toRun = existing.where(migrations.containsKey).toList();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: angel3_migration_runner
|
||||
version: 8.2.1
|
||||
version: 8.2.2
|
||||
description: The implementation of database migration for Angel3 framework. Designed to work with Angel3 ORM.
|
||||
homepage: https://angel3-framework.web.app/
|
||||
repository: https://github.com/dart-backend/angel/tree/master/packages/orm/angel_migration_runner
|
||||
|
|
|
@ -37,10 +37,15 @@ void main() async {
|
|||
);
|
||||
});
|
||||
|
||||
group('MariaDB', () {
|
||||
test('migrate tables', () async {
|
||||
group('MariaDB migrate tables', () {
|
||||
test('up', () async {
|
||||
print("Test migration up");
|
||||
runner.up();
|
||||
await runner.up();
|
||||
});
|
||||
|
||||
test('reset', () async {
|
||||
print("Test migration reset");
|
||||
await runner.reset();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue