Struct relay_event_schema::protocol::UserReport

source ·
pub struct UserReport {
    pub event_id: EventId,
    pub name: String,
    pub email: String,
    pub comments: String,
}
Expand description

User feedback for an event as sent by the client to the userfeedback/userreport endpoint.

Historically the “schema” for user report has been “defined” as the set of possible keyword-arguments sentry.models.UserReport accepts. Anything the model constructor accepts goes.

For example, {"email": null} is only invalid because UserReport(email=None).save() is. SDKs may neither send this (historically, in Relay we relaxed this already), but more importantly the ingest consumer may never receive this… because it would end up crashing the ingest consumer (while in older versions of Sentry it would simply crash the endpoint).

The database/model schema is a bunch of not-null strings that have (pgsql) defaults, so that’s how we end up with this struct definition.

Fields§

§event_id: EventId

The event ID for which this user feedback is created.

§name: String

The user’s name.

§email: String

The user’s email address.

§comments: String

Comments supplied by the user.

Trait Implementations§

source§

impl Debug for UserReport

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for UserReport

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for UserReport

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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, 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, 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,