#71 Define Friendship DAO's
This commit is contained in:
		
							parent
							
								
									4419c86b05
								
							
						
					
					
						commit
						75411627ac
					
				
					 3 changed files with 88 additions and 4 deletions
				
			
		|  | @ -0,0 +1,11 @@ | ||||||
|  | package be.ugent.sel.studeez.data.local.models | ||||||
|  | 
 | ||||||
|  | import com.google.firebase.Timestamp | ||||||
|  | import com.google.firebase.firestore.DocumentId | ||||||
|  | 
 | ||||||
|  | data class Friendship( | ||||||
|  |     @DocumentId val id: String = "", | ||||||
|  |     val friendId: String = "", | ||||||
|  |     val friendsSince: Timestamp = Timestamp.now(), | ||||||
|  |     val accepted: Boolean = false | ||||||
|  | ) | ||||||
|  | @ -0,0 +1,48 @@ | ||||||
|  | package be.ugent.sel.studeez.domain | ||||||
|  | 
 | ||||||
|  | import be.ugent.sel.studeez.data.local.models.Friendship | ||||||
|  | import kotlinx.coroutines.flow.Flow | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Should be used for interactions between friends. | ||||||
|  |  */ | ||||||
|  | interface FriendshipDAO { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * @return all friendships of the user that is currently logged in. | ||||||
|  |      */ | ||||||
|  |     fun getAllFriendships(): Flow<List<Friendship>> | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * @return the amount of friends of the currently logged in user. | ||||||
|  |      * This method should be faster than just counting the length of getAllFriends() | ||||||
|  |      */ | ||||||
|  |     fun getFriendshipCount(): Flow<Int> | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * @param id the id of the friendship that you want details of | ||||||
|  |      * @return the details of a Friendship | ||||||
|  |      */ | ||||||
|  |     fun getFriendshipDetails(id: String): Friendship | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Send a friend request to a user. | ||||||
|  |      * @param id of the user that you want to add as a friend | ||||||
|  |      * @return Success/faillure of transaction | ||||||
|  |      */ | ||||||
|  |     fun sendFriendshipRequest(id: String): Boolean | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Accept a friend request that has already been sent. | ||||||
|  |      * @param id of the friendship that you want to update | ||||||
|  |      * @return: Success/faillure of transaction | ||||||
|  |      */ | ||||||
|  |     fun acceptFriendship(id: String): Boolean | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Remove a friend or decline a friendrequest. | ||||||
|  |      * @param id of the friendship that you want to update | ||||||
|  |      * @return: Success/faillure of transaction | ||||||
|  |      */ | ||||||
|  |     fun removeFriendship(id: String): Boolean | ||||||
|  | } | ||||||
|  | @ -1,19 +1,44 @@ | ||||||
| package be.ugent.sel.studeez.domain | package be.ugent.sel.studeez.domain | ||||||
| 
 | 
 | ||||||
| import be.ugent.sel.studeez.data.local.models.User | import be.ugent.sel.studeez.data.local.models.User | ||||||
|  | import kotlinx.coroutines.flow.Flow | ||||||
| 
 | 
 | ||||||
| interface UserDAO { | interface UserDAO { | ||||||
| 
 | 
 | ||||||
|     suspend fun getUser(): User |     /** | ||||||
|  |      * @return all users | ||||||
|  |      */ | ||||||
|  |     fun getAllUsers(): Flow<List<User>> | ||||||
| 
 | 
 | ||||||
|     suspend fun saveUser( |     /** | ||||||
|  |      * @return all users based on a query, a trimmed down version of getAllUsers() | ||||||
|  |      */ | ||||||
|  |     fun getUsersWithQuery(): Flow<List<User>> | ||||||
|  |     // TODO Add query parameter | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Request information about a user | ||||||
|  |      */ | ||||||
|  |     fun getUserDetails( | ||||||
|  |         userId: String | ||||||
|  |     ): Flow<User> | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * @return information on the currently logged in user. | ||||||
|  |      */ | ||||||
|  |     suspend fun getLoggedInUser(): User | ||||||
|  |     // TODO Should be refactored to fun getLoggedInUser(): Flow<User>, without suspend. | ||||||
|  | 
 | ||||||
|  |     suspend fun saveLoggedInUser( | ||||||
|         newUsername: String, |         newUsername: String, | ||||||
|         newBiography: String = "" |         newBiography: String = "" | ||||||
|     ) |     ) | ||||||
|  |     // TODO Should be refactored to fun saveLoggedInUser(...): Boolean, without suspend. | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * Delete all references to this user in the database. Similar to the deleteCascade in |      * Delete all references to the logged in user in the database. Similar to the deleteCascade in | ||||||
|      * relational databases. |      * relational databases. | ||||||
|      */ |      */ | ||||||
|     suspend fun deleteUserReferences() |     suspend fun deleteLoggedInUserReferences() | ||||||
|  |     // TODO Should be refactored to fun deleteLoggedInUserReferences(): Boolean, without suspend. | ||||||
| } | } | ||||||
		Reference in a new issue