it all works!
This commit is contained in:
parent
d6ebd3a4a6
commit
40e8445848
13 changed files with 471 additions and 47 deletions
|
|
@ -1,5 +1,7 @@
|
|||
use crate::keys::Key;
|
||||
use chrono::NaiveDateTime;
|
||||
use diesel::prelude::*;
|
||||
use eyre::ensure;
|
||||
|
||||
#[derive(Queryable, Selectable, Insertable)]
|
||||
#[diesel(table_name = crate::schema::accounts)]
|
||||
|
|
@ -8,3 +10,34 @@ pub struct Account {
|
|||
pub email: String,
|
||||
pub date: NaiveDateTime,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub enum OnlyZero {
|
||||
#[default]
|
||||
Zero = 0,
|
||||
}
|
||||
|
||||
impl From<OnlyZero> for i32 {
|
||||
fn from(_value: OnlyZero) -> Self {
|
||||
0
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<i32> for OnlyZero {
|
||||
type Error = eyre::Report;
|
||||
|
||||
fn try_from(value: i32) -> Result<Self, Self::Error> {
|
||||
ensure!(value == 0, "tried to convert nonzero value into OnlyZero");
|
||||
Ok(OnlyZero::Zero)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, Selectable, Insertable, Clone)]
|
||||
#[diesel(table_name = crate::schema::keys)]
|
||||
#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
|
||||
pub struct Keys {
|
||||
#[diesel(serialize_as = i32)]
|
||||
#[diesel(deserialize_as = i32)]
|
||||
pub id: OnlyZero,
|
||||
pub email_unsubscribe_url: Key<ed25519_dalek::SigningKey>,
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue