Skip to content

Commit 04293b2

Browse files
committed
flatten favourite records filter database table
1 parent 38c0516 commit 04293b2

7 files changed

Lines changed: 191 additions & 340 deletions

File tree

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@ import com.example.util.simpletimetracker.data_local.recordsFilter.FavouriteReco
6969
RecordShortcutDBO::class,
7070
FavouriteRecordsFilterDBO.MainDBO::class,
7171
FavouriteRecordsFilterDBO.FilterDBO::class,
72-
FavouriteRecordsFilterDBO.CommonItemDBO::class,
73-
FavouriteRecordsFilterDBO.CommentItemDBO::class,
74-
FavouriteRecordsFilterDBO.DuplicationItemDBO::class,
75-
FavouriteRecordsFilterDBO.ManuallyFilteredItemDBO::class,
7672
],
7773
version = 29,
7874
exportSchema = true,

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -363,19 +363,7 @@ class AppDatabaseMigrations {
363363
"CREATE TABLE IF NOT EXISTS `favouriteRecordFilters` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
364364
)
365365
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 )",
366+
"CREATE TABLE IF NOT EXISTS `favouriteRecordFilter` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `owner_id` INTEGER NOT NULL, `type` INTEGER NOT NULL, `common_items_ids` TEXT, `comment_items_ids` TEXT, `comment_items_text` TEXT, `duplication_items_ids` TEXT, `manually_filtered_items_ids` TEXT, `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 )",
379367
)
380368
}
381369
}

data_local/src/main/java/com/example/util/simpletimetracker/data_local/recordsFilter/FavouriteRecordsFilterDBO.kt

