diff options
Diffstat (limited to 'app/src/main/java/org/terst/feedreader/data/Entities.kt')
| -rw-r--r-- | app/src/main/java/org/terst/feedreader/data/Entities.kt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/app/src/main/java/org/terst/feedreader/data/Entities.kt b/app/src/main/java/org/terst/feedreader/data/Entities.kt new file mode 100644 index 0000000..d71e1eb --- /dev/null +++ b/app/src/main/java/org/terst/feedreader/data/Entities.kt @@ -0,0 +1,43 @@ +package org.terst.feedreader.data + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "feeds") +data class FeedEntity( + @PrimaryKey val id: String, // the feed URL itself -- naturally unique, no need for a separate id scheme + val title: String, + val siteUrl: String? = null, // the human-facing site link, if the feed provides one (distinct from the feed XML URL) + val lastFetchedAt: Long? = null, + val etag: String? = null, // conditional-GET caching (If-None-Match) to avoid re-downloading unchanged feeds + val lastModified: String? = null, // conditional-GET caching (If-Modified-Since) + val lastError: String? = null // set when a fetch fails; cleared on the next successful fetch +) + +@Entity(tableName = "articles") +data class ArticleEntity( + @PrimaryKey val id: String, // guid if the feed provides one, else a hash of the link + @ColumnInfo(index = true) val feedId: String?, // null for a standalone article saved via the share-sheet target, not tied to any feed + val title: String, + val link: String, + val author: String? = null, + val publishedAt: Long? = null, + val feedContentHtml: String? = null, // whatever content the feed itself provided (may be a summary, may be full text) + val extractedContent: String? = null, // Readability-extracted full text, filled in on first read if feedContentHtml was thin + val isRead: Boolean = false, + val isSaved: Boolean = false, // explicitly kept (independent of read state) -- triggers a Stash save + val stashArtifactId: String? = null, // set once successfully archived to Stash; null means not yet saved or save failed + val createdAt: Long +) + +enum class FilterAction { MUTE, HIGHLIGHT } + +@Entity(tableName = "filter_rules") +data class FilterRuleEntity( + @PrimaryKey(autoGenerate = true) val id: Long = 0, + val pattern: String, // plain substring match, case-insensitive -- see FilterRuleEngine + val action: FilterAction, + val feedId: String? = null, // null applies globally across all feeds + val createdAt: Long +) |
