From 966622ed2f5e75feadb3264c59867b079b345520 Mon Sep 17 00:00:00 2001 From: Ben Vercammen Date: Tue, 21 Mar 2023 22:04:15 +0100 Subject: [PATCH] feat: Take @SerializableField properties into account when generating `Migration` (#98) --- .../angel_orm_generator/lib/src/orm_build_context.dart | 10 ++++++++-- .../orm/angel_orm_test/lib/src/models/has_car.g.dart | 8 +++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/orm/angel_orm_generator/lib/src/orm_build_context.dart b/packages/orm/angel_orm_generator/lib/src/orm_build_context.dart index 78ec5a4d..49bcdb47 100644 --- a/packages/orm/angel_orm_generator/lib/src/orm_build_context.dart +++ b/packages/orm/angel_orm_generator/lib/src/orm_build_context.dart @@ -125,12 +125,18 @@ Future buildOrmContext( buildCtx.resolveSerializedFieldType(field.name), ), ); - + var isEnumField = + (field.type is InterfaceType && field.type.element is EnumElement); + var hasColumnAnnotation = + (columnAnnotation?.getField('type')?.hasKnownValue ?? false); column = Column( isNullable: column.isNullable, length: column.length, indexType: column.indexType, - type: inferColumnType(field.type), + // Only infer type when not set by the @Column annotation, for enums + type: (isEnumField && hasColumnAnnotation) + ? column.type + : inferColumnType(field.type), defaultValue: column.defaultValue, ); diff --git a/packages/orm/angel_orm_test/lib/src/models/has_car.g.dart b/packages/orm/angel_orm_test/lib/src/models/has_car.g.dart index f2b10004..4a243220 100644 --- a/packages/orm/angel_orm_test/lib/src/models/has_car.g.dart +++ b/packages/orm/angel_orm_test/lib/src/models/has_car.g.dart @@ -15,7 +15,13 @@ class HasCarMigration extends Migration { table.serial('id').primaryKey(); table.timeStamp('created_at'); table.timeStamp('updated_at'); - table.varChar('color'); + table.declareColumn( + 'color', + Column( + type: ColumnType('varchar'), + length: 1, + ), + ); table.integer('type').defaultsTo(0); }, );