MatrixDev / Roomigrant

Automated Android Room ORM migrations generator with compile-time code generation
MIT License
373 stars 23 forks source link

ALTER table adds a default value to the new column even if the entity class doesn't have a default value #24

Open ubarua123 opened 2 years ago

ubarua123 commented 2 years ago

I added this column in my entity class

@ColumnInfo(name = "show_logo_on_download")
var showLogoOnDownload : Boolean = true,

As you can see, the default value is true in the code but not at the database level.

The corresponding json file generated show_logo_on_download INTEGER NOT NULL, ......

However the migration codegen generated ALTER TABLE table_name ADD show_logo_on_download INTEGER NOT NULL DEFAULT 0

Now because of this, in the code, I am expecting a true for showLogoOnDownload but now it's false everywhere because the database inserted 0 as the default value.

Now as a result I have write a migration code just so that I fill it explicitly with 1 i.e., true

Can you please look into this? This library has been extremely useful to me.

MatrixDev commented 2 years ago

Hello @ubarua123. Library doesn't take to account anything related to the Kotlin code, it only parses json files generated by the Room library. Please check whether generated json files actually has true as a default value. If there is no default value - than type-based (not field-based) default value will be taken.