#21 basic subject list

This commit is contained in:
brreynie 2023-04-29 12:28:30 +02:00
parent 76e69dd03c
commit d03775000a
16 changed files with 228 additions and 22 deletions

View 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)
}

View file

@ -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"
}

View file

@ -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)
}

View file

@ -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)
}

View file

@ -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)
}