add: store coin transfer source

This commit is contained in:
trisua 2025-08-08 16:01:23 -04:00
parent a08552338b
commit 98426d0989
11 changed files with 105 additions and 9 deletions

View file

@ -58,6 +58,16 @@ pub enum CoinTransferMethod {
Purchase(usize),
}
#[derive(Serialize, Deserialize)]
pub enum CoinTransferSource {
/// An unknown source, such as a transfer request.
General,
/// A product sale.
Sale,
/// A purchase of coins through Stripe.
Purchase,
}
#[derive(Serialize, Deserialize)]
pub struct CoinTransfer {
pub id: usize,
@ -67,11 +77,18 @@ pub struct CoinTransfer {
pub amount: i32,
pub is_pending: bool,
pub method: CoinTransferMethod,
pub source: CoinTransferSource,
}
impl CoinTransfer {
/// Create a new [`CoinTransfer`].
pub fn new(sender: usize, receiver: usize, amount: i32, method: CoinTransferMethod) -> Self {
pub fn new(
sender: usize,
receiver: usize,
amount: i32,
method: CoinTransferMethod,
source: CoinTransferSource,
) -> Self {
Self {
id: Snowflake::new().to_string().parse::<usize>().unwrap(),
created: unix_epoch_timestamp(),
@ -80,6 +97,7 @@ impl CoinTransfer {
amount,
is_pending: false,
method,
source,
}
}