From 7f08347cda54a806dab43698456e880e6420d1c8 Mon Sep 17 00:00:00 2001 From: Kilian Schulte Date: Mon, 23 Jan 2023 10:38:38 +0100 Subject: [PATCH] improve tests --- .gitignore | 2 +- lib/src/cli/migration/inspector.dart | 4 +++- lib/src/cli/migration/patcher.dart | 2 +- test/migration/migration_test.dart | 7 +++++++ test/migration/schemas/schema_1.dart | 3 ++- test/migration/schemas/schema_2.dart | 7 +++++-- 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index ac86caf..da619ab 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,5 @@ pubspec.lock coverage/ doc/api/ -test/**.schema.dart +test/**/*.schema.dart diff --git a/lib/src/cli/migration/inspector.dart b/lib/src/cli/migration/inspector.dart index 7ae50e7..d38613d 100644 --- a/lib/src/cli/migration/inspector.dart +++ b/lib/src/cli/migration/inspector.dart @@ -26,7 +26,9 @@ Future inspectDatabaseSchema(Database db) async { (columnMap['column_default'] as String?)?.startsWith('nextval') ?? false; tableScheme.columns[columnName] = ColumnSchema( columnName, - type: columnIsAutoIncrement && columnType == 'int8' ? 'serial' : columnType, + type: columnIsAutoIncrement && (columnType == 'int4' || columnType == 'int8') + ? 'serial' + : columnType, isNullable: columnIsNullable == 'YES', isAutoIncrement: columnIsAutoIncrement, ); diff --git a/lib/src/cli/migration/patcher.dart b/lib/src/cli/migration/patcher.dart index 7c38793..106deb0 100644 --- a/lib/src/cli/migration/patcher.dart +++ b/lib/src/cli/migration/patcher.dart @@ -33,7 +33,7 @@ Future patchSchema(Database db, DatabaseSchemaDiff diff) async { }), ...table.columns.modified.expand((c) sync* { if (c.prev.type != 'serial' && c.newly.type == 'serial') { - yield 'ALTER COLUMN "${c.prev.name}" SET DATA TYPE int8 USING ${c.newly.name}::int8'; + yield 'ALTER COLUMN "${c.prev.name}" SET DATA TYPE int4 USING ${c.newly.name}::int4'; yield "ALTER COLUMN \"${c.prev.name}\" SET DEFAULT nextval('${table.name}_${c.newly.name}_seq')"; } else { var update = c.prev.type != c.newly.type diff --git a/test/migration/migration_test.dart b/test/migration/migration_test.dart index 7e2941b..6754cb7 100644 --- a/test/migration/migration_test.dart +++ b/test/migration/migration_test.dart @@ -31,6 +31,13 @@ void testMigrations() { expect(diff2Cols.modified, isEmpty); expect(diff2Cols.added, hasLength(1)); expect(diff2Cols.added.first.name, equals('rating')); + + var diff2Idx = diff2.tables.modified.first.indexes; + + expect(diff2Idx.removed, isEmpty); + expect(diff2Idx.modified, isEmpty); + expect(diff2Idx.added, hasLength(1)); + expect(diff2Idx.added.first.name, equals('rating_index')); }); }); } diff --git a/test/migration/schemas/schema_1.dart b/test/migration/schemas/schema_1.dart index da27a1a..0e9518a 100644 --- a/test/migration/schemas/schema_1.dart +++ b/test/migration/schemas/schema_1.dart @@ -12,8 +12,9 @@ abstract class Author { @Model() abstract class Book { + @AutoIncrement() @PrimaryKey() - String get id; + int get id; String get title; diff --git a/test/migration/schemas/schema_2.dart b/test/migration/schemas/schema_2.dart index fe59218..21e171b 100644 --- a/test/migration/schemas/schema_2.dart +++ b/test/migration/schemas/schema_2.dart @@ -10,10 +10,13 @@ abstract class Author { String get name; } -@Model() +@Model(indexes: [ + TableIndex(name: 'rating_index', columns: ['rating']) +]) abstract class Book { + @AutoIncrement() @PrimaryKey() - String get id; + int get id; String get title;