Add a db query to get all the Sessions.
This commit is contained in:
committed by
Benoit Marty
parent
80fdd5f127
commit
b2ce80da69
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -10,6 +10,9 @@ CREATE TABLE SessionData (
|
||||
selectFirst:
|
||||
SELECT * FROM SessionData LIMIT 1;
|
||||
|
||||
selectAll:
|
||||
SELECT * FROM SessionData;
|
||||
|
||||
selectByUserId:
|
||||
SELECT * FROM SessionData WHERE userId = ?;
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user