#21 basic subject list
This commit is contained in:
parent
76e69dd03c
commit
d03775000a
16 changed files with 228 additions and 22 deletions
13
app/src/main/java/be/ugent/sel/studeez/domain/SubjectDAO.kt
Normal file
13
app/src/main/java/be/ugent/sel/studeez/domain/SubjectDAO.kt
Normal file
|
@ -0,0 +1,13 @@
|
|||
package be.ugent.sel.studeez.domain
|
||||
|
||||
import be.ugent.sel.studeez.data.local.models.task.Subject
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface SubjectDAO {
|
||||
|
||||
fun getSubjects(): Flow<List<Subject>>
|
||||
|
||||
fun saveSubject(newSubject: Subject)
|
||||
|
||||
fun deleteSubject(oldSubject: Subject)
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
package be.ugent.sel.studeez.domain.implementation
|
||||
|
||||
object FirebaseCollectionRoutes {
|
||||
object FireBaseCollections {
|
||||
const val SESSION_COLLECTION = "sessions"
|
||||
const val USER_COLLECTION = "users"
|
||||
const val TIMER_COLLECTION = "timers"
|
||||
|
||||
const val SUBJECT_COLLECTION = "subjects"
|
||||
}
|
|
@ -31,8 +31,7 @@ class FireBaseSessionDAO @Inject constructor(
|
|||
}
|
||||
|
||||
private fun currentUserSessionsCollection(): CollectionReference =
|
||||
firestore.collection(FirebaseCollectionRoutes.USER_COLLECTION)
|
||||
firestore.collection(FireBaseCollections.USER_COLLECTION)
|
||||
.document(auth.currentUserId)
|
||||
.collection(FirebaseCollectionRoutes.SESSION_COLLECTION)
|
||||
|
||||
.collection(FireBaseCollections.SESSION_COLLECTION)
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package be.ugent.sel.studeez.domain.implementation
|
||||
|
||||
import be.ugent.sel.studeez.data.local.models.task.Subject
|
||||
import be.ugent.sel.studeez.domain.AccountDAO
|
||||
import be.ugent.sel.studeez.domain.SubjectDAO
|
||||
import com.google.firebase.firestore.CollectionReference
|
||||
import com.google.firebase.firestore.FirebaseFirestore
|
||||
import com.google.firebase.firestore.ktx.snapshots
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import javax.inject.Inject
|
||||
|
||||
class FireBaseSubjectDAO @Inject constructor(
|
||||
private val firestore: FirebaseFirestore,
|
||||
private val auth: AccountDAO,
|
||||
) : SubjectDAO {
|
||||
override fun getSubjects(): Flow<List<Subject>> {
|
||||
return currentUserSubjectsCollection()
|
||||
.snapshots()
|
||||
.map { it.toObjects(Subject::class.java) }
|
||||
}
|
||||
|
||||
override fun saveSubject(newSubject: Subject) {
|
||||
currentUserSubjectsCollection().add(newSubject)
|
||||
}
|
||||
|
||||
override fun deleteSubject(oldSubject: Subject) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
private fun currentUserSubjectsCollection(): CollectionReference =
|
||||
firestore.collection(FireBaseCollections.USER_COLLECTION)
|
||||
.document(auth.currentUserId)
|
||||
.collection(FireBaseCollections.SUBJECT_COLLECTION)
|
||||
}
|
|
@ -1,11 +1,9 @@
|
|||
package be.ugent.sel.studeez.domain.implementation
|
||||
|
||||
import be.ugent.sel.studeez.data.local.models.timer_info.*
|
||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerType.*
|
||||
import be.ugent.sel.studeez.domain.AccountDAO
|
||||
import be.ugent.sel.studeez.domain.TimerDAO
|
||||
import com.google.firebase.firestore.CollectionReference
|
||||
import com.google.firebase.firestore.DocumentSnapshot
|
||||
import com.google.firebase.firestore.FirebaseFirestore
|
||||
import com.google.firebase.firestore.ktx.snapshots
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
@ -50,8 +48,8 @@ class FirebaseTimerDAO @Inject constructor(
|
|||
}
|
||||
|
||||
private fun currentUserTimersCollection(): CollectionReference =
|
||||
firestore.collection(FirebaseCollectionRoutes.USER_COLLECTION)
|
||||
firestore.collection(FireBaseCollections.USER_COLLECTION)
|
||||
.document(auth.currentUserId)
|
||||
.collection(FirebaseCollectionRoutes.TIMER_COLLECTION)
|
||||
.collection(FireBaseCollections.TIMER_COLLECTION)
|
||||
|
||||
}
|
Reference in a new issue