diff --git a/.idea/orm.iml b/.idea/orm.iml index 5ef6ddeb..0afafb50 100644 --- a/.idea/orm.iml +++ b/.idea/orm.iml @@ -16,6 +16,5 @@ - \ No newline at end of file diff --git a/angel_orm_generator/lib/src/builder/orm/build_context.dart b/angel_orm_generator/lib/src/builder/orm/build_context.dart index d2b70516..2bf880dd 100644 --- a/angel_orm_generator/lib/src/builder/orm/build_context.dart +++ b/angel_orm_generator/lib/src/builder/orm/build_context.dart @@ -142,7 +142,7 @@ Future buildContext( ); } - if (column != null) { + if (column != null && column.type == null) { column = new Column( nullable: column.nullable, length: column.length, diff --git a/angel_orm_generator/lib/src/builder/orm/migration.dart b/angel_orm_generator/lib/src/builder/orm/migration.dart index 0c7f105a..b92f0692 100644 --- a/angel_orm_generator/lib/src/builder/orm/migration.dart +++ b/angel_orm_generator/lib/src/builder/orm/migration.dart @@ -48,18 +48,19 @@ class MigrationGenerator extends GeneratorForAnnotation { var clazz = new ClassBuilder('${ctx.modelClassName}Migration', asExtends: new TypeBuilder('Migration')); - clazz..addMethod(buildUpMigration(ctx))..addMethod(buildDownMigration(ctx)); + clazz..addMethod(buildUpMigration(ctx, lib))..addMethod(buildDownMigration(ctx)); return lib..addMember(clazz); } - MethodBuilder buildUpMigration(PostgresBuildContext ctx) { + MethodBuilder buildUpMigration(PostgresBuildContext ctx, LibraryBuilder lib) { var meth = new MethodBuilder('up')..addPositional(_schemaParam); var closure = new MethodBuilder.closure() ..addPositional(parameter('table')); var table = reference('table'); List dup = []; + bool hasOrmImport = false; ctx.columnInfo.forEach((name, col) { var key = ctx.resolveFieldName(name); @@ -81,8 +82,7 @@ class MigrationGenerator extends GeneratorForAnnotation { List positional = [literal(key)]; Map named = {}; - if (autoIdAndDateFields != false && name == 'id') - methodName = 'serial'; + if (autoIdAndDateFields != false && name == 'id') methodName = 'serial'; if (methodName == null) { switch (col.type) { @@ -115,6 +115,11 @@ class MigrationGenerator extends GeneratorForAnnotation { methodName = 'timeStamp'; break; default: + if (!hasOrmImport) { + hasOrmImport = true; + lib.addDirective(new ImportBuilder('package:angel_orm/angel_orm.dart')); + } + ExpressionBuilder provColumn; var colType = new TypeBuilder('Column'); var columnTypeType = new TypeBuilder('ColumnType'); diff --git a/angel_orm_generator/test/models/author.up.g.sql b/angel_orm_generator/test/models/author.up.g.sql index 3ea50c88..4be12feb 100644 --- a/angel_orm_generator/test/models/author.up.g.sql +++ b/angel_orm_generator/test/models/author.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "authors" ( - "id" varchar, + "id" serial, "name" varchar UNIQUE, "created_at" timestamp, "updated_at" timestamp, diff --git a/angel_orm_generator/test/models/book.up.g.sql b/angel_orm_generator/test/models/book.up.g.sql index 125ff38d..465e1f07 100644 --- a/angel_orm_generator/test/models/book.up.g.sql +++ b/angel_orm_generator/test/models/book.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "books" ( - "id" varchar, + "id" serial, "name" varchar, "created_at" timestamp, "updated_at" timestamp, diff --git a/angel_orm_generator/test/models/car.up.g.sql b/angel_orm_generator/test/models/car.up.g.sql index ce6adb74..4cfacf16 100644 --- a/angel_orm_generator/test/models/car.up.g.sql +++ b/angel_orm_generator/test/models/car.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "cars" ( - "id" varchar, + "id" serial, "make" varchar, "description" varchar, "family_friendly" boolean, diff --git a/angel_orm_generator/test/models/foot.up.g.sql b/angel_orm_generator/test/models/foot.up.g.sql index 2635e5f3..8b9583a0 100644 --- a/angel_orm_generator/test/models/foot.up.g.sql +++ b/angel_orm_generator/test/models/foot.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "foots" ( - "id" varchar, + "id" serial, "leg_id" int, "n_toes" int, "created_at" timestamp, diff --git a/angel_orm_generator/test/models/fruit.up.g.sql b/angel_orm_generator/test/models/fruit.up.g.sql index f5b5fefe..558745c8 100644 --- a/angel_orm_generator/test/models/fruit.up.g.sql +++ b/angel_orm_generator/test/models/fruit.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "fruits" ( - "id" varchar, + "id" serial, "tree_id" int, "common_name" varchar, "created_at" timestamp, diff --git a/angel_orm_generator/test/models/leg.up.g.sql b/angel_orm_generator/test/models/leg.up.g.sql index 145ee9bd..6748f79c 100644 --- a/angel_orm_generator/test/models/leg.up.g.sql +++ b/angel_orm_generator/test/models/leg.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "legs" ( - "id" varchar, + "id" serial, "name" varchar, "created_at" timestamp, "updated_at" timestamp, diff --git a/angel_orm_generator/test/models/role.up.g.sql b/angel_orm_generator/test/models/role.up.g.sql index 649ea5dc..0cfadc10 100644 --- a/angel_orm_generator/test/models/role.up.g.sql +++ b/angel_orm_generator/test/models/role.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "roles" ( - "id" varchar, + "id" serial, "name" varchar, "created_at" timestamp, "updated_at" timestamp, diff --git a/angel_orm_generator/test/models/tree.migration.g.dart b/angel_orm_generator/test/models/tree.migration.g.dart index 11ed9d2f..c0feec10 100644 --- a/angel_orm_generator/test/models/tree.migration.g.dart +++ b/angel_orm_generator/test/models/tree.migration.g.dart @@ -5,13 +5,14 @@ // ************************************************************************** import 'package:angel_migration/angel_migration.dart'; +import 'package:angel_orm/angel_orm.dart'; class TreeMigration extends Migration { @override up(Schema schema) { schema.create('trees', (table) { table.serial('id')..primaryKey(); - table.integer('rings')..unique(); + table.declare('rings', new ColumnType('smallint'))..unique(); table.timeStamp('created_at'); table.timeStamp('updated_at'); }); diff --git a/angel_orm_generator/test/models/tree.up.g.sql b/angel_orm_generator/test/models/tree.up.g.sql index a1bde855..0acebf9e 100644 --- a/angel_orm_generator/test/models/tree.up.g.sql +++ b/angel_orm_generator/test/models/tree.up.g.sql @@ -1,6 +1,6 @@ CREATE TEMPORARY TABLE "trees" ( - "id" varchar, - "rings" int UNIQUE, + "id" serial, + "rings" smallint UNIQUE, "created_at" timestamp, "updated_at" timestamp, UNIQUE(rings), diff --git a/angel_orm_generator/test/models/user.up.g.sql b/angel_orm_generator/test/models/user.up.g.sql index 2ac08fb4..b536a5a5 100644 --- a/angel_orm_generator/test/models/user.up.g.sql +++ b/angel_orm_generator/test/models/user.up.g.sql @@ -1,5 +1,5 @@ CREATE TEMPORARY TABLE "users" ( - "id" varchar, + "id" serial, "username" varchar, "password" varchar, "email" varchar,