Session database: add count query.

This commit is contained in:
Benoit Marty 2025-11-04 15:25:13 +01:00
parent 8a4d0c7bee
commit 85c9fd916b
5 changed files with 27 additions and 0 deletions

View file

@ -161,6 +161,15 @@ class DatabaseSessionStore(
}
}
override suspend fun numberOfSessions(): Int {
return sessionDataMutex.withLock {
database.sessionDataQueries.count()
.executeAsOneOrNull()
?.toInt()
?: 0
}
}
override fun sessionsFlow(): Flow<List<SessionData>> {
return database.sessionDataQueries.selectAll()
.asFlow()

View file

@ -47,6 +47,9 @@ SELECT * FROM SessionData ORDER BY lastUsageIndex DESC LIMIT 1;
selectAll:
SELECT * FROM SessionData ORDER BY lastUsageIndex DESC;
count:
SELECT count(*) FROM SessionData;
selectByUserId:
SELECT * FROM SessionData WHERE userId = ?;

View file

@ -52,6 +52,7 @@ class DatabaseSessionStoreTest {
assertThat(database.sessionDataQueries.selectLatest().executeAsOneOrNull()).isEqualTo(aSessionData)
assertThat(database.sessionDataQueries.selectAll().executeAsList().size).isEqualTo(1)
assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(1)
}
@Test
@ -109,6 +110,7 @@ class DatabaseSessionStoreTest {
assertThat(foundSession).isEqualTo(aSessionData)
assertThat(database.sessionDataQueries.selectAll().executeAsList().size).isEqualTo(2)
assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(2)
}
@Test
@ -196,12 +198,16 @@ class DatabaseSessionStoreTest {
position = 1,
lastUsageIndex = 1,
)
assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(1)
databaseSessionStore.addSession(secondSessionData.toApiModel())
assertThat(awaitItem().size).isEqualTo(2)
assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(2)
databaseSessionStore.removeSession(aSessionData.userId)
assertThat(awaitItem().size).isEqualTo(1)
assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(1)
databaseSessionStore.removeSession(secondSessionData.userId)
assertThat(awaitItem()).isEmpty()
assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(0)
}
}