Ver código fonte

Added key with server entity (refactoring)

Vadik Sirekanyan 2 anos atrás
pai
commit
58aae97a81

+ 1 - 1
app/src/main/java/org/sirekanyan/outline/MainTopAppBar.kt

@@ -32,7 +32,7 @@ fun MainTopAppBar(
 ) {
     TopAppBar(
         title = { Text(title) },
-        navigationIcon = { IconButton({ onMenuClick() }) { Icon(Icons.Default.Menu, null) } },
+        navigationIcon = { IconButton(onMenuClick) { Icon(Icons.Default.Menu, null) } },
         actions = { MainMenu(items) },
         colors = TopAppBarDefaults.topAppBarColors(
             MaterialTheme.colorScheme.surfaceColorAtElevation(3.dp).copy(alpha = 0.98f),

+ 2 - 2
app/src/main/java/org/sirekanyan/outline/api/model/Key.kt

@@ -1,7 +1,7 @@
 package org.sirekanyan.outline.api.model
 
 import org.sirekanyan.outline.db.model.KeyEntity
-import org.sirekanyan.outline.db.model.SelectAllKeys
+import org.sirekanyan.outline.db.model.KeyWithServerEntity
 import org.sirekanyan.outline.db.model.ServerEntity
 
 fun List<Key>.toEntities(): List<KeyEntity> =
@@ -15,7 +15,7 @@ fun List<KeyEntity>.fromEntities(server: ServerEntity): List<Key> =
         Key(server, AccessKey(entity.id, entity.url, entity.name), entity.traffic)
     }
 
-fun List<SelectAllKeys>.fromEntities(): List<Key> =
+fun List<KeyWithServerEntity>.fromEntities(): List<Key> =
     map { entity ->
         Key(
             ServerEntity(entity.serverId, entity.insecure, entity.serverName, entity.serverTraffic),

+ 2 - 2
app/src/main/java/org/sirekanyan/outline/db/KeyDao.kt

@@ -8,7 +8,7 @@ import app.cash.sqldelight.coroutines.asFlow
 import kotlinx.coroutines.flow.Flow
 import org.sirekanyan.outline.app
 import org.sirekanyan.outline.db.model.KeyEntity
-import org.sirekanyan.outline.db.model.SelectAllKeys
+import org.sirekanyan.outline.db.model.KeyWithServerEntity
 import org.sirekanyan.outline.db.model.ServerEntity
 
 @Composable
@@ -24,7 +24,7 @@ class KeyDao(database: OutlineDatabase) {
     fun observe(server: ServerEntity): Flow<Query<KeyEntity>> =
         queries.selectKeys(server.id).asFlow()
 
-    fun observeAll(): Flow<Query<SelectAllKeys>> =
+    fun observeAll(): Flow<Query<KeyWithServerEntity>> =
         queries.selectAllKeys().asFlow()
 
     fun update(server: ServerEntity, keys: List<KeyEntity>) {

+ 2 - 2
app/src/main/java/org/sirekanyan/outline/repository/KeyRepository.kt

@@ -11,7 +11,7 @@ import org.sirekanyan.outline.api.model.Key
 import org.sirekanyan.outline.api.model.fromEntities
 import org.sirekanyan.outline.api.model.toEntities
 import org.sirekanyan.outline.db.KeyDao
-import org.sirekanyan.outline.db.model.SelectAllKeys
+import org.sirekanyan.outline.db.model.KeyWithServerEntity
 import org.sirekanyan.outline.db.model.ServerEntity
 
 class KeyRepository(private val api: OutlineApi, private val keyDao: KeyDao) {
@@ -20,7 +20,7 @@ class KeyRepository(private val api: OutlineApi, private val keyDao: KeyDao) {
         keyDao.observe(server).mapToList(IO).map { it.fromEntities(server) }
 
     fun observeAllKeys(): Flow<List<Key>> =
-        keyDao.observeAll().mapToList(IO).map(List<SelectAllKeys>::fromEntities)
+        keyDao.observeAll().mapToList(IO).map(List<KeyWithServerEntity>::fromEntities)
 
     suspend fun updateKeys(server: ServerEntity) {
         withContext(IO) {

+ 5 - 0
app/src/main/sqldelight/migrations/2.sqm

@@ -12,3 +12,8 @@ CREATE TABLE IF NOT EXISTS KeyEntity (
   traffic INTEGER,
   PRIMARY KEY (serverId, id)
 );
+
+CREATE VIEW IF NOT EXISTS KeyWithServerEntity AS
+  SELECT k.*, s.insecure, s.name serverName, s.traffic serverTraffic
+    FROM KeyEntity k, ServerEntity s
+    WHERE k.serverId = s.id;

+ 6 - 3
app/src/main/sqldelight/org/sirekanyan/outline/db/model/KeyEntity.sq

@@ -7,13 +7,16 @@ CREATE TABLE IF NOT EXISTS KeyEntity (
   PRIMARY KEY (serverId, id)
 );
 
+CREATE VIEW IF NOT EXISTS KeyWithServerEntity AS
+  SELECT k.*, s.insecure, s.name serverName, s.traffic serverTraffic
+    FROM KeyEntity k, ServerEntity s
+    WHERE k.serverId = s.id;
+
 selectKeys:
 SELECT * FROM KeyEntity WHERE serverId = ?;
 
 selectAllKeys:
-SELECT k.*, s.insecure, s.name serverName, s.traffic serverTraffic
-  FROM KeyEntity k, ServerEntity s
-  WHERE k.serverId = s.id;
+SELECT * FROM KeyWithServerEntity;
 
 insertKey:
 INSERT OR REPLACE INTO KeyEntity VALUES ?;