Add a db query to get all the Sessions.

This commit is contained in:
Benoit Marty
2023-03-29 15:40:34 +02:00
committed by Benoit Marty
parent 80fdd5f127
commit b2ce80da69
5 changed files with 16 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ interface SessionStore {
fun isLoggedIn(): Flow<Boolean>
suspend fun storeData(sessionData: SessionData)
suspend fun getSession(sessionId: String): SessionData?
suspend fun getAllSessions(): List<SessionData>
suspend fun getLatestSession(): SessionData?
suspend fun removeSession(sessionId: String)
}

View File

@@ -38,6 +38,10 @@ class InMemorySessionStore : SessionStore {
return sessionDataFlow.value.takeIf { it?.userId == sessionId }
}
override suspend fun getAllSessions(): List<SessionData> {
return listOfNotNull(sessionDataFlow.value)
}
override suspend fun getLatestSession(): SessionData? {
return sessionDataFlow.value
}

View File

@@ -53,6 +53,12 @@ class DatabaseSessionStore @Inject constructor(
?.toApiModel()
}
override suspend fun getAllSessions(): List<SessionData> {
return database.sessionDataQueries.selectAll()
.executeAsList()
.map { it.toApiModel() }
}
override suspend fun removeSession(sessionId: String) {
database.sessionDataQueries.removeSession(sessionId)
}

View File

@@ -10,6 +10,9 @@ CREATE TABLE SessionData (
selectFirst:
SELECT * FROM SessionData LIMIT 1;
selectAll:
SELECT * FROM SessionData;
selectByUserId:
SELECT * FROM SessionData WHERE userId = ?;

View File

@@ -57,6 +57,7 @@ class DatabaseSessionStoreTests {
databaseSessionStore.storeData(aSessionData.toApiModel())
assertThat(database.sessionDataQueries.selectFirst().executeAsOneOrNull()).isEqualTo(aSessionData)
assertThat(database.sessionDataQueries.selectAll().executeAsList().size).isEqualTo(1)
}
@Test
@@ -88,6 +89,7 @@ class DatabaseSessionStoreTests {
val foundSession = databaseSessionStore.getSession(aSessionData.userId)?.toDbModel()
assertThat(foundSession).isEqualTo(aSessionData)
assertThat(database.sessionDataQueries.selectAll().executeAsList().size).isEqualTo(2)
}
@Test
@@ -107,5 +109,4 @@ class DatabaseSessionStoreTests {
assertThat(database.sessionDataQueries.selectByUserId(aSessionData.userId).executeAsOneOrNull()).isNull()
}
}