headless_lms_server/programs/seed/
seed_generic_emails.rs

1use headless_lms_models::{
2    email_templates::{EmailTemplateNew, insert_email_template},
3    user_passwords::insert_password_reset_token,
4};
5use serde_json::json;
6use sqlx::{Pool, Postgres};
7use uuid::Uuid;
8
9use super::seed_users::SeedUsersResult;
10
11pub async fn seed_generic_emails(
12    db_pool: Pool<Postgres>,
13    seed_users_result: SeedUsersResult,
14) -> anyhow::Result<()> {
15    info!("inserting password reset emails");
16
17    let mut conn = db_pool.acquire().await?;
18
19    let english_subject = Some("Reset password request");
20    let english_body = json!([
21        {
22            "type": "core/paragraph",
23            "isValid": true,
24            "clientId": "95acea49-1c92-4d54-9854-707e1bfee010",
25            "attributes": {
26                "content": "Hello, it seems you requested a password reset.",
27                "drop_cap": false
28            },
29            "innerBlocks": []
30        },
31        {
32            "type": "core/paragraph",
33            "isValid": true,
34            "clientId": "ceac591d-b291-40b2-8da7-6f437a6a8fce",
35            "attributes": {
36                "content": "You can reset your password here: {{RESET_LINK}}",
37                "drop_cap": false
38            },
39            "innerBlocks": []
40        },
41        {
42            "type": "core/paragraph",
43            "isValid": true,
44            "clientId": "6a4165a1-38e1-4a17-b364-5f265afc7d23",
45            "attributes": {
46                "content": "If you did not request a password reset, please ignore this message.",
47                "drop_cap": false
48            },
49            "innerBlocks": []
50        }
51    ]);
52
53    let english_template = EmailTemplateNew {
54        name: "reset-password-email".to_string(),
55        language: Some("en".to_string()),
56        content: Some(english_body),
57    };
58
59    insert_email_template(&mut conn, None, english_template, english_subject).await?;
60
61    let finnish_subject = Some("Salasanan palautuspyyntö");
62    let finnish_body = json!([
63        {
64            "type": "core/paragraph",
65            "isValid": true,
66            "clientId": "a9de49ff-919f-44b4-a085-9210ce0da94b",
67            "attributes": {
68                "content": "Hei, olet pyytänyt salasanan palautusta.",
69                "drop_cap": false
70            },
71            "innerBlocks": []
72        },
73        {
74            "type": "core/paragraph",
75            "isValid": true,
76            "clientId": "c145bae4-9ff5-4194-8913-50f8900c20c8",
77            "attributes": {
78                "content": "Voit palauttaa salasanasi tästä: {{RESET_LINK}}",
79                "drop_cap": false
80            },
81            "innerBlocks": []
82        },
83        {
84            "type": "core/paragraph",
85            "isValid": true,
86            "clientId": "ebd0d430-0ae3-4b85-9e8e-96481660ded4",
87            "attributes": {
88                "content": "Jos et pyytänyt salasanan palautusta, voit jättää tämän viestin huomiotta.",
89                "drop_cap": false
90            },
91            "innerBlocks": []
92        }
93    ]);
94
95    let finnish_template = EmailTemplateNew {
96        name: "reset-password-email".to_string(),
97        language: Some("fi".to_string()),
98        content: Some(finnish_body),
99    };
100
101    insert_email_template(&mut conn, None, finnish_template, finnish_subject).await?;
102
103    info!("inserting password reset token for user");
104    let SeedUsersResult { sign_up_user, .. } = seed_users_result;
105    insert_password_reset_token(
106        &mut conn,
107        sign_up_user,
108        Uuid::parse_str("5a831370-6b7e-4ece-b962-6bc31c28fe53")?,
109    )
110    .await?;
111
112    info!("inserting delete account email");
113
114    let delete_subject = Some("Account deletion code");
115    let delete_body = json!([
116        {
117            "type": "core/paragraph",
118            "isValid": true,
119            "clientId": "11111111-1111-1111-1111-111111111111",
120            "attributes": {
121                "content": "Hello, it seems you requested a code for deleting your account",
122                "drop_cap": false
123            },
124            "innerBlocks": []
125        },
126        {
127            "type": "core/paragraph",
128            "isValid": true,
129            "clientId": "22222222-2222-2222-2222-222222222222",
130            "attributes": {
131                "content": "Use this verification code to delete your account: {{CODE}}",
132                "drop_cap": false
133            },
134            "innerBlocks": []
135        },
136        {
137            "type": "core/paragraph",
138            "isValid": true,
139            "clientId": "33333333-3333-3333-3333-333333333333",
140            "attributes": {
141                "content": "If you did not request a code, please ignore this message.",
142                "drop_cap": false
143            },
144            "innerBlocks": []
145        }
146    ]);
147
148    let delete_template = EmailTemplateNew {
149        name: "delete-user-email".to_string(),
150        language: Some("en".to_string()),
151        content: Some(delete_body),
152    };
153
154    insert_email_template(&mut conn, None, delete_template, delete_subject).await?;
155
156    Ok(())
157}