Skip to content

Commit 38c0516

Browse files
committed
add favourite record filters
1 parent ef0c07a commit 38c0516

66 files changed

Lines changed: 1445 additions & 83 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

core/src/main/java/com/example/util/simpletimetracker/core/extension/ViewDataExensions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ fun RecordsFilterParam.ManuallyFilteredItem.toModel(): RecordsFilter.ManuallyFil
214214
is RecordsFilterParam.ManuallyFilteredItem.Running ->
215215
RecordsFilter.ManuallyFilteredItem.Running(id)
216216
is RecordsFilterParam.ManuallyFilteredItem.Untracked ->
217-
RecordsFilter.ManuallyFilteredItem.Untracked(timeStartedTimestamp, timeEndedTimestamp)
217+
RecordsFilter.ManuallyFilteredItem.Untracked(range.toModel())
218218
is RecordsFilterParam.ManuallyFilteredItem.Multitask ->
219219
RecordsFilter.ManuallyFilteredItem.Multitask(ids)
220220
}
@@ -227,7 +227,7 @@ fun RecordsFilter.ManuallyFilteredItem.toParams(): RecordsFilterParam.ManuallyFi
227227
is RecordsFilter.ManuallyFilteredItem.Running ->
228228
RecordsFilterParam.ManuallyFilteredItem.Running(id)
229229
is RecordsFilter.ManuallyFilteredItem.Untracked ->
230-
RecordsFilterParam.ManuallyFilteredItem.Untracked(timeStartedTimestamp, timeEndedTimestamp)
230+
RecordsFilterParam.ManuallyFilteredItem.Untracked(range.toParams())
231231
is RecordsFilter.ManuallyFilteredItem.Multitask ->
232232
RecordsFilterParam.ManuallyFilteredItem.Multitask(ids)
233233
}

data_local/src/main/java/com/example/util/simpletimetracker/data_local/complexRule/ComplexRuleDBO.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.data_local.complexRule
33
import androidx.room.ColumnInfo
44
import androidx.room.Entity
55
import androidx.room.PrimaryKey
6+
import com.example.util.simpletimetracker.data_local.recordType.RecordTypeDBO
67

