headless_lms_server/programs/seed/
seed_generic_emails.rs1use headless_lms_models::{
2 email_templates::{EmailTemplateNew, EmailTemplateType, 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 template_type: EmailTemplateType::ResetPasswordEmail,
55 language: Some("en".to_string()),
56 content: Some(english_body),
57 subject: english_subject.map(|s| s.to_string()),
58 };
59
60 insert_email_template(&mut conn, None, english_template, english_subject).await?;
61
62 let finnish_subject = Some("Salasanan palautuspyyntö");
63 let finnish_body = json!([
64 {
65 "type": "core/paragraph",
66 "isValid": true,
67 "clientId": "a9de49ff-919f-44b4-a085-9210ce0da94b",
68 "attributes": {
69 "content": "Hei, olet pyytänyt salasanan palautusta.",
70 "drop_cap": false
71 },
72 "innerBlocks": []
73 },
74 {
75 "type": "core/paragraph",
76 "isValid": true,
77 "clientId": "c145bae4-9ff5-4194-8913-50f8900c20c8",
78 "attributes": {
79 "content": "Voit palauttaa salasanasi tästä: {{RESET_LINK}}",
80 "drop_cap": false
81 },
82 "innerBlocks": []
83 },
84 {
85 "type": "core/paragraph",
86 "isValid": true,
87 "clientId": "ebd0d430-0ae3-4b85-9e8e-96481660ded4",
88 "attributes": {
89 "content": "Jos et pyytänyt salasanan palautusta, voit jättää tämän viestin huomiotta.",
90 "drop_cap": false
91 },
92 "innerBlocks": []
93 }
94 ]);
95
96 let finnish_template = EmailTemplateNew {
97 template_type: EmailTemplateType::ResetPasswordEmail,
98 language: Some("fi".to_string()),
99 content: Some(finnish_body),
100 subject: finnish_subject.map(|s| s.to_string()),
101 };
102
103 insert_email_template(&mut conn, None, finnish_template, finnish_subject).await?;
104
105 info!("inserting password reset token for user");
106 let SeedUsersResult { sign_up_user, .. } = seed_users_result;
107 insert_password_reset_token(
108 &mut conn,
109 sign_up_user,
110 Uuid::parse_str("5a831370-6b7e-4ece-b962-6bc31c28fe53")?,
111 )
112 .await?;
113
114 info!("inserting delete account email");
115
116 let delete_subject = Some("Account deletion code");
117 let delete_body = json!([
118 {
119 "type": "core/paragraph",
120 "isValid": true,
121 "clientId": "11111111-1111-1111-1111-111111111111",
122 "attributes": {
123 "content": "Hello, it seems you requested a code for deleting your account",
124 "drop_cap": false
125 },
126 "innerBlocks": []
127 },
128 {
129 "type": "core/paragraph",
130 "isValid": true,
131 "clientId": "22222222-2222-2222-2222-222222222222",
132 "attributes": {
133 "content": "Use this verification code to delete your account: {{CODE}}",
134 "drop_cap": false
135 },
136 "innerBlocks": []
137 },
138 {
139 "type": "core/paragraph",
140 "isValid": true,
141 "clientId": "33333333-3333-3333-3333-333333333333",
142 "attributes": {
143 "content": "If you did not request a code, please ignore this message.",
144 "drop_cap": false
145 },
146 "innerBlocks": []
147 }
148 ]);
149
150 let delete_template = EmailTemplateNew {
151 template_type: EmailTemplateType::DeleteUserEmail,
152 language: Some("en".to_string()),
153 content: Some(delete_body),
154 subject: delete_subject.map(|s| s.to_string()),
155 };
156
157 insert_email_template(&mut conn, None, delete_template, delete_subject).await?;
158
159 info!("inserting confirm email code email");
160
161 let confirm_subject = Some("Email verification code");
162 let confirm_body = json!([
163 {
164 "type": "core/paragraph",
165 "isValid": true,
166 "clientId": "44444444-4444-4444-4444-444444444444",
167 "attributes": {
168 "content": "Hello, please use this code to verify your email address",
169 "drop_cap": false
170 },
171 "innerBlocks": []
172 },
173 {
174 "type": "core/paragraph",
175 "isValid": true,
176 "clientId": "55555555-5555-5555-5555-555555555555",
177 "attributes": {
178 "content": "Your verification code is: {{CODE}}",
179 "drop_cap": false
180 },
181 "innerBlocks": []
182 },
183 {
184 "type": "core/paragraph",
185 "isValid": true,
186 "clientId": "66666666-6666-6666-6666-666666666666",
187 "attributes": {
188 "content": "If you did not request this code, please ignore this message.",
189 "drop_cap": false
190 },
191 "innerBlocks": []
192 }
193 ]);
194
195 let confirm_template = EmailTemplateNew {
196 template_type: EmailTemplateType::ConfirmEmailCode,
197 language: Some("en".to_string()),
198 content: Some(confirm_body),
199 subject: confirm_subject.map(|s| s.to_string()),
200 };
201
202 insert_email_template(&mut conn, None, confirm_template, confirm_subject).await?;
203
204 Ok(())
205}