Конфигурация базы данных< /p>
Код: Выделить всё
package com.example.expensesrecorder.database
import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import com.example.expensesrecorder.database.databaseaccessobjects.CategoryDao
import com.example.expensesrecorder.database.databaseaccessobjects.ExpenseDao
import com.example.expensesrecorder.database.entities.Category
import com.example.expensesrecorder.database.entities.Expense
import com.example.expensesrecorder.database.typeconvertors.ZonedDateTimeConverter
@Database(entities = [Expense::class, Category::class], version = 1)
@TypeConverters(
value = [ZonedDateTimeConverter::class]
)
abstract class ExpenseDatabase : RoomDatabase() {
abstract fun expenseDao(): ExpenseDao
abstract fun categoryDao(): CategoryDao
}
Код: Выделить всё
import android.app.Application
import androidx.room.Room
import androidx.room.RoomDatabase
import com.example.expensesrecorder.database.ExpenseDatabase
class AndroidApp : Application() {
lateinit var myRoomDatabase: RoomDatabase
override fun onCreate() {
super.onCreate()
myRoomDatabase = Room
.databaseBuilder(applicationContext, ExpenseDatabase::class.java, "expense_database")
.build()
}
}
Код: Выделить всё
package com.example.expensesrecorder.database.databaseaccessobjects
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import com.example.expensesrecorder.database.entities.Category
import com.example.expensesrecorder.database.entities.Expense
@Dao
interface CategoryDao {
@Query("SELECT * FROM Category")
fun getAll(): List
@Insert
fun insertAll(vararg users: Category)
@Delete
fun delete(user: Category)
}
Код: Выделить всё
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import com.example.expensesrecorder.database.entities.Expense
@Dao
interface ExpenseDao {
@Query("SELECT * FROM expense")
fun getAll(): List
@Query("SELECT * FROM expense WHERE uid IN (:userIds)")
fun loadAllByIds(userIds: IntArray): List
@Query("SELECT * FROM expense WHERE expense_title LIKE :first AND " +
"expense_title LIKE :last LIMIT 1")
fun findByName(first: String, last: String): Expense
@Insert
fun insertAll(vararg users: Expense)
@Delete
fun delete(user: Expense)
}
Код: Выделить всё
package com.example.expensesrecorder.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import java.time.ZonedDateTime
@Entity(tableName="category")
data class Category(
@PrimaryKey val uid: Int,
@ColumnInfo(name = "category_title") val categoryTitle: String,
@ColumnInfo(name = "category_description") val categoryDescription: String?,
@ColumnInfo(name = "category_status") val categoryStatus: Boolean?
)
Код: Выделить всё
package com.example.expensesrecorder.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import java.text.DecimalFormat
import java.time.LocalDateTime
import java.time.ZonedDateTime
import java.util.Date
@Entity(tableName="expense")
data class Expense(
@PrimaryKey val uid: Int,
@ColumnInfo(name = "expense_title") val expenseTitle: String,
@ColumnInfo(name = "expense_description") val expenseDescription: String?,
@ColumnInfo(name = "expense_category_id") val expenseCategoryId: String?,
@ColumnInfo(name = "expense_amount") val expenseAmount: Double,
@ColumnInfo(name = "expense_date") val expenseDate: ZonedDateTime
)
Код: Выделить всё
val mApplication: AndroidApp = applicationContext as AndroidApp
val expenseDao= mApplication.myRoomDatabase.expenseDao()
Последние пару дней я искал решение в Google.
Заранее благодарим за любые советы
с уважением
Мэтью
Подробнее здесь: https://stackoverflow.com/questions/782 ... ase-object
Мобильная версия