diff options
author | Allan Wang <me@allanwang.ca> | 2019-03-05 18:31:47 -0500 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-03-05 18:31:47 -0500 |
commit | c917dc13dabe7781a097383ae89f2d00f32fffcb (patch) | |
tree | a5a4edb12b6fc002ee76ef175533feb6cd7b7b75 /app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt | |
parent | 566fcce5b79cfa22b0828d92e33ac4f109564927 (diff) | |
download | frost-c917dc13dabe7781a097383ae89f2d00f32fffcb.tar.gz frost-c917dc13dabe7781a097383ae89f2d00f32fffcb.tar.bz2 frost-c917dc13dabe7781a097383ae89f2d00f32fffcb.zip |
Create initial room models
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt b/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt new file mode 100644 index 00000000..34de5e07 --- /dev/null +++ b/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt @@ -0,0 +1,62 @@ +package com.pitchedapps.frost.db + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import androidx.room.TypeConverters + +interface FrostPrivateDao { + fun cookieDao(): CookieDao +} + +@Database(entities = [CookieEntity::class], version = 1, exportSchema = true) +abstract class FrostPrivateDatabase : RoomDatabase(), FrostPrivateDao { + companion object { + const val DATABASE_NAME = "frost-priv-db" + } +} + +interface FrostPublicDao { + fun tabDao(): FbTabDao +} + +@Database(entities = [FbTabEntity::class], version = 1, exportSchema = true) +@TypeConverters(FbItemConverter::class) +abstract class FrostPublicDatabase : RoomDatabase(), FrostPublicDao { + companion object { + const val DATABASE_NAME = "frost-db" + } +} + +interface FrostDao : FrostPrivateDao, FrostPublicDao { + fun close() +} + +/** + * Composition of all database interfaces + */ +class FrostDatabase(private val privateDb: FrostPrivateDatabase, private val publicDb: FrostPublicDatabase) : + FrostDao, + FrostPrivateDao by privateDb, + FrostPublicDao by publicDb { + + override fun close() { + privateDb.close() + publicDb.close() + } + + companion object { + fun create(context: Context): FrostDatabase { + val privateDb = Room.databaseBuilder( + context, FrostPrivateDatabase::class.java, + FrostPrivateDatabase.DATABASE_NAME + ).build() + val publicDb = Room.databaseBuilder( + context, FrostPublicDatabase::class.java, + FrostPublicDatabase.DATABASE_NAME + ).build() + return FrostDatabase(privateDb, publicDb) + } + } +} |