Lines changed: 20 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ data class FavouriteRecordsFilterDBO(
1717
parentColumn = "id",
1818
entityColumn = "owner_id",
1919
)
20-
val filters: List<FilterWithDataDBO>,
20+
val filters: List<FilterDBO>,
2121
) {
2222

2323
@Entity(tableName = "favouriteRecordFilters")
@@ -27,35 +27,6 @@ data class FavouriteRecordsFilterDBO(
2727
val id: Long,
2828
)
2929

30-
data class FilterWithDataDBO(
31-
@Embedded
32-
val filter: FilterDBO,
33-
34-
@Relation(
35-
parentColumn = "id",
36-
entityColumn = "filter_id",
37-
)
38-
val commonItems: List<CommonItemDBO>,
39-
40-
@Relation(
41-
parentColumn = "id",
42-
entityColumn = "filter_id",
43-
)
44-
val commentItems: List<CommentItemDBO>,
45-
46-
@Relation(
47-
parentColumn = "id",
48-
entityColumn = "filter_id",
49-
)
50-
val duplicationItems: List<DuplicationItemDBO>,
51-
52-
@Relation(
53-
parentColumn = "id",
54-
entityColumn = "filter_id",
55-
)
56-
val manuallyFilteredItems: List<ManuallyFilteredItemDBO>,
57-
)
58-
5930
@Entity(
6031
tableName = "favouriteRecordFilter",
6132
foreignKeys = [
@@ -78,6 +49,25 @@ data class FavouriteRecordsFilterDBO(
7849
@ColumnInfo(name = "type")
7950
val type: Long,
8051

52+
// Longs stored in string comma separated
53+
@ColumnInfo(name = "common_items_ids")
54+
val commonItemsIds: String?,
55+
56+
// Ids stored in string comma separated
57+
@ColumnInfo(name = "comment_items_ids")
58+
val commentItemsIds: String?,
59+
60+
@ColumnInfo(name = "comment_items_text")
61+
val commentItemsText: String?,
62+
63+
// Ids stored in string comma separated
64+
@ColumnInfo(name = "duplication_items_ids")
65+
val duplicationItemsIds: String?,
66+
67+
// Ids stored in string comma separated
68+
@ColumnInfo(name = "manually_filtered_items_ids")
69+
val manuallyFilteredItemsIds: String?,
70+
8171
@Embedded(prefix = "range_")
8272
val range: RangeDBO?,
8373

@@ -91,114 +81,6 @@ data class FavouriteRecordsFilterDBO(
9181
val daysOfWeek: String?,
9282
)
9383

94-
@Entity(
95-
tableName = "favouriteRecordFiltersCommonItems",
96-
foreignKeys = [
97-
ForeignKey(
98-
entity = FilterDBO::class,
99-
parentColumns = ["id"],
100-
childColumns = ["filter_id"],
101-
onDelete = ForeignKey.CASCADE,
102-
),
103-
],
104-
)
105-
data class CommonItemDBO(
106-
@PrimaryKey(autoGenerate = true)
107-
@ColumnInfo(name = "id")
108-
val id: Long,
109-
110-
@ColumnInfo(name = "filter_id")
111-
val filterId: Long,
112-
113-
@ColumnInfo(name = "is_selected")
114-
val isSelected: Boolean,
115-
116-
@ColumnInfo(name = "type")
117-
val type: Long,
118-
119-
@ColumnInfo(name = "item_id")
120-
val itemId: Long?,
121-
)
122-
123-
@Entity(
124-
tableName = "favouriteRecordFiltersCommentItems",
125-
foreignKeys = [
126-
ForeignKey(
127-
entity = FilterDBO::class,
128-
parentColumns = ["id"],
129-
childColumns = ["filter_id"],
130-
onDelete = ForeignKey.CASCADE,
131-
),
132-
],
133-
)
134-
data class CommentItemDBO(
135-
@PrimaryKey(autoGenerate = true)
136-
@ColumnInfo(name = "id")
137-
val id: Long,
138-
139-
@ColumnInfo(name = "filter_id")
140-
val filterId: Long,
141-
142-
@ColumnInfo(name = "type")
143-
val type: Long,
144-
145-
@ColumnInfo(name = "text")
146-
val text: String?,
147-
)
148-
149-
@Entity(
150-
tableName = "favouriteRecordFiltersDuplicationItems",
151-
foreignKeys = [
152-
ForeignKey(
153-
entity = FilterDBO::class,
154-
parentColumns = ["id"],
155-
childColumns = ["filter_id"],
156-
onDelete = ForeignKey.CASCADE,
157-
),
158-
],
159-
)
160-
data class DuplicationItemDBO(
161-
@PrimaryKey(autoGenerate = true)
162-
@ColumnInfo(name = "id")
163-
val id: Long,
164-
165-
@ColumnInfo(name = "filter_id")
166-
val filterId: Long,
167-
168-
@ColumnInfo(name = "type")
169-
val type: Long,
170-
)
171-
172-
@Entity(
173-
tableName = "favouriteRecordFiltersManuallyFilteredItems",
174-
foreignKeys = [
175-
ForeignKey(
176-
entity = FilterDBO::class,
177-
parentColumns = ["id"],
178-
childColumns = ["filter_id"],
179-
onDelete = ForeignKey.CASCADE,
180-
),
181-
],
182-
)
183-
data class ManuallyFilteredItemDBO(
184-
@PrimaryKey(autoGenerate = true)
185-
@ColumnInfo(name = "id")
186-
val id: Long,
187-
188-
@ColumnInfo(name = "filter_id")
189-
val filterId: Long,
190-
191-
@ColumnInfo(name = "type")
192-
val type: Long,
193-
194-
// Longs stored in string comma separated
195-
@ColumnInfo(name = "item_ids")
196-
val itemIds: String?,
197-
198-
@Embedded(prefix = "range_")
199-
val range: RangeDBO?,
200-
)
201-
20284
data class RangeDBO(
20385
@ColumnInfo(name = "time_started")
20486
val rangeTimeStarted: Long,

data_local/src/main/java/com/example/util/simpletimetracker/data_local/recordsFilter/FavouriteRecordsFilterDao.kt

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,15 @@ interface FavouriteRecordsFilterDao {
2323
val mainId = insertMain(data.main)
2424

2525
data.filters.forEach { filter ->
26-
val filterId = insertFilter(filter.filter.copy(ownerId = mainId))
27-
insertItems(filter.commonItems.map { it.copy(filterId = filterId) })
28-
insertCommentItems(filter.commentItems.map { it.copy(filterId = filterId) })
29-
insertDuplicationItems(filter.duplicationItems.map { it.copy(filterId = filterId) })
30-
insertManuallyFiltered(filter.manuallyFilteredItems.map { it.copy(filterId = filterId) })
26+
insertFilter(filter.copy(ownerId = mainId))
3127
}
3228
}
3329

3430
@Insert(onConflict = OnConflictStrategy.REPLACE)
3531
suspend fun insertMain(data: FavouriteRecordsFilterDBO.MainDBO): Long
3632

3733
@Insert(onConflict = OnConflictStrategy.REPLACE)
38-
suspend fun insertFilter(data: FavouriteRecordsFilterDBO.FilterDBO): Long
39-
40-
@Insert(onConflict = OnConflictStrategy.REPLACE)
41-
suspend fun insertItems(data: List<FavouriteRecordsFilterDBO.CommonItemDBO>)
42-
43-
@Insert(onConflict = OnConflictStrategy.REPLACE)
44-
suspend fun insertCommentItems(data: List<FavouriteRecordsFilterDBO.CommentItemDBO>)
45-
46-
@Insert(onConflict = OnConflictStrategy.REPLACE)
47-
suspend fun insertDuplicationItems(data: List<FavouriteRecordsFilterDBO.DuplicationItemDBO>)
48-
49-
@Insert(onConflict = OnConflictStrategy.REPLACE)
50-
suspend fun insertManuallyFiltered(data: List<FavouriteRecordsFilterDBO.ManuallyFilteredItemDBO>)
34+
suspend fun insertFilter(data: FavouriteRecordsFilterDBO.FilterDBO)
5135

5236
@Delete
5337
suspend fun delete(data: FavouriteRecordsFilterDBO.MainDBO)

0 commit comments

Comments
 (0)