Skip to content

Macros to derive rusqlite `FromSql `and `ToSql` for newtypes.

Notifications You must be signed in to change notification settings

koakuma-chan/rusqlite_derive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Example

use garde::Validate;

use rusqlite_derive::{FromSql, ToSql};

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Validate, FromSql, ToSql)]
#[garde(transparent)]
#[serde(transparent)]
pub struct Username(
    #[garde(length(min = 3, max = 24), alphanumeric)]
    //
    String,
);
use rusqlite_derive::{FromSql, ToSql};

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, FromSql, ToSql)]
#[serde(try_from = "String")]
#[rusqlite(try_from = "String")]
pub struct Username(String);

impl TryFrom<String> for Username {
    type Error = UsernameError;

    fn try_from(value: String) -> Result<Self, Self::Error> {
        if value.len() >= 3 && value.len() <= 24 && value.chars().all(|c| c.is_alphanumeric()) {
            Ok(Self(value))
        } else {
            Err(UsernameError::Invalid)
        }
    }
}

About

Macros to derive rusqlite `FromSql `and `ToSql` for newtypes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages