pub struct UsageAlert {
pub id: Uuid,
pub org_id: Uuid,
pub metric: String,
pub period_start: NaiveDate,
pub threshold_pct: i16,
pub notified_at: DateTime<Utc>,
pub dismissed_at: Option<DateTime<Utc>>,
pub created_at: DateTime<Utc>,
}Expand description
One alert row per (org, metric, period, threshold_pct) — see migration 20250101000054_usage_alerts.sql.
Fields§
§id: Uuid§org_id: Uuid§metric: String§period_start: NaiveDate§threshold_pct: i16§notified_at: DateTime<Utc>§dismissed_at: Option<DateTime<Utc>>§created_at: DateTime<Utc>Implementations§
Source§impl UsageAlert
impl UsageAlert
Sourcepub async fn try_insert(
pool: &Pool<Postgres>,
org_id: Uuid,
metric: &str,
period_start: NaiveDate,
threshold_pct: i16,
) -> Result<Option<UsageAlert>, Error>
pub async fn try_insert( pool: &Pool<Postgres>, org_id: Uuid, metric: &str, period_start: NaiveDate, threshold_pct: i16, ) -> Result<Option<UsageAlert>, Error>
Idempotent insert. Returns Some(row) if newly inserted (worker should
then send an email), None if a matching alert already exists.
Sourcepub async fn list_active_for_period(
pool: &Pool<Postgres>,
org_id: Uuid,
period_start: NaiveDate,
) -> Result<Vec<UsageAlert>, Error>
pub async fn list_active_for_period( pool: &Pool<Postgres>, org_id: Uuid, period_start: NaiveDate, ) -> Result<Vec<UsageAlert>, Error>
Active (non-dismissed) alerts for the given period, newest first.
Trait Implementations§
Source§impl Clone for UsageAlert
impl Clone for UsageAlert
Source§fn clone(&self) -> UsageAlert
fn clone(&self) -> UsageAlert
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for UsageAlert
impl Debug for UsageAlert
Source§impl<'de> Deserialize<'de> for UsageAlert
impl<'de> Deserialize<'de> for UsageAlert
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<UsageAlert, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<UsageAlert, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<'a, R> FromRow<'a, R> for UsageAlertwhere
R: Row,
&'a str: ColumnIndex<R>,
Uuid: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
String: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
NaiveDate: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
i16: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
DateTime<Utc>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<DateTime<Utc>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
impl<'a, R> FromRow<'a, R> for UsageAlertwhere
R: Row,
&'a str: ColumnIndex<R>,
Uuid: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
String: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
NaiveDate: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
i16: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
DateTime<Utc>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<DateTime<Utc>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Source§impl Serialize for UsageAlert
impl Serialize for UsageAlert
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl Freeze for UsageAlert
impl RefUnwindSafe for UsageAlert
impl Send for UsageAlert
impl Sync for UsageAlert
impl Unpin for UsageAlert
impl UnsafeUnpin for UsageAlert
impl UnwindSafe for UsageAlert
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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 moreCreates a shared type from an unshared type.