pub struct ListOpts {
pub ordering: Vec<(String, SortDir)>,
pub filters: Vec<(String, String)>,
pub date_ranges: Vec<(String, Option<String>, Option<String>)>,
pub multi_filters: Vec<(String, Vec<String>)>,
pub search: Option<(String, Vec<String>)>,
pub search_index_column: Option<&'static str>,
pub limit: Option<i64>,
pub offset: Option<i64>,
}Expand description
Per-request options for [AdminOps::list]. Empty / None fields
mean “framework default”: no ordering override falls back to
id DESC inside the runtime, no filters skips the WHERE clause,
no limit fetches every row.
Fields§
§ordering: Vec<(String, SortDir)>Validated (column, dir) pairs to apply as ORDER BY. The
column name is bound to the model’s M::COLUMNS set inside
the runtime, so callers can pass user-supplied names without
SQL-injection risk.
filters: Vec<(String, String)>(column, value) pairs applied as WHERE col::text = $N.
Cast to text so the comparison matches the same string-shape
semantics the in-memory pre-P10 filter used for bool / int /
timestamp columns.
date_ranges: Vec<(String, Option<String>, Option<String>)>Date-range filters surfaced from
super::filters::FilterKind::DateRange: each tuple is
(column, gte, lte) with YYYY-MM-DD strings. Either bound
may be None (open-ended). The runtime renders
WHERE col::date >= $N::date and / or
WHERE col::date <= $N::date. Column names are validated
against M::COLUMNS; the date strings are passed through
to Postgres which rejects malformed inputs.
multi_filters: Vec<(String, Vec<String>)>Multi-select filters surfaced from
super::filters::FilterKind::MultiSelect: each tuple is
(column, values) and renders as
WHERE col::text IN ($N, $N+1, …). An empty values list is
silently skipped — “nothing selected” should not collapse the
query to an empty result. Column names are validated against
M::COLUMNS; the caller is responsible for restricting
values to the field’s declared choices.
search: Option<(String, Vec<String>)>Free-text search: (term, columns). The runtime emits
WHERE (col1::text ILIKE $N OR col2::text ILIKE $N OR …)
with $N = '%term%'. An empty term or empty columns
leaves the WHERE alone.
search_index_column: Option<&'static str>When Some(col), the search WHERE clause uses Postgres
FTS against this tsvector column
(<col> @@ websearch_to_tsquery('english', $N)) instead
of the ILIKE OR-loop above. search must still carry the
raw term; the columns slice is ignored on this path.
Sourced from AdminEntry::search_index_column.
limit: Option<i64>LIMIT $N for the data query. The COUNT(*) query never
applies it. None → no limit.
offset: Option<i64>OFFSET $N for the data query. None or Some(0) → no offset.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ListOpts
impl RefUnwindSafe for ListOpts
impl Send for ListOpts
impl Sync for ListOpts
impl Unpin for ListOpts
impl UnsafeUnpin for ListOpts
impl UnwindSafe for ListOpts
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<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