Skip to main content

UpsertProfileFields

Struct UpsertProfileFields 

Source
pub struct UpsertProfileFields {
    pub name: Patch<Box<str>>,
    pub typ: Patch<ProfileType>,
    pub profile_pic: Patch<Option<Box<str>>>,
    pub roles: Patch<Option<Vec<Box<str>>>>,
    pub status: Patch<ProfileStatus>,
    pub synced: Patch<bool>,
    pub following: Patch<bool>,
    pub connected: Patch<ProfileConnectionStatus>,
    pub trust: Patch<ProfileTrust>,
    pub etag: Patch<Box<str>>,
}
Expand description

Fields for MetaAdapter::upsert_profile.

All fields are Patch and apply to both INSERT and UPDATE:

  • Patch::Value(v) / Patch::Null → set the column on both branches.
  • Patch::Undefined → leave the column at its current value on UPDATE, and use the column default (NULL or "" for name) on INSERT.

Note on the INSERT branch: Patch::Null and Patch::Undefined collapse to the same column default for most fields — the INSERT can’t distinguish “user explicitly set to NULL” from “user didn’t touch this field.” This is fine semantically (both mean “no value here”), but differs from UPDATE, which preserves the existing value on Undefined.

Stub-row idiom: upsert_profile creates a row with type = NULL when typ is Patch::Undefined. These stub rows are filtered out of list_profiles (which requires type IS NOT NULL), but read_profile / get_info will return Error::NotFound for them. This is intentional: relationship hooks (FOLLOW, FSHR) create stubs first and federation sync populates type later. Callers performing read-then-write should not rely on read_profile finding a freshly-inserted stub.

Fields§

§name: Patch<Box<str>>§typ: Patch<ProfileType>§profile_pic: Patch<Option<Box<str>>>§roles: Patch<Option<Vec<Box<str>>>>§status: Patch<ProfileStatus>§synced: Patch<bool>§following: Patch<bool>§connected: Patch<ProfileConnectionStatus>§trust: Patch<ProfileTrust>§etag: Patch<Box<str>>

Implementations§

Source§

impl UpsertProfileFields

Source

pub fn from_update(update: UpdateProfileData) -> Self

Build an UpsertProfileFields from an existing UpdateProfileData.

typ is left Undefined — callers that know the profile type should set it explicitly.

Trait Implementations§

Source§

impl Default for UpsertProfileFields

Source§

fn default() -> UpsertProfileFields

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more