# DBFlow [![JitPack.io](https://img.shields.io/badge/JitPack.io-5.0.0-alpha2-red.svg?style=flat)](https://jitpack.io/#agrosner/DBFlow) A Kotlin Multiplatform SQLite library. Annotate tables and databases; a compiler plugin generates adapters and a typed query DSL. **Targets:** Android, JVM, iOS, macOS. ```kotlin @Database(version = 1, tables = [User::class]) abstract class AppDatabase : DBFlowDatabase() { abstract val userAdapter: ModelAdapter } @Table data class User( @PrimaryKey(autoincrement = true) val id: Int = 0, val name: String, ) ``` ```kotlin import com.dbflow5.database.createDB val db = createDB(context) { copy(name = "App") } db.writableTransaction { userAdapter.save(User(name = "Ada")) val users = (userAdapter.select() where (User.name eq "Ada")).list() } ``` ## What’s included | Module | Role | | --- | --- | | `lib` | Runtime, query DSL, transactions, `Flow` observers | | `core` | Annotations and converters (pulled in by `lib`) | | `compiler` + plugin `com.dbflow5` | Table companions (adapters + column properties), `*_Adapter` helpers, `*_Database` | | `sqlcipher` | Encrypted Android databases | | `livedata` / `paging` / `reactive-streams` | Android extras | Coroutines are built into `lib`. There is no separate coroutines artifact. ## Docs Usage lives under [`usage2/`](usage2/README.md). The table of contents is in [`SUMMARY.md`](SUMMARY.md). Published HTML: [dbflow.gitbook.io/dbflow](https://dbflow.gitbook.io/dbflow/) ## Install See [Including in a project](usage2/including-in-project.md) for version catalogs, the compiler plugin, and generated sources. Quick start with a version catalog: ```toml [plugins] dbflow = { id = "com.dbflow5", version = "5.0.0-alpha2" } ``` ```kotlin plugins { kotlin("multiplatform") alias(libs.plugins.dbflow) } ``` That is the whole setup. The plugin adds the `com.dbflow5:lib` dependency, the compiler plugin, the generated-sources directory on `commonMain`, `-lsqlite3` linker opts for native binaries, and a `dbflowGenerate` task that keeps generated code in sync with your models. Until the plugin is on Maven Central, use a [composite build](usage2/including-in-project.md#from-this-repository) of this repo. ## Contribute 1. Match existing Kotlin style. 2. Keep the change scoped to the issue. 3. Open PRs against `master`. ## Maintainers Started at [Raizlabs](https://www.raizlabs.com) / [Rightpoint](https://www.rightpoint.com). Maintained by [agrosner](https://github.com/agrosner).