aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2019-03-05 18:31:47 -0500
committerAllan Wang <me@allanwang.ca>2019-03-05 18:31:47 -0500
commitc917dc13dabe7781a097383ae89f2d00f32fffcb (patch)
treea5a4edb12b6fc002ee76ef175533feb6cd7b7b75 /app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt
parent566fcce5b79cfa22b0828d92e33ac4f109564927 (diff)
downloadfrost-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.kt62
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)
+ }
+ }
+}