pub trait ModelWithPk: Model {
// Required methods
fn pk_value(&self) -> FilterValue;
fn get_column_value(&self, column: &str) -> Option<FilterValue>;
}Expand description
Runtime access to a model’s primary key and column values.
Used by relation loaders (parent → child FK bucketing) and by upsert
to build the conflict-row lookup. Implemented by codegen for every
#[derive(Model)] struct and every prax_schema!-generated model.
Both methods return a crate::filter::FilterValue that mirrors
exactly what the matching From<T> impl on the binding side would
produce, so a PK value extracted here is a drop-in replacement for
the same value produced by an equivalent type-checked filter.
Required Methods§
Sourcefn pk_value(&self) -> FilterValue
fn pk_value(&self) -> FilterValue
Primary-key value for this row.
Single-column PKs return the appropriate scalar variant.
Composite PKs collapse to crate::filter::FilterValue::List
in the same declaration order as Model::PRIMARY_KEY.
Sourcefn get_column_value(&self, column: &str) -> Option<FilterValue>
fn get_column_value(&self, column: &str) -> Option<FilterValue>
Look up a column by its SQL name.
Returns None for column names not present in Model::COLUMNS.
The relation executor uses this to extract foreign-key values
from a fetched parent row without knowing the concrete FK type.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".