Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
{
"formatVersion": 1,
"database": {
"version": 9,
"identityHash": "29d0436e2383c547a6d86125bfd1abaa",
"entities": [
{
"tableName": "notification",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `appName` TEXT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `subText` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "appName",
"columnName": "appName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "title",
"columnName": "title",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "timestamp",
"columnName": "timestamp",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "subText",
"columnName": "subText",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [
{
"name": "index_notification_appName_title_timestamp",
"unique": false,
"columnNames": [
"appName",
"title",
"timestamp"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_notification_appName_title_timestamp` ON `${TABLE_NAME}` (`appName`, `title`, `timestamp`)"
},
{
"name": "index_notification_appName_subText_timestamp",
"unique": false,
"columnNames": [
"appName",
"subText",
"timestamp"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_notification_appName_subText_timestamp` ON `${TABLE_NAME}` (`appName`, `subText`, `timestamp`)"
}
],
"foreignKeys": []
},
{
"tableName": "notification_meta",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`notificationId` INTEGER NOT NULL, `intentActive` INTEGER NOT NULL, `intentArray` BLOB NOT NULL, `isRead` INTEGER NOT NULL, PRIMARY KEY(`notificationId`), FOREIGN KEY(`notificationId`) REFERENCES `notification`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "notificationId",
"columnName": "notificationId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "intentActive",
"columnName": "intentActive",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "intentArray",
"columnName": "intentArray",
"affinity": "BLOB",
"notNull": true
},
{
"fieldPath": "isRead",
"columnName": "isRead",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"notificationId"
]
},
"indices": [],
"foreignKeys": [
{
"table": "notification",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"notificationId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "notification_icon",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`notificationId` INTEGER NOT NULL, `iconBytes` BLOB NOT NULL, `priorityActive` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`notificationId`), FOREIGN KEY(`notificationId`) REFERENCES `notification`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "notificationId",
"columnName": "notificationId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "iconBytes",
"columnName": "iconBytes",
"affinity": "BLOB",
"notNull": true
},
{
"fieldPath": "priorityActive",
"columnName": "priorityActive",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"notificationId"
]
},
"indices": [
{
"name": "index_notification_icon_priorityActive_priority",
"unique": false,
"columnNames": [
"priorityActive",
"priority"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_notification_icon_priorityActive_priority` ON `${TABLE_NAME}` (`priorityActive`, `priority`)"
}
],
"foreignKeys": [
{
"table": "notification",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"notificationId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "app_icon",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`notiAppName` TEXT NOT NULL, `iconBytes` BLOB NOT NULL, `priorityActive` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`notiAppName`))",
"fields": [
{
"fieldPath": "notiAppName",
"columnName": "notiAppName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "iconBytes",
"columnName": "iconBytes",
"affinity": "BLOB",
"notNull": true
},
{
"fieldPath": "priorityActive",
"columnName": "priorityActive",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"notiAppName"
]
},
"indices": [
{
"name": "index_app_icon_priorityActive_priority",
"unique": false,
"columnNames": [
"priorityActive",
"priority"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_app_icon_priorityActive_priority` ON `${TABLE_NAME}` (`priorityActive`, `priority`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '29d0436e2383c547a6d86125bfd1abaa')"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.example.notimanager.domain.model.Notification

data class NotificationDto(
val title: String,
val subText: String,
val content: String,
val timestamp: Long,
val intentActive: Boolean,
Expand All @@ -15,6 +16,7 @@ data class NotificationDto(
fun toDomain(): Notification {
return Notification(
title = this.title,
subText = this.subText,
content = this.content,
timestamp = this.timestamp,
intent = retrieveIntent(intentArray),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.example.notimanager.domain.model.NotificationTitle
data class NotificationTitleDto(
val id: Long,
val title: String,
val subText: String,
val content: String,
val timestamp: Long,
val iconBytes: ByteArray,
Expand All @@ -17,6 +18,7 @@ data class NotificationTitleDto(
id = this.id,
title = this.title,
content = this.content,
subText = this.subText,
timestamp = this.timestamp,
notificationIcon = BitmapFactory.decodeByteArray(iconBytes, 0, iconBytes.size),
priorityActive = this.priorityActive,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ import androidx.room.PrimaryKey

@Entity(
tableName = "notification",
indices = [Index(value = ["appName", "title", "timestamp"], unique = false)]
indices = [
Index(value = ["appName", "title", "timestamp"], unique = false),
Index(value = ["appName", "subText", "timestamp"], unique = false)
]
)
data class NotificationModel(
@PrimaryKey(autoGenerate = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class NotificationAppRepository(
private val appIconDao: AppIconDao
) : NotificationAppRepositoryInterface {
override suspend fun getNotificationAppList(): List<NotificationApp>{
return notificationDao.getNotificationAppList()
return notificationDao.getNotificationAppList(false)
.asSequence()
.map { it.toDomain() }
.toList()
}

override suspend fun getNotificationAppPriorityList(): List<NotificationApp> {
return notificationDao.getNotificationAppPriorityList()
return notificationDao.getNotificationAppList(true)
.asSequence()
.map { it.toDomain() }
.toList()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,14 @@ class NotificationDomainRepository(
.map { it.toDomain() }
.toList()
}

override suspend fun getNotificationSubTextList(
appName: String,
subText: String
): List<Notification>{
return notificationDao.getNotificationSubTextList(appName, subText)
.asSequence()
.map { it.toDomain() }
.toList()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,17 @@ class NotificationTitleRepository(
) : NotificationTitleRepositoryInterface {
override suspend fun getNotificationTitleList(
appName: String,
title: String
): List<NotificationTitle>{
return notificationDao.getNotificationTitleList(appName, title)
return notificationDao.getNotificationTitleList(appName, false)
.asSequence()
.map { it.toDomain() }
.toList()
}

override suspend fun getNotificationTitlePriorityList(
appName: String,
title: String
): List<NotificationTitle> {
return notificationDao.getNotificationTitlePriorityList(appName, title)
return notificationDao.getNotificationTitleList(appName, true)
.asSequence()
.map { it.toDomain() }
.toList()
Expand Down
Loading
Loading