Skip to content

Commit f91b229

Browse files
committed
Extract mapping of SortDirection to Firestore direction to extension function
1 parent e12f313 commit f91b229

File tree

2 files changed

+10
-7
lines changed
  • data/common/src/main/kotlin/com/edricchan/studybuddy/domain/common/sorting
  • features/tasks/data/src/main/kotlin/com/edricchan/studybuddy/features/tasks/data/repo

2 files changed

+10
-7
lines changed

data/common/src/main/kotlin/com/edricchan/studybuddy/domain/common/sorting/OrderSpec.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.edricchan.studybuddy.domain.common.sorting
22

3+
import com.google.firebase.firestore.Query
4+
35
/**
46
* Specification for a specific field to order a list of data by.
57
* @property field Desired field to order the data by.
@@ -18,3 +20,9 @@ enum class SortDirection {
1820
/** Sort the resulting data in ascending order, i.e. smallest to largest. */
1921
Ascending
2022
}
23+
24+
/** Converts the receiver [SortDirection] to its Firebase [Query.Direction] equivalent. */
25+
fun SortDirection.toFirestoreDirection(): Query.Direction = when (this) {
26+
SortDirection.Descending -> Query.Direction.DESCENDING
27+
SortDirection.Ascending -> Query.Direction.ASCENDING
28+
}

features/tasks/data/src/main/kotlin/com/edricchan/studybuddy/features/tasks/data/repo/TaskRepository.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import androidx.paging.map
99
import com.edricchan.studybuddy.data.common.QueryMapper
1010
import com.edricchan.studybuddy.data.paging.firestore.firestorePagingSource
1111
import com.edricchan.studybuddy.data.source.firestore.IDefaultFirestoreDataSource
12-
import com.edricchan.studybuddy.domain.common.sorting.SortDirection
12+
import com.edricchan.studybuddy.domain.common.sorting.toFirestoreDirection
1313
import com.edricchan.studybuddy.features.tasks.data.mapper.toDomain
1414
import com.edricchan.studybuddy.features.tasks.data.mapper.toDto
1515
import com.edricchan.studybuddy.features.tasks.data.model.TodoItem
@@ -18,7 +18,6 @@ import com.edricchan.studybuddy.features.tasks.domain.model.TaskItem
1818
import com.edricchan.studybuddy.features.tasks.domain.repo.ITaskRepository
1919
import com.edricchan.studybuddy.features.tasks.domain.repo.TasksPaginationConfig
2020
import com.google.firebase.firestore.DocumentReference
21-
import com.google.firebase.firestore.Query
2221
import kotlinx.coroutines.ExperimentalCoroutinesApi
2322
import kotlinx.coroutines.flow.Flow
2423
import kotlinx.coroutines.flow.combine
@@ -120,11 +119,7 @@ class TaskRepository @Inject constructor(
120119
) else it
121120
}.let {
122121
config.orderByFields.fold(it) { query, spec ->
123-
val direction = when (spec.direction) {
124-
SortDirection.Descending -> Query.Direction.DESCENDING
125-
SortDirection.Ascending -> Query.Direction.ASCENDING
126-
}
127-
query.orderBy(spec.field.toDto().fieldName, direction)
122+
query.orderBy(spec.field.toDto().fieldName, spec.direction.toFirestoreDirection())
128123
}
129124
}
130125

0 commit comments

Comments
 (0)