pub struct TokenService;Implementations§
Source§impl TokenService
impl TokenService
Sourcepub async fn recharge(
pool: &Pool<Postgres>,
params: TokenRechargeInsertParams,
) -> Result<RechargeResult, Error>
pub async fn recharge( pool: &Pool<Postgres>, params: TokenRechargeInsertParams, ) -> Result<RechargeResult, Error>
充值:在同一事务中插入充值记录并更新账户余额。 若账户不存在则自动创建。
Sourcepub async fn consume(
pool: &Pool<Postgres>,
params: TokenUsageInsertParams,
) -> Result<ConsumeResult, Error>
pub async fn consume( pool: &Pool<Postgres>, params: TokenUsageInsertParams, ) -> Result<ConsumeResult, Error>
消费:在同一事务中扣减余额并写入消费记录。
余额不足时返回 Error::InsufficientBalance,不写消费记录,事务回滚。
Auto Trait Implementations§
impl Freeze for TokenService
impl RefUnwindSafe for TokenService
impl Send for TokenService
impl Sync for TokenService
impl Unpin for TokenService
impl UnsafeUnpin for TokenService
impl UnwindSafe for TokenService
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
Mutably borrows from an owned value. Read more
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 more