Кое-что добавил

This commit is contained in:
maxnes3 2023-11-15 22:21:16 +04:00
parent 1cfd40ae3e
commit b45183ebcc
5 changed files with 110 additions and 0 deletions

View File

@ -1,11 +1,53 @@
package com.example.mobileapp.database
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import androidx.sqlite.db.SupportSQLiteDatabase
import com.example.mobileapp.database.dao.MailDao
import com.example.mobileapp.database.dao.StoryDao
import com.example.mobileapp.database.dao.UserDao
import com.example.mobileapp.database.entities.Converters
import com.example.mobileapp.database.entities.Mail
import com.example.mobileapp.database.entities.Story
import com.example.mobileapp.database.entities.User
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@Database(entities = [User::class, Story::class, Mail::class], version = 1, exportSchema = false)
@TypeConverters(Converters::class)
abstract class MobileAppDataBase : RoomDatabase() {
abstract fun userDao(): UserDao
abstract fun storyDao(): StoryDao
abstract fun mailDao(): MailDao
companion object{
private const val DB_NAME: String = "mobileApp.db"
@Volatile
private var INSTANCE: MobileAppDataBase? = null
fun getInstance(appContext: Context): MobileAppDataBase {
return INSTANCE ?: synchronized(this) {
Room.databaseBuilder(
appContext,
MobileAppDataBase::class.java,
DB_NAME
)
.addCallback(object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
CoroutineScope(Dispatchers.IO).launch {
//populateDatabase()
}
}
})
.build()
.also { INSTANCE = it }
}
}
}
}

View File

@ -1,7 +1,11 @@
package com.example.mobileapp.database.dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.example.mobileapp.database.entities.Mail
import kotlinx.coroutines.flow.Flow
@ -9,4 +13,16 @@ import kotlinx.coroutines.flow.Flow
interface MailDao {
@Query("select * from mails")
fun getAll(): Flow<List<Mail>>
@Query("select * from mails where mails.id = :id")
fun getById(id: Int): Mail?
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(mail: Mail)
@Update
suspend fun update(mail: Mail)
@Delete
suspend fun delete(mail: Mail)
}

View File

@ -1,7 +1,11 @@
package com.example.mobileapp.database.dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.example.mobileapp.database.entities.Story
import kotlinx.coroutines.flow.Flow
@ -9,4 +13,16 @@ import kotlinx.coroutines.flow.Flow
interface StoryDao {
@Query("select * from stories")
fun getAll(): Flow<List<Story>>
@Query("select * from stories where stories.id = :id")
fun getById(id: Int): Story?
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(story: Story)
@Update
suspend fun update(story: Story)
@Delete
suspend fun delete(story: Story)
}

View File

@ -1,7 +1,11 @@
package com.example.mobileapp.database.dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.example.mobileapp.database.entities.User
import kotlinx.coroutines.flow.Flow
@ -9,4 +13,16 @@ import kotlinx.coroutines.flow.Flow
interface UserDao {
@Query("select * from users")
fun getAll():Flow<List<User>>
@Query("select * from users where users.id = :id")
fun getById(id: Int): User?
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(user: User)
@Update
suspend fun update(user: User)
@Delete
suspend fun delete(user: User)
}

View File

@ -0,0 +1,20 @@
package com.example.mobileapp.database.entities
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import androidx.room.TypeConverter
import java.io.ByteArrayOutputStream
class Converters {
@TypeConverter
fun fromBitmap(bitmap: Bitmap) : ByteArray {
val outputStream = ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
return outputStream.toByteArray()
}
@TypeConverter
fun toBitmap(byteArray: ByteArray): Bitmap {
return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
}
}