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}