35 lines
788 B
Rust
35 lines
788 B
Rust
use std::fmt::Display;
|
|
|
|
use anyhow::{self, Result};
|
|
use ulid::Ulid;
|
|
|
|
pub struct ReferralCode(String);
|
|
|
|
impl Default for ReferralCode {
|
|
fn default() -> Self {
|
|
let out = Ulid::new();
|
|
Self(format!("{}", out))
|
|
}
|
|
}
|
|
|
|
impl Display for ReferralCode {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
f.write_str(&self.0)
|
|
}
|
|
}
|
|
|
|
impl TryFrom<String> for ReferralCode {
|
|
type Error = anyhow::Error;
|
|
|
|
fn try_from(x: String) -> Result<Self> {
|
|
// TODO: Check if string is a valid ULID
|
|
Ok(Self(x))
|
|
// match Ulid::try_from(x.clone()) {
|
|
// Ok(_) => ,
|
|
// Err(_) => Err(anyhow::anyhow!(
|
|
// "Referral Code does not have the right format"
|
|
// )),
|
|
// }
|
|
}
|
|
}
|