pub struct EntryListRow {
pub id: i64,
pub feed_id: i64,
pub guid: String,
pub url: Option<String>,
pub title: Option<String>,
pub published: Option<String>,
pub read: bool,
pub starred: bool,
}Expand description
One row of a LIST view — deliberately without content_html.
The list queries used to be SELECT e.* into Entry, which carries the
sanitized article body. The body is essentially the whole of a cached entry
(measured: 11.9 KB/entry), and no list surface has ever rendered it — the
reader’s EntryRow reads id, title, feed title, date, read, starred and
link, and nothing else. So every article on every page load was read off
disk, allocated, and dropped unexamined. On a 512 MB box with 250 concurrent
requests permitted, one reader with a large backlog could ask for hundreds of
megabytes in a single handler, and the resulting OOM/restart looked like a
healthy machine that simply fell over.
read / starred come from the same LEFT JOIN that filters the view, so a
caller does not have to fetch the whole unread or starred set a second time
just to decorate the rows it is showing.
Entry is still the right type for the single-entry reader, which is the
one surface that genuinely needs the body.
Fields§
§id: i64§feed_id: i64§guid: StringFeed-native GUID — used to match a cached entry against a PDS saved record.
url: Option<String>§title: Option<String>§published: Option<String>§read: boolThis DID’s read bit. false when there is no entry_state row at all.
starred: boolThis DID’s star bit. false when there is no entry_state row at all.
Trait Implementations§
Source§impl Clone for EntryListRow
impl Clone for EntryListRow
Source§fn clone(&self) -> EntryListRow
fn clone(&self) -> EntryListRow
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EntryListRow
impl Debug for EntryListRow
impl Eq for EntryListRow
Source§impl<'a, R: Row> FromRow<'a, R> for EntryListRow
impl<'a, R: Row> FromRow<'a, R> for EntryListRow
Source§impl PartialEq for EntryListRow
impl PartialEq for EntryListRow
impl StructuralPartialEq for EntryListRow
Auto Trait Implementations§
impl Freeze for EntryListRow
impl RefUnwindSafe for EntryListRow
impl Send for EntryListRow
impl Sync for EntryListRow
impl Unpin for EntryListRow
impl UnsafeUnpin for EntryListRow
impl UnwindSafe for EntryListRow
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more