feat: Take @SerializableField properties into account when generating Migration (#98)

This commit is contained in:
Ben Vercammen 2023-03-21 22:04:15 +01:00
parent 95f425021a
commit 966622ed2f
2 changed files with 15 additions and 3 deletions

View file

@ -125,12 +125,18 @@ Future<OrmBuildContext?> buildOrmContext(
buildCtx.resolveSerializedFieldType(field.name), buildCtx.resolveSerializedFieldType(field.name),
), ),
); );
var isEnumField =
(field.type is InterfaceType && field.type.element is EnumElement);
var hasColumnAnnotation =
(columnAnnotation?.getField('type')?.hasKnownValue ?? false);
column = Column( column = Column(
isNullable: column.isNullable, isNullable: column.isNullable,
length: column.length, length: column.length,
indexType: column.indexType, 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, defaultValue: column.defaultValue,
); );

View file

@ -15,7 +15,13 @@ class HasCarMigration extends Migration {
table.serial('id').primaryKey(); table.serial('id').primaryKey();
table.timeStamp('created_at'); table.timeStamp('created_at');
table.timeStamp('updated_at'); table.timeStamp('updated_at');
table.varChar('color'); table.declareColumn(
'color',
Column(
type: ColumnType('varchar'),
length: 1,
),
);
table.integer('type').defaultsTo(0); table.integer('type').defaultsTo(0);
}, },
); );