openauth_core/db/
models.rs1use serde::{Deserialize, Serialize};
2use time::OffsetDateTime;
3
4#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct User {
7 pub id: String,
8 pub name: String,
9 pub email: String,
10 pub email_verified: bool,
11 pub image: Option<String>,
12 #[serde(default)]
13 pub username: Option<String>,
14 #[serde(default, alias = "displayUsername")]
15 pub display_username: Option<String>,
16 pub created_at: OffsetDateTime,
17 pub updated_at: OffsetDateTime,
18}
19
20#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
22pub struct Account {
23 pub id: String,
24 pub provider_id: String,
25 pub account_id: String,
26 pub user_id: String,
27 pub access_token: Option<String>,
28 pub refresh_token: Option<String>,
29 pub id_token: Option<String>,
30 pub access_token_expires_at: Option<OffsetDateTime>,
31 pub refresh_token_expires_at: Option<OffsetDateTime>,
32 pub scope: Option<String>,
33 pub password: Option<String>,
34 pub created_at: OffsetDateTime,
35 pub updated_at: OffsetDateTime,
36}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40pub struct Session {
41 pub id: String,
42 pub user_id: String,
43 pub expires_at: OffsetDateTime,
44 pub token: String,
45 pub ip_address: Option<String>,
46 pub user_agent: Option<String>,
47 pub created_at: OffsetDateTime,
48 pub updated_at: OffsetDateTime,
49}
50
51#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
53pub struct Verification {
54 pub id: String,
55 pub identifier: String,
56 pub value: String,
57 pub expires_at: OffsetDateTime,
58 pub created_at: OffsetDateTime,
59 pub updated_at: OffsetDateTime,
60}
61
62#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
64pub struct RateLimit {
65 pub key: String,
66 pub count: u64,
67 pub last_request: i64,
68}