-
Notifications
You must be signed in to change notification settings - Fork 1
/
TopicDao.kt
31 lines (25 loc) · 979 Bytes
/
TopicDao.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.dluvian.voyage.data.room.dao
import androidx.room.Dao
import androidx.room.Query
import com.dluvian.voyage.core.Topic
import kotlinx.coroutines.flow.Flow
@Dao
interface TopicDao {
@Query("SELECT EXISTS (SELECT topic FROM topic WHERE topic = :topic)")
fun getIsFollowedFlow(topic: Topic): Flow<Boolean>
@Query("SELECT DISTINCT topic FROM topic")
suspend fun getMyTopics(): List<Topic>
@Query("SELECT DISTINCT topic FROM topic UNION SELECT DISTINCT hashtag from hashtag")
suspend fun getAllTopics(): List<Topic>
@Query(
"SELECT DISTINCT hashtag " +
"FROM hashtag " +
"WHERE hashtag NOT IN (SELECT topic FROM topic) " +
"GROUP BY hashtag " +
"ORDER BY COUNT(hashtag) DESC " +
"LIMIT :limit"
)
suspend fun getUnfollowedTopics(limit: Int): List<Topic>
@Query("SELECT MAX(createdAt) FROM topic")
suspend fun getMaxCreatedAt(): Long?
}