it all works!

This commit is contained in:
Jacob Lifshay 2024-04-08 23:38:50 -07:00
parent d6ebd3a4a6
commit 40e8445848
Signed by: programmerjake
SSH key fingerprint: SHA256:B1iRVvUJkvd7upMIiMqn6OyxvD2SgJkAH3ZnUOj6z+c
13 changed files with 471 additions and 47 deletions

View file

@ -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>,
}