headless_lms_server/programs/seed/
seed_generic_emails.rs1use 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}