Room @Entity(tableName = "ballots") data class BallotRoomEntity( @PrimaryKey val id: Long, @ColumnInfo(name = "name") val image: String, @ColumnInfo(name = "is_valid") val isValid: Boolean ) @Dao interface BallotDao { @Query("SELECT * FROM ballots WHERE is_valid = :isValid") fun getValidBallots(isValid: Boolean): List }
//Create a driver val driver = AndroidSqliteDriver(ExampleDb.Schema, context, "example.db") //Create Database val exampleDb = ExampleDb(driver) //Get Queries from Database val ballotQueries = exampleDb.ballotQueries Query
//Create a driver val driver = AndroidSqliteDriver(ExampleDb.Schema, context, "example.db") //Create Database val exampleDb = ExampleDb(driver) //Get Queries from Database val ballotQueries = exampleDb.ballotQueries Query
//Create a driver val driver = AndroidSqliteDriver(ExampleDb.Schema, context, "example.db") //Create Database val exampleDb = ExampleDb(driver) //Get Queries from Database val ballotQueries = exampleDb.ballotQueries Query
Custom Type import org.threeten.bp.Instant; CREATE TABLE Ballot( id INTEGER PRIMARY KEY NOT NULL, image TEXT NOT NULL, added_date INTEGER AS Instant NOT NULL, is_valid INTEGER AS Boolean NOT NULL DEFAULT 0 );
Custom Type import org.threeten.bp.Instant; CREATE TABLE Ballot( id INTEGER PRIMARY KEY NOT NULL, image TEXT NOT NULL, added_date INTEGER AS Instant NOT NULL, is_valid INTEGER AS Boolean NOT NULL DEFAULT 0 );
Custom Type interface Ballot { val id: Long val image: String val added_date: Instant val is_valid: Boolean data class Impl( override val id: Long, override val image: String, override val added_date: Instant, override val is_valid: Boolean ) : Ballot { override fun toString(): String = """ |Ballot.Impl [ | id: $id | image: $image | added_date: $added_date | is_valid: $is_valid |] """.trimMargin() } }
Custom Type https://jakewharton.com/inline-classes-make-great-database-ids/ inline class BallotId(val value: Long) CREATE TABLE Ballot( ballot_id INTEGER as BallotId PRIMARY KEY NOT NULL, image TEXT NOT NULL, added_date INTEGER AS Instant NOT NULL, is_valid INTEGER AS Boolean NOT NULL DEFAULT 0 );
Migration by script - Put into src/main/sqldelight - File naming: .sqm - 1 to 2 => 1.sqm - 2 to 3 => 2.sqm - 7 to 8 => 7.sqm - .sq file will have to always contain latest structure