Skip to content

Commit 7fe645d

Browse files
committed
refactor records getting
1 parent d3411c4 commit 7fe645d

11 files changed

Lines changed: 51 additions & 51 deletions

File tree

core/src/main/java/com/example/util/simpletimetracker/core/interactor/GetCurrentRecordsDurationInteractor.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.util.simpletimetracker.core.interactor
22

33
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
4+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
45
import com.example.util.simpletimetracker.domain.record.mapper.RangeMapper
56
import com.example.util.simpletimetracker.domain.record.model.Range
67
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
@@ -74,7 +75,7 @@ class GetCurrentRecordsDurationInteractor @Inject constructor(
7475
): Map<Long, Result> {
7576
val range = getRange(rangeLength)
7677
// TODO TAG GOAL improve records load for big ranges (month)?
77-
val rangeRecords = recordInteractor.getFromRange(range)
78+
val rangeRecords = recordInteractor.getWithParams(GetParam.FromRange(range))
7879

7980
return tagIds.associateWith { tagId ->
8081
getRangeCurrent(
@@ -157,16 +158,12 @@ class GetCurrentRecordsDurationInteractor @Inject constructor(
157158
typeIds: List<Long>,
158159
): List<Record> {
159160
// Use getFromRange to hit cache.
160-
return if (rangeLength is RangeLength.Day) {
161-
recordInteractor.getFromRange(
162-
range = range,
163-
)
161+
val params = if (rangeLength is RangeLength.Day) {
162+
GetParam.FromRange(range)
164163
} else {
165-
recordInteractor.getFromRangeByType(
166-
typeIds = typeIds,
167-
range = range,
168-
)
164+
GetParam.FromRangeByType(typeIds, range)
169165
}
166+
return recordInteractor.getWithParams(params)
170167
}
171168

172169
data class Result(

core/src/main/java/com/example/util/simpletimetracker/core/interactor/RecordCommentSearchViewDataInteractor.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.example.util.simpletimetracker.domain.base.CommentFilterType
88
import com.example.util.simpletimetracker.domain.favourite.interactor.FavouriteCommentInteractor
99
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
1010
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
11+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
1112
import com.example.util.simpletimetracker.domain.record.interactor.RunningRecordInteractor
1213
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
1314
import com.example.util.simpletimetracker.feature_base_adapter.emptySpace.EmptySpaceViewData
@@ -108,7 +109,7 @@ class RecordCommentSearchViewDataInteractor @Inject constructor(
108109
comment: String,
109110
): List<ViewHolderType> {
110111
return if (comment.isNotEmpty()) {
111-
recordInteractor.searchComment(comment)
112+
recordInteractor.getWithParams(GetParam.Comment(comment))
112113
.sortedByDescending { it.timeStarted }
113114
.distinctBy { it.comment }
114115
.take(SIMILAR_COMMENTS_TO_SHOW)
@@ -131,7 +132,7 @@ class RecordCommentSearchViewDataInteractor @Inject constructor(
131132
): List<ViewHolderType> {
132133
data class Data(val timeStarted: Long, val comment: String)
133134

134-
val records = recordInteractor.getByTypeWithAnyComment(listOf(typeId))
135+
val records = recordInteractor.getWithParams(GetParam.TypeWithAnyComment(listOf(typeId)))
135136
.map { Data(it.timeStarted, it.comment) }
136137
val runningRecords = runningRecordInteractor.getAll()
137138
.filter { it.id == typeId && it.comment.isNotEmpty() }

core/src/main/java/com/example/util/simpletimetracker/core/interactor/RecordFilterInteractor.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import com.example.util.simpletimetracker.domain.record.extension.hasSelectedCat
3737
import com.example.util.simpletimetracker.domain.record.extension.toManuallyFilteredItem
3838
import com.example.util.simpletimetracker.domain.record.interactor.GetDuplicatedRecordsInteractor
3939
import com.example.util.simpletimetracker.domain.record.interactor.GetUntrackedRecordsInteractor
40+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
4041
import com.example.util.simpletimetracker.domain.record.model.MultitaskRecord
4142
import com.example.util.simpletimetracker.domain.record.model.Range
4243
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
@@ -146,35 +147,35 @@ class RecordFilterInteractor @Inject constructor(
146147
typeIds.isNotEmpty() && definedRanges.isNotEmpty() -> {
147148
val result = mutableMapOf<Long, Record>()
148149
definedRanges
149-
.map { interactor.getFromRangeByType(typeIds, it) }
150+
.map { interactor.getWithParams(GetParam.FromRangeByType(typeIds, it)) }
150151
.flatten()
151152
.forEach { result[it.id] = it }
152153
result.values.toList()
153154
}
154155
typeIds.isNotEmpty() && comments.isNotEmpty() -> {
155156
val result = mutableMapOf<Long, Record>()
156157
comments
157-
.map { interactor.searchByTypeWithComment(typeIds, it) }
158+
.map { interactor.getWithParams(GetParam.TypeWithComment(typeIds, it)) }
158159
.flatten()
159160
.forEach { result[it.id] = it }
160161
result.values.toList()
161162
}
162163
typeIds.isNotEmpty() -> {
163-
interactor.getByType(typeIds)
164+
interactor.getWithParams(GetParam.Type(typeIds))
164165
}
165166
definedRanges.isNotEmpty() -> {
166167
val result = mutableMapOf<Long, Record>()
167168
definedRanges
168-
.map { interactor.getFromRange(it) }
169+
.map { interactor.getWithParams(GetParam.FromRange(it)) }
169170
.flatten()
170171
.forEach { result[it.id] = it }
171172
result.values.toList()
172173
}
173174
comments.isNotEmpty() -> {
174-
interactor.searchComment(comments.firstOrNull().orEmpty())
175+
interactor.getWithParams(GetParam.Comment(comments.firstOrNull().orEmpty()))
175176
}
176177
selectedAnyComment -> {
177-
interactor.searchAnyComments()
178+
interactor.getWithParams(GetParam.AnyComment)
178179
}
179180
else -> interactor.getAll()
180181
}.let {
@@ -352,7 +353,7 @@ class RecordFilterInteractor @Inject constructor(
352353
val records = if (range.isUndefined) {
353354
interactor.getAll() + runningRecords
354355
} else {
355-
interactor.getFromRange(range) +
356+
interactor.getWithParams(GetParam.FromRange(range)) +
356357
rangeMapper.getRunningRecordsFromRange(runningRecords, range)
357358
}
358359
return records

domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/RecordInteractor.kt

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,16 @@ class RecordInteractor @Inject constructor(
2121
return recordRepo.getAll()
2222
}
2323

24-
suspend fun getByType(typeIds: List<Long>): List<Record> {
25-
return recordRepo.getByType(typeIds)
26-
}
27-
28-
suspend fun getByTypeWithAnyComment(typeIds: List<Long>): List<Record> {
29-
return recordRepo.getByTypeWithAnyComment(typeIds)
30-
}
31-
32-
suspend fun searchComment(text: String): List<Record> {
33-
return recordRepo.searchComment(text)
34-
}
35-
36-
suspend fun searchByTypeWithComment(typeIds: List<Long>, text: String): List<Record> {
37-
return recordRepo.searchByTypeWithComment(typeIds, text)
38-
}
39-
40-
suspend fun searchAnyComments(): List<Record> {
41-
return recordRepo.searchAnyComments()
24+
suspend fun getWithParams(param: GetParam): List<Record> {
25+
return when (param) {
26+
is GetParam.Type -> recordRepo.getByType(param.ids)
27+
is GetParam.TypeWithAnyComment -> recordRepo.getByTypeWithAnyComment(param.ids)
28+
is GetParam.TypeWithComment -> recordRepo.searchByTypeWithComment(param.ids, param.text)
29+
is GetParam.Comment -> recordRepo.searchComment(param.text)
30+
is GetParam.AnyComment -> recordRepo.searchAnyComments()
31+
is GetParam.FromRange -> recordRepo.getFromRange(param.range)
32+
is GetParam.FromRangeByType -> recordRepo.getFromRangeByType(param.ids, param.range)
33+
}
4234
}
4335

4436
suspend fun get(id: Long): Record? {
@@ -68,14 +60,6 @@ class RecordInteractor @Inject constructor(
6860
return recordRepo.getByTimeStarted(prev.timeStarted)
6961
}
7062

71-
suspend fun getFromRange(range: Range): List<Record> {
72-
return recordRepo.getFromRange(range)
73-
}
74-
75-
suspend fun getFromRangeByType(typeIds: List<Long>, range: Range): List<Record> {
76-
return recordRepo.getFromRangeByType(typeIds, range)
77-
}
78-
7963
suspend fun addFromRunning(
8064
runningRecord: RunningRecord,
8165
timeEnded: Long,
@@ -134,4 +118,14 @@ class RecordInteractor @Inject constructor(
134118
recordToRecordTagRepo.removeAllByRecordId(recordId)
135119
recordToRecordTagRepo.addRecordTags(recordId, tags)
136120
}
121+
122+
sealed interface GetParam {
123+
data class Type(val ids: List<Long>) : GetParam
124+
data class TypeWithAnyComment(val ids: List<Long>) : GetParam
125+
data class TypeWithComment(val ids: List<Long>, val text: String) : GetParam
126+
data class Comment(val text: String) : GetParam
127+
data object AnyComment : GetParam
128+
data class FromRange(val range: Range) : GetParam
129+
data class FromRangeByType(val ids: List<Long>, val range: Range) : GetParam
130+
}
137131
}

domain/src/main/java/com/example/util/simpletimetracker/domain/statistics/interactor/StatisticsInteractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.example.util.simpletimetracker.domain.record.mapper.RangeMapper
77
import com.example.util.simpletimetracker.domain.record.model.Range
88
import com.example.util.simpletimetracker.domain.record.model.RecordBase
99
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
10+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
1011
import com.example.util.simpletimetracker.domain.record.interactor.RunningRecordInteractor
1112
import com.example.util.simpletimetracker.domain.record.model.Record
1213
import com.example.util.simpletimetracker.domain.statistics.model.Statistics
@@ -37,7 +38,7 @@ class StatisticsInteractor @Inject constructor(
3738
return if (rangeIsAllRecords(range)) {
3839
recordInteractor.getAll() + runningRecords
3940
} else {
40-
recordInteractor.getFromRange(range) +
41+
recordInteractor.getWithParams(GetParam.FromRange(range)) +
4142
rangeMapper.getRunningRecordsFromRange(runningRecords, range)
4243
}
4344
}

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordViewModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordType
2020
import com.example.util.simpletimetracker.domain.notifications.interactor.UpdateExternalViewsInteractor
2121
import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType
2222
import com.example.util.simpletimetracker.domain.daysOfWeek.model.DayOfWeek
23+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
2324
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
2425
import com.example.util.simpletimetracker.domain.record.model.Record
2526
import com.example.util.simpletimetracker.domain.record.model.RecordBase
@@ -192,7 +193,7 @@ class ChangeRecordViewModel @Inject constructor(
192193
firstDayOfWeek = DayOfWeek.MONDAY, // Doesn't matter for days.
193194
startOfDayShift = prefsInteractor.getStartOfDayShift(),
194195
)
195-
recordInteractor.getFromRange(range)
196+
recordInteractor.getWithParams(GetParam.FromRange(range))
196197
}
197198

198199
private fun getInitialTimeEnded(daysFromToday: Int): Long {

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/delegates/ChangeRecordActionsAdjustDelegate.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.example.util.simpletimetracker.domain.extension.plusAssign
99
import com.example.util.simpletimetracker.domain.record.interactor.AddRecordMediator
1010
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
1111
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
12+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
1213
import com.example.util.simpletimetracker.domain.record.interactor.RemoveRecordMediator
1314
import com.example.util.simpletimetracker.domain.record.model.Range
1415
import com.example.util.simpletimetracker.domain.record.model.Record
@@ -332,7 +333,7 @@ class ChangeRecordActionsAdjustDelegate @Inject constructor(
332333
}
333334

334335
val recordRange = Range(timeStarted = newTimeStarted, timeEnded = newTimeEnded)
335-
val adjacentRecords = recordInteractor.getFromRange(recordRange)
336+
val adjacentRecords = recordInteractor.getWithParams(GetParam.FromRange(recordRange))
336337
.sortedByDescending { it.timeStarted }
337338

338339
val previousRecords = adjacentRecords

features/feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/archive/interactor/ArchiveDialogViewDataInteractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.example.util.simpletimetracker.core.mapper.RecordTypeViewDataMapper
66
import com.example.util.simpletimetracker.core.repo.ResourceRepo
77
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
88
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
9+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
910
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
1011
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordToRecordTagInteractor
1112
import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
@@ -39,7 +40,7 @@ class ArchiveDialogViewDataInteractor @Inject constructor(
3940
checkState = GoalCheckmarkView.CheckState.HIDDEN,
4041
isComplete = false,
4142
)
42-
val recordsCount = recordInteractor.getByType(listOf(typeId)).size
43+
val recordsCount = recordInteractor.getWithParams(GetParam.Type(listOf(typeId))).size
4344

4445
return mutableListOf<ViewHolderType>().apply {
4546
item.let(::add)

features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/interactor/RecordsViewDataInteractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.example.util.simpletimetracker.domain.recordType.model.RecordType
2929
import com.example.util.simpletimetracker.domain.recordType.model.RecordTypeGoal
3030
import com.example.util.simpletimetracker.domain.record.model.RunningRecord
3131
import com.example.util.simpletimetracker.domain.record.interactor.GetUntrackedRecordsInteractor
32+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
3233
import com.example.util.simpletimetracker.domain.record.interactor.RecordsContainerMultiselectInteractor
3334
import com.example.util.simpletimetracker.domain.record.model.MultiSelectedRecordId
3435
import com.example.util.simpletimetracker.domain.record.model.RecordBase
@@ -113,7 +114,7 @@ class RecordsViewDataInteractor @Inject constructor(
113114
firstDayOfWeek = DayOfWeek.MONDAY, // Doesn't matter for days.
114115
startOfDayShift = startOfDayShift,
115116
)
116-
val records = recordInteractor.getFromRange(range)
117+
val records = recordInteractor.getWithParams(GetParam.FromRange(range))
117118

118119
val data = getRecordsViewData(
119120
records = records,

features/feature_statistics_detail/src/main/java/com/example/util/simpletimetracker/feature_statistics_detail/interactor/StatisticsDetailAdjacentActivitiesInteractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.example.util.simpletimetracker.domain.record.extension.getTypeIds
88
import com.example.util.simpletimetracker.domain.record.interactor.CalculateAdjacentActivitiesInteractor
99
import com.example.util.simpletimetracker.domain.record.interactor.CalculateAdjacentActivitiesInteractor.CalculationResult
1010
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
11+
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor.GetParam
1112
import com.example.util.simpletimetracker.domain.record.model.Record
1213
import com.example.util.simpletimetracker.domain.record.model.RecordsFilter
1314
import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
@@ -116,7 +117,7 @@ class StatisticsDetailAdjacentActivitiesInteractor @Inject constructor(
116117
return if (range.isUndefined) {
117118
recordInteractor.getAll()
118119
} else {
119-
recordInteractor.getFromRange(range)
120+
recordInteractor.getWithParams(GetParam.FromRange(range))
120121
}
121122
}
122123

0 commit comments

Comments
 (0)