use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::time::{SystemTime, UNIX_EPOCH};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct VerifySignatureRequest {
pub signature: String,
pub message: String,
}
#[derive(Serialize)]
pub(crate) struct QueryResponse {
pub data: Value,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
pub struct Claims {
sub: String,
iss: String,
iat: usize,
exp: usize,
}
impl Claims {
pub fn new(sub: String, iss: String, expiry: usize) -> Self {
let now = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs() as usize;
Self {
sub,
iss,
iat: now,
exp: now + expiry,
}
}
pub fn sub(&self) -> &str {
&self.sub
}
pub fn unauthenticated() -> Self {
Self {
sub: "".to_string(),
iss: "".to_string(),
iat: 1,
exp: 1,
}
}
pub fn is_unauthenticated(&self) -> bool {
self.exp == 1 && self.iat == 1
}
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct SqlQuery {
pub query: String,
}