signup.rs

 1use super::{SignupId, UserId};
 2use sea_orm::{entity::prelude::*, FromQueryResult};
 3use serde::{Deserialize, Serialize};
 4
 5#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
 6#[sea_orm(table_name = "signups")]
 7pub struct Model {
 8    #[sea_orm(primary_key)]
 9    pub id: SignupId,
10    pub email_address: String,
11    pub email_confirmation_code: String,
12    pub email_confirmation_sent: bool,
13    pub created_at: DateTime,
14    pub device_id: Option<String>,
15    pub user_id: Option<UserId>,
16    pub inviting_user_id: Option<UserId>,
17    pub platform_mac: bool,
18    pub platform_linux: bool,
19    pub platform_windows: bool,
20    pub platform_unknown: bool,
21    pub editor_features: Option<Vec<String>>,
22    pub programming_languages: Option<Vec<String>>,
23    pub added_to_mailing_list: bool,
24}
25
26#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
27pub enum Relation {}
28
29impl ActiveModelBehavior for ActiveModel {}
30
31#[derive(Clone, Debug, PartialEq, Eq, FromQueryResult, Serialize, Deserialize)]
32pub struct Invite {
33    pub email_address: String,
34    pub email_confirmation_code: String,
35}
36
37#[derive(Clone, Debug, Deserialize)]
38pub struct NewSignup {
39    pub email_address: String,
40    pub platform_mac: bool,
41    pub platform_windows: bool,
42    pub platform_linux: bool,
43    pub editor_features: Vec<String>,
44    pub programming_languages: Vec<String>,
45    pub device_id: Option<String>,
46    pub added_to_mailing_list: bool,
47    pub created_at: Option<DateTime>,
48}
49
50#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, FromQueryResult)]
51pub struct WaitlistSummary {
52    pub count: i64,
53    pub linux_count: i64,
54    pub mac_count: i64,
55    pub windows_count: i64,
56    pub unknown_count: i64,
57}