All Versions
11
Latest Version
Avg Release Cycle
46 days
Latest Release
1975 days ago

Changelog History
Page 1

  • v5.0.0 Changes

    October 21, 2018

    ๐Ÿ“ฆ 1. Rename package name for project to com.dbflow5. Some significant package reorganization that makes much more sense going forward.

    1. Project is back under my account! To include, please replace uses of "com.github.raizlabs.dbflow:" to "com.github.agrosner.dbflow:" in project dependencies. ๐Ÿ†• 3. Added new paging, coroutines, contentprovider (splits out use into separate module). Expect a livedata module in next couple releases. Removed RXJava 1 support.
    2. Library is now 100% KOTLIN! (except generated java code, which can't quite yet be Kotlin). All kotlin-extensions modules have rolled into their java counterpart as a single Kotlin unit.
    3. Simplifications in API for Transactions to eliminate redundancies. Also, now Transaction require a type parameter R which is return value. They now return a value, and have a completion() callback. All interfaces have rolled into Kotlin Typealias to methods. ๐Ÿ’… 6. All sqlite query language infix (LINQ-style) methods rolled into the query language!
    4. Attempted to keep java compatibility and nice API. If anything is missing, please file a bug. ๐ŸŽ 8. save() now use a insert or replace statement rather than a load of the model from the db and then inserting / saving based on that, resulting in significant performance increase. 0๏ธโƒฃ 9. no more ContentValues used at all in any CRUD operations under the hood, and by default these don't get generated: bindToInsertValues, bindToContentValues. if you need them, set @Table(generateContentValues = true). ๐Ÿ’ฅ 10. Breaking Change : By default @Table(allFields = true), meaning you dont have to explicitly mark each property as part of DB. Previously you had to use @Column everywhere.
  • v5.0.0-alpha1 Changes

    October 21, 2018

    ๐Ÿ“ฆ 1. Rename package name for project to com.dbflow5. Some significant package reorganization that makes much more sense going forward.

    1. Project is back under my account! To include, please replace uses of "com.github.raizlabs.dbflow:" to "com.github.agrosner.dbflow:" in project dependencies. ๐Ÿ†• 3. Added new paging, coroutines, contentprovider (splits out use into separate module). Expect a livedata module in next couple releases. Removed RXJava 1 support.
    2. Library is now 100% KOTLIN! (except generated java code, which can't quite yet be Kotlin). All kotlin-extensions modules have rolled into their java counterpart as a single Kotlin unit.
    3. Simplifications in API for Transactions to eliminate redundancies. Also, now Transaction require a type parameter R which is return value. They now return a value, and have a completion() callback. All interfaces have rolled into Kotlin Typealias to methods. ๐Ÿ’… 6. All sqlite query language infix (LINQ-style) methods rolled into the query language!
    4. Attempted to keep java compatibility and nice API. If anything is missing, please file a bug. ๐ŸŽ 8. save() now use a insert or replace statement rather than a load of the model from the db and then inserting / saving based on that, resulting in significant performance increase. 0๏ธโƒฃ 9. no more ContentValues used at all in any CRUD operations under the hood, and by default these don't get generated: bindToInsertValues, bindToContentValues. if you need them, set @Table(generateContentValues = true). ๐Ÿ’ฅ 10. Breaking Change : By default @Table(allFields = true), meaning you dont have to explicitly mark each property as part of DB. Previously you had to use @Column everywhere.
  • v4.2.4 Changes

    December 28, 2017
    1. dropTrigger from SqlUtils takes in a DatabaseWrapper. โœ… 2. Fix broken annotation processor code output tests. #1437
    2. Fix issues where DatabaseStatement in library in wrapper statements were not closed properly. #1497
    3. Fix issue where single reference (non table object) used wrong name for property in the primary condition clause, causing compile issue. #1504
  • v4.2.3 Changes

    December 20, 2017

    โšก๏ธ 1. update Issue template

    1. fix pom file generation on jitpack #1487 โšก๏ธ 3. fix issue where save(DatabaseWrapper) would leave open insert or update statment. #1496 โšก๏ธ 4. Allow (but still warn) about autoincrementing ids being null. if null, they are treated as if they are 0 meaning that they will get inserted rather than updated in the DB during a save operation. #1490 โšก๏ธ 5. Update warning on wrong type passed in operator class for value #1488
  • v4.2.2 Changes

    December 18, 2017

    ๐Ÿ›  Fix critical issue where TypeConverter always appear as SQLiteType.TEXT in the DB even if its type did not match up.

    โž• Adds a test to ensure it stays true.

    #1481

  • v4.2.1 Changes

    December 17, 2017

    โž• Add FlowQueryList.Builder.contentAuthority() parameter to go in conjunction with 4.2.0 changes.

  • v4.2.0 Changes

    December 17, 2017

    ๐Ÿ‘Œ Support for Android O Content Providers.
    Simply add this line to your AndroidManifest.xml:

    <provider
                android:name="com.raizlabs.android.dbflow.runtime.StubContentProvider"
                android:authorities="com.dbflow.authority"/>
    

    Which will allow normal content observing to continue.
    ๐Ÿ“ฆ It is highly recommended to supply your own authority: use your own package name. so for com.grosner.example app I would add:

    <provider
                android:name="com.raizlabs.android.dbflow.runtime.StubContentProvider"
                android:authorities="com.grosner.example"/>
    
    FlowManager.init(FlowConfig.Builder(context)
                .addDatabaseConfig(DatabaseConfig.Builder(MyDatabase.class)
                    .modelNotifier(new ContentResolverNotifier("com.grosner.example"))
                    .build()).build());
    
  • v4.1.2 Changes

    October 21, 2017
    1. Autoincrement model saver does not call saveForeignKeys() #1454
    2. Ability to reopen DB without deleting #1449
    3. AutoIncrementModelSaver causes IllegalArgumentException since it uses wrong insert statement #1447
    4. Disallow nullable autoincrementing fields. (kotlin nullable (?) and @nullable annotations)
    5. Can close all DBs at runtime. #1418 ๐Ÿ‘ 6. fix support for byte[], class was incorrectly treated as invalid array type. #1463 ๐Ÿ— 7. Compiled with Kotlin 1.1.51, 26.0.2 of Android build-tools, and 3.0.0-rc2 of Android Gradle plugin.
  • v4.1.1 Changes

    August 31, 2017
    1. Fix issue with ByteArray and TypeConverter #1385
    2. Fix issue where processor used implementation. switched back to compile.
  • v4.1.0 Changes

    August 27, 2017

    โœ… 1. @ModelView are now created after migrations are run so latest DB data is respected.

    1. New annotation @ColumnMap! It enables embedding other object's exposed properties into the current table as @Column so that object hierarchy is respected without excessive DB complication.

      class Location(var latitude: Double = 0.0, var longitude: Double = 0.0)@Table(database = TestDatabase::class)class Position(@PrimaryKey var id: Int = 0, @ColumnMap var location: Location? = null)

    creates a table with the following columns:

      public static final Property<Integer> id = new Property<Integer>(Position.class, "id");
      public static final Property<Double> latitude = new Property<Double>(Position.class, "latitude");
      public static final Property<Double> longitude = new Property<Double>(Position.class, "longitude");
    
    1. @database(name = , extension = ) are deprecated. Specify the name now in the DatabaseConfig.databaseName() when FlowManager is initialized. This means that DBFlow supports dynamic database names and instances.

      FlowManager.init(FlowConfig.builder() .addDatabaseConfig(DatabaseConfig.builder(AppDatabase.class) .databaseName("AppDatabase") .databaseExtension(".txt") .build()) .build())

    To dynamically swap database out, replace the FlowConfig:

    FlowManager.getDatabase(AppDatabase.class) .reset(DatabaseConfig.builder(AppDatabase.class) .databaseName("AppDatabase-2") .build())
    

    โœ‚ Note that this will overwrite all existing database properties for a database. Any TableConfig properties missing will get ignored. Also it will delete existing db and reopen with new instance specified.

    1. @database(inMemory = ) is deprecated. Use the new builder method:

      FlowManager.init(FlowConfig.builder() .addDatabaseConfig(DatabaseConfig.inMemoryBuilder(AppDatabase.class) .databaseName("AppDatabase") .build()) .build())

    ๐Ÿ‘ 1. Support javax.annotation.Generated if it's on the classpath.

    1. @database(generatedClassSeparator = ) is now deprecated. It will be standardized to the default _ in a future breaking release. ๐Ÿ—„ 3. @OneToMany now auto-detect visibility of the reference field so isVariablePrivate() is deprecated.
    2. Can specify @ForeignKeyReference(notNull = @NotNull()) annotation for individual references. Required to specify all references on a @ForeignKey if you need to specify for one. ๐Ÿ‘ 5. Some better error messaging in the annotation processor so its easier to find solutions to common issues. ๐Ÿ—„ 6. Rename count() (deprecated) to longValue() so its more clear exactly what is happening.
    3. fix #1401 which enables custom TypeConverters to carry into an as() alias of a Property.
    4. Add new TransactionWrapper which allows grouping of ITransaction into one to get executed at same point in db time. ๐Ÿ— 9. Lib now compiles with SDK 26 with latest build tools including api/implementation of 3.0.0+ gradle plugin. โšก๏ธ 10. RXJava2 is now updated to 2.1.3 โšก๏ธ 11. Update some methods of dbflow-kotlin-extensions to accept nullable values for objects where it makes sense. See commit
    5. Automatic creation of tables can be turned off on a table-by-table basis with createWithDatabase(). Useful for preserving scrapped table in previous migrations.
    6. Using Kotlin we can drastically reduce the @OneToMany code implementation:

      @OneToMany(methods = {OneToMany.Method.ALL}, variableName = "ants") public List<Ant> getMyAnts() { if (ants == null || ants.isEmpty()) { ants = SQLite.select() .from(Ant.class) .where(Ant_Table.queen_id.eq(id)) .queryList(); } return ants; }

    to:

    @get:OneToMany(methods = arrayOf(OneToMany.Method.ALL))var ants by oneToMany { select from Ant::class where (Ant\_Table.queen\_id.eq(id)) }