#76 added sessionDAO
This commit is contained in:
		
							parent
							
								
									86bc8d9e1a
								
							
						
					
					
						commit
						1e767d22a4
					
				
					 3 changed files with 51 additions and 0 deletions
				
			
		|  | @ -0,0 +1,4 @@ | ||||||
|  | package be.ugent.sel.studeez.data.local.models | ||||||
|  | 
 | ||||||
|  | class SessionReport { | ||||||
|  | } | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | package be.ugent.sel.studeez.domain | ||||||
|  | 
 | ||||||
|  | interface SessionDAO { | ||||||
|  | } | ||||||
|  | @ -0,0 +1,43 @@ | ||||||
|  | package be.ugent.sel.studeez.domain.implementation | ||||||
|  | 
 | ||||||
|  | import be.ugent.sel.studeez.data.local.models.SessionReport | ||||||
|  | import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo | ||||||
|  | import be.ugent.sel.studeez.domain.AccountDAO | ||||||
|  | import be.ugent.sel.studeez.domain.SessionDAO | ||||||
|  | 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 FireBaseSessionDAO @Inject constructor( | ||||||
|  |     private val firestore: FirebaseFirestore, | ||||||
|  |     private val auth: AccountDAO | ||||||
|  | ) : SessionDAO { | ||||||
|  | 
 | ||||||
|  |     override fun getSessions(): Flow<List<SessionReport>> { | ||||||
|  |         return currentUserSessionsCollection() | ||||||
|  |             .snapshots() | ||||||
|  |             .map { it.toObjects(SessionReport::class.java) } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     override fun saveSession(newSessionReport: SessionReport) { | ||||||
|  |         currentUserSessionsCollection().add(newSessionReport) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     override fun deleteSession(newTimer: TimerInfo) { | ||||||
|  |         currentUserSessionsCollection().document(newTimer.id).delete() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private fun currentUserSessionsCollection(): CollectionReference = | ||||||
|  |         firestore.collection(USER_COLLECTION) | ||||||
|  |             .document(auth.currentUserId) | ||||||
|  |             .collection(SESSION_COLLECTION) | ||||||
|  | 
 | ||||||
|  |     companion object { | ||||||
|  |         private const val SESSION_COLLECTION = "sessions" | ||||||
|  |         private const val USER_COLLECTION = "users" | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Reference in a new issue
	
	 Lukas Barragan Torres
						Lukas Barragan Torres