mirror of
https://github.com/v0l/route96.git
synced 2025-06-16 08:18:50 +00:00

* Initial plan for issue * Implement complete payments system with quota enforcement - Add default free allowance configuration (100MB) - Implement quota checking before uploads in both blossom and nip96 routes - Add comprehensive quota checking functions in database module - Enhance admin API to show quota information - Add payment processing infrastructure - Include all necessary database migrations Users now get 100MB free storage + any valid paid storage. Uploads are rejected when quota would be exceeded. * Move free_quota_bytes to PaymentConfig and restore mime_type parameter Co-authored-by: v0l <1172179+v0l@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: v0l <1172179+v0l@users.noreply.github.com>
54 lines
1.1 KiB
Rust
54 lines
1.1 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use std::fmt::{Display, Formatter};
|
|
|
|
#[cfg(feature = "payments")]
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct PaymentAmount {
|
|
pub currency: Currency,
|
|
pub amount: f32,
|
|
}
|
|
|
|
#[cfg(feature = "payments")]
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub enum Currency {
|
|
BTC,
|
|
USD,
|
|
EUR,
|
|
GBP,
|
|
JPY,
|
|
CAD,
|
|
AUD,
|
|
}
|
|
|
|
#[cfg(feature = "payments")]
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub enum PaymentUnit {
|
|
GBSpace,
|
|
GBEgress,
|
|
}
|
|
|
|
impl PaymentUnit {
|
|
/// Get the total size from a number of units
|
|
pub fn to_size(&self, units: f32) -> u64 {
|
|
(1000f32 * 1000f32 * 1000f32 * units) as u64
|
|
}
|
|
}
|
|
|
|
impl Display for PaymentUnit {
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
|
match self {
|
|
PaymentUnit::GBSpace => write!(f, "GB Space"),
|
|
PaymentUnit::GBEgress => write!(f, "GB Egress"),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "payments")]
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum PaymentInterval {
|
|
Day(u16),
|
|
Month(u16),
|
|
Year(u16),
|
|
}
|