78
@Entity(tableName = "complexRules")
89
data class ComplexRuleDBO(
@@ -28,10 +29,9 @@ data class ComplexRuleDBO(
2829
@ColumnInfo(name = "conditionCurrentTypeIds")
2930
val conditionCurrentTypeIds: String,
3031

31-
// Stored as "0000000" string, where each number is a day,
32-
// 0 - not selected, 1 - selected,
33-
// starting from sunday.
34-
// For example, "0111110" - only work days selected.
32+
/**
33+
* How data is stored - see [RecordTypeDBO].
34+
*/
3535
@ColumnInfo(name = "conditionDaysOfWeek")
3636
val conditionDaysOfWeek: String,
3737
)

data_local/src/main/java/com/example/util/simpletimetracker/data_local/database/AppDatabase.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ import com.example.util.simpletimetracker.data_local.recordType.RecordTypeDBO
4242
import com.example.util.simpletimetracker.data_local.recordType.RecordTypeDao
4343
import com.example.util.simpletimetracker.data_local.recordType.RecordTypeGoalDBO
4444
import com.example.util.simpletimetracker.data_local.recordType.RecordTypeGoalDao
45+
import com.example.util.simpletimetracker.data_local.recordsFilter.FavouriteRecordsFilterDBO
46+
import com.example.util.simpletimetracker.data_local.recordsFilter.FavouriteRecordsFilterDao
4547

4648
@Database(
4749
entities = [
@@ -65,8 +67,14 @@ import com.example.util.simpletimetracker.data_local.recordType.RecordTypeGoalDa
6567
ActivitySuggestionDBO::class,
6668
DurationSuggestionDBO::class,
6769
RecordShortcutDBO::class,
70+
FavouriteRecordsFilterDBO.MainDBO::class,
71+
FavouriteRecordsFilterDBO.FilterDBO::class,
72+
FavouriteRecordsFilterDBO.CommonItemDBO::class,
73+
FavouriteRecordsFilterDBO.CommentItemDBO::class,
74+
FavouriteRecordsFilterDBO.DuplicationItemDBO::class,
75+
FavouriteRecordsFilterDBO.ManuallyFilteredItemDBO::class,
6876
],
69-
version = 28,
77+
version = 29,
7078
exportSchema = true,
7179
)
7280
abstract class AppDatabase : RoomDatabase() {
@@ -111,6 +119,8 @@ abstract class AppDatabase : RoomDatabase() {
111119

112120
abstract fun recordShortcutDao(): RecordShortcutDao
113121

122+
abstract fun favouriteRecordsFilterDao(): FavouriteRecordsFilterDao
123+
114124
companion object {
115125
const val DATABASE_NAME = "simpleTimeTrackerDB"
116126
}

data_local/src/main/java/com/example/util/simpletimetracker/data_local/database/AppDatabaseMigrations.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class AppDatabaseMigrations {
3636
migration_25_26,
3737
migration_26_27,
3838
migration_27_28,
39+
migration_28_29,
3940
)
4041

4142
private val migration_1_2 = object : Migration(1, 2) {
@@ -355,5 +356,28 @@ class AppDatabaseMigrations {
355356
)
356357
}
357358
}
359+
360+
private val migration_28_29 = object : Migration(28, 29) {
361+
override fun migrate(database: SupportSQLiteDatabase) {
362+
database.execSQL(
363+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFilters` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
364+
)
365+
database.execSQL(
366+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFilter` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `owner_id` INTEGER NOT NULL, `type` INTEGER NOT NULL, `daysOfWeek` TEXT, `range_time_started` INTEGER, `range_time_ended` INTEGER, `range_length_type` INTEGER, `range_length_last_days` INTEGER, `range_length_position` INTEGER, `range_length_custom_range_time_started` INTEGER, `range_length_custom_range_time_ended` INTEGER, FOREIGN KEY(`owner_id`) REFERENCES `favouriteRecordFilters`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
367+
)
368+
database.execSQL(
369+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFiltersCommonItems` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `filter_id` INTEGER NOT NULL, `is_selected` INTEGER NOT NULL, `type` INTEGER NOT NULL, `item_id` INTEGER, FOREIGN KEY(`filter_id`) REFERENCES `favouriteRecordFilter`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
370+
)
371+
database.execSQL(
372+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFiltersCommentItems` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `filter_id` INTEGER NOT NULL, `type` INTEGER NOT NULL, `text` TEXT, FOREIGN KEY(`filter_id`) REFERENCES `favouriteRecordFilter`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
373+
)
374+
database.execSQL(
375+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFiltersDuplicationItems` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `filter_id` INTEGER NOT NULL, `type` INTEGER NOT NULL, FOREIGN KEY(`filter_id`) REFERENCES `favouriteRecordFilter`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
376+
)
377+
database.execSQL(
378+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFiltersManuallyFilteredItems` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `filter_id` INTEGER NOT NULL, `type` INTEGER NOT NULL, `item_ids` TEXT, `range_time_started` INTEGER, `range_time_ended` INTEGER, FOREIGN KEY(`filter_id`) REFERENCES `favouriteRecordFilter`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
379+
)
380+
}
381+
}
358382
}
359383
}

data_local/src/main/java/com/example/util/simpletimetracker/data_local/di/DataLocalModule.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.example.util.simpletimetracker.data_local.record.RunningRecordDao
2626
import com.example.util.simpletimetracker.data_local.recordShortcut.RecordShortcutDao
2727
import com.example.util.simpletimetracker.data_local.recordTag.RecordShortcutToRecordTagDao
2828
import com.example.util.simpletimetracker.data_local.recordTag.RunningRecordToRecordTagDao
29+
import com.example.util.simpletimetracker.data_local.recordsFilter.FavouriteRecordsFilterDao
2930
import dagger.Module
3031
import dagger.Provides
3132
import dagger.hilt.InstallIn
@@ -182,4 +183,10 @@ class DataLocalModule {
182183
fun getRecordShortcutDao(database: AppDatabase): RecordShortcutDao {
183184
return database.recordShortcutDao()
184185
}
186+
187+
@Provides
188+
@Singleton
189+
fun getFavouriteRecordsFilterDao(database: AppDatabase): FavouriteRecordsFilterDao {
190+
return database.favouriteRecordsFilterDao()
191+
}
185192
}

data_local/src/main/java/com/example/util/simpletimetracker/data_local/di/DataLocalModuleBinds.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.example.util.simpletimetracker.data_local.file.CsvRepoImpl
2525
import com.example.util.simpletimetracker.data_local.file.IcsRepoImpl
2626
import com.example.util.simpletimetracker.data_local.recordShortcut.RecordShortcutRepoImpl
2727
import com.example.util.simpletimetracker.data_local.recordTag.RecordShortcutToRecordTagRepoImpl
28+
import com.example.util.simpletimetracker.data_local.recordsFilter.FavouriteRecordsFilterRepoImpl
2829
import com.example.util.simpletimetracker.data_local.sharing.SharingRepoImpl
2930
import com.example.util.simpletimetracker.domain.activityFilter.repo.ActivityFilterRepo
3031
import com.example.util.simpletimetracker.domain.activitySuggestion.repo.ActivitySuggestionRepo
@@ -51,6 +52,7 @@ import com.example.util.simpletimetracker.domain.backup.repo.IcsRepo
5152
import com.example.util.simpletimetracker.domain.durationSuggestion.repo.DurationSuggestionRepo
5253
import com.example.util.simpletimetracker.domain.recordShortcut.repo.RecordShortcutRepo
5354
import com.example.util.simpletimetracker.domain.recordTag.repo.RecordShortcutToRecordTagRepo
55+
import com.example.util.simpletimetracker.domain.recordsFilter.repo.FavouriteRecordsFilterRepo
5456
import com.example.util.simpletimetracker.domain.sharing.SharingRepo
5557
import dagger.Binds
5658
import dagger.Module
@@ -165,4 +167,8 @@ interface DataLocalModuleBinds {
165167
@Binds
166168
@Singleton
167169
fun bindRecordShortcutRepo(impl: RecordShortcutRepoImpl): RecordShortcutRepo
170+
171+
@Binds
172+
@Singleton
173+
fun bindFavouriteRecordsFilterRepo(impl: FavouriteRecordsFilterRepoImpl): FavouriteRecordsFilterRepo
168174
}

data_local/src/main/java/com/example/util/simpletimetracker/data_local/record/RecordWithRecordTagsDBO.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ data class RecordWithRecordTagsDBO(
1010
@Relation(
1111
parentColumn = "id",
1212
entityColumn = "record_id",
13-
entity = RecordToRecordTagDBO::class,
1413
)
1514
val recordTags: List<RecordToRecordTagDBO>,
1615
)

data_local/src/main/java/com/example/util/simpletimetracker/data_local/record/RunningRecordWithRecordTagsDBO.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ data class RunningRecordWithRecordTagsDBO(
1010
@Relation(
1111
parentColumn = "id",
1212
entityColumn = "running_record_id",
13-
entity = RunningRecordToRecordTagDBO::class,
1413
)
1514
val recordTags: List<RunningRecordToRecordTagDBO>,
1615
)

data_local/src/main/java/com/example/util/simpletimetracker/data_local/recordShortcut/RecordShortcutWithRecordTagsDBO.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ data class RecordShortcutWithRecordTagsDBO(
1010
@Relation(
1111
parentColumn = "id",
1212
entityColumn = "shortcut_id",
13-
entity = RecordShortcutToRecordTagDBO::class,
1413
)
1514
val recordTags: List<RecordShortcutToRecordTagDBO>,
1615
)

0 commit comments

Comments
 (0)