1use headless_lms_models::{PKeyPolicy, user_details, users};
2use sqlx::{Pool, Postgres};
3use uuid::Uuid;
4
5#[derive(Clone, Copy)]
6pub struct SeedUsersResult {
7 pub admin_user_id: Uuid,
8 pub teacher_user_id: Uuid,
9 pub language_teacher_user_id: Uuid,
10 pub assistant_user_id: Uuid,
11 pub course_or_exam_creator_user_id: Uuid,
12 pub example_normal_user_ids: [Uuid; 4],
13 pub teaching_and_learning_services_user_id: Uuid,
14 pub student_without_research_consent: Uuid,
15 pub student_without_country: Uuid,
16 pub material_viewer_user_id: Uuid,
17 pub user_user_id: Uuid,
18 pub student_1_user_id: Uuid,
19 pub student_2_user_id: Uuid,
20 pub student_3_user_id: Uuid,
21 pub student_4_user_id: Uuid,
22 pub student_5_user_id: Uuid,
23 pub student_6_user_id: Uuid,
24 pub student_7_user_id: Uuid,
25 pub student_8_user_id: Uuid,
26 pub langs_user_id: Uuid,
27 pub sign_up_user: Uuid,
28}
29
30pub async fn seed_users(db_pool: Pool<Postgres>) -> anyhow::Result<SeedUsersResult> {
31 info!("inserting users");
32 let mut conn = db_pool.acquire().await?;
33
34 let admin_user_id = users::insert(
35 &mut conn,
36 PKeyPolicy::Fixed(Uuid::parse_str("02c79854-da22-4cfc-95c4-13038af25d2e")?),
37 "admin@example.com",
38 Some("Admin"),
39 Some("Example"),
40 )
41 .await?;
42 user_details::update_user_country(&mut conn, admin_user_id, "fi").await?;
43 let teacher_user_id = users::insert(
44 &mut conn,
45 PKeyPolicy::Fixed(Uuid::parse_str("90643204-7656-4570-bdd9-aad5d297f9ce")?),
46 "teacher@example.com",
47 Some("Teacher"),
48 Some("Example"),
49 )
50 .await?;
51 user_details::update_user_country(&mut conn, teacher_user_id, "fi").await?;
52
53 let language_teacher_user_id = users::insert(
54 &mut conn,
55 PKeyPolicy::Fixed(Uuid::parse_str("0fd8bd2d-cb4e-4035-b7db-89e798fe4df0")?),
56 "language.teacher@example.com",
57 Some("Language"),
58 Some("Example"),
59 )
60 .await?;
61 user_details::update_user_country(&mut conn, language_teacher_user_id, "fi").await?;
62
63 let material_viewer_user_id = users::insert(
64 &mut conn,
65 PKeyPolicy::Fixed(Uuid::parse_str("ee0753ae-9f4b-465a-b04b-66edf91b41a5")?),
66 "material.viewer@example.com",
67 Some("Material"),
68 Some("Viewer"),
69 )
70 .await?;
71 user_details::update_user_country(&mut conn, material_viewer_user_id, "fi").await?;
72
73 let assistant_user_id = users::insert(
74 &mut conn,
75 PKeyPolicy::Fixed(Uuid::parse_str("24342539-f1ba-453e-ae13-14aa418db921")?),
76 "assistant@example.com",
77 Some("Assistant"),
78 Some("Example"),
79 )
80 .await?;
81 user_details::update_user_country(&mut conn, assistant_user_id, "fi").await?;
82
83 let course_or_exam_creator_user_id = users::insert(
84 &mut conn,
85 PKeyPolicy::Fixed(Uuid::parse_str("c9f9f9f9-f9f9-f9f9-f9f9-f9f9f9f9f9f9")?),
86 "creator@example.com",
87 Some("Creator"),
88 Some("Example"),
89 )
90 .await?;
91 user_details::update_user_country(&mut conn, course_or_exam_creator_user_id, "fi").await?;
92
93 let user_user_id = users::insert(
94 &mut conn,
95 PKeyPolicy::Fixed(Uuid::parse_str("849b8d32-d5f8-4994-9d21-5aa6259585b1")?),
96 "user@example.com",
97 Some("User"),
98 Some("Example"),
99 )
100 .await?;
101 user_details::update_user_country(&mut conn, user_user_id, "fi").await?;
102
103 let student_1_user_id = users::insert(
104 &mut conn,
105 PKeyPolicy::Fixed(Uuid::parse_str("02364d40-2aac-4763-8a06-2381fd298d79")?),
106 "student1@example.com",
107 Some("User"),
108 Some("1"),
109 )
110 .await?;
111 user_details::update_user_country(&mut conn, student_1_user_id, "fi").await?;
112
113 let student_2_user_id = users::insert(
114 &mut conn,
115 PKeyPolicy::Fixed(Uuid::parse_str("d7d6246c-45a8-4ff4-bf4d-31dedfaac159")?),
116 "student2@example.com",
117 Some("User"),
118 Some("2"),
119 )
120 .await?;
121 user_details::update_user_country(&mut conn, student_2_user_id, "fi").await?;
122
123 let student_3_user_id = users::insert(
124 &mut conn,
125 PKeyPolicy::Fixed(Uuid::parse_str("6b9b61f2-012a-4dc2-9e35-5da81cd3936b")?),
126 "student3@example.com",
127 Some("User"),
128 Some("3"),
129 )
130 .await?;
131 user_details::update_user_country(&mut conn, student_3_user_id, "fi").await?;
132
133 let student_4_user_id = users::insert(
134 &mut conn,
135 PKeyPolicy::Fixed(Uuid::parse_str("bc403a82-1e8b-4274-acc8-d765648ef698")?),
136 "student4@example.com",
137 Some("User"),
138 Some("4"),
139 )
140 .await?;
141 user_details::update_user_country(&mut conn, student_4_user_id, "fi").await?;
142
143 let student_5_user_id = users::insert(
144 &mut conn,
145 PKeyPolicy::Fixed(Uuid::parse_str("7ba4beb1-abe8-4bad-8bb2-d012c55b310c")?),
146 "student5@example.com",
147 Some("User"),
148 Some("5"),
149 )
150 .await?;
151 user_details::update_user_country(&mut conn, student_5_user_id, "fi").await?;
152
153 let student_6_user_id = users::insert(
154 &mut conn,
155 PKeyPolicy::Fixed(Uuid::parse_str("4ba4beb1-abe8-4bad-8bb2-d012c55b310d")?),
156 "student6@example.com",
157 Some("User"),
158 Some("6"),
159 )
160 .await?;
161 user_details::update_user_country(&mut conn, student_6_user_id, "fi").await?;
162
163 let student_7_user_id = users::insert(
164 &mut conn,
165 PKeyPolicy::Fixed(Uuid::parse_str("4ba4beb1-abe8-4bad-8bb2-d012c55b310e")?),
166 "student7@example.com",
167 Some("User"),
168 Some("7"),
169 )
170 .await?;
171 user_details::update_user_country(&mut conn, student_7_user_id, "fi").await?;
172
173 let student_8_user_id = users::insert(
174 &mut conn,
175 PKeyPolicy::Fixed(Uuid::parse_str("4ba4beb1-abe8-4bad-8bb2-d012c55b310f")?),
176 "student8@example.com",
177 Some("User"),
178 Some("8"),
179 )
180 .await?;
181 user_details::update_user_country(&mut conn, student_8_user_id, "fi").await?;
182
183 let teaching_and_learning_services_user_id = users::insert(
184 &mut conn,
185 PKeyPolicy::Fixed(Uuid::parse_str("5d081ccb-1dab-4367-9549-267fd3f1dd9c")?),
186 "teaching-and-learning-services@example.com",
187 Some("Teaching"),
188 Some("And Learning"),
189 )
190 .await?;
191 user_details::update_user_country(&mut conn, teaching_and_learning_services_user_id, "fi")
192 .await?;
193
194 let langs_user_id = users::insert(
195 &mut conn,
196 PKeyPolicy::Fixed(Uuid::parse_str("c60ca874-bab9-452a-895f-02597cf60886")?),
197 "langs@example.com",
198 Some("langs"),
199 Some("Langs"),
200 )
201 .await?;
202 user_details::update_user_country(&mut conn, langs_user_id, "fi").await?;
203
204 let student_without_research_consent = users::insert(
205 &mut conn,
206 PKeyPolicy::Fixed(Uuid::parse_str("d08d2bd9-8c9b-4d46-84c4-d02f37c2b4c0")?),
207 "student-without-research-consent@example.com",
208 Some("User"),
209 Some("User4"),
210 )
211 .await?;
212 user_details::update_user_country(&mut conn, student_without_research_consent, "fi").await?;
213
214 let student_without_country = users::insert(
215 &mut conn,
216 PKeyPolicy::Fixed(Uuid::parse_str("88036435-9779-4b81-8d85-66767f529639")?),
217 "student-without-country@example.com",
218 Some("User"),
219 Some("User"),
220 )
221 .await?;
222
223 let sign_up_user = users::insert(
224 &mut conn,
225 PKeyPolicy::Fixed(Uuid::parse_str("fb3e9b9d-8870-47a5-b4a3-7087ff8e8355")?),
226 "sign-up-user@example.com",
227 Some("NewUser"),
228 Some("Signup"),
229 )
230 .await?;
231
232 let example_normal_user_ids: [Uuid; 4] = [
233 users::insert(
234 &mut conn,
235 PKeyPolicy::Fixed(Uuid::parse_str("00e249d8-345f-4eff-aedb-7bdc4c44c1d5")?),
236 "user_1@example.com",
237 Some("User1"),
238 Some("User1"),
239 )
240 .await?,
241 users::insert(
242 &mut conn,
243 PKeyPolicy::Fixed(Uuid::parse_str("8d7d6c8c-4c31-48ae-8e20-c68fa95c25cc")?),
244 "user_2@example.com",
245 Some("User2"),
246 Some("User2"),
247 )
248 .await?,
249 users::insert(
250 &mut conn,
251 PKeyPolicy::Fixed(Uuid::parse_str("fbeb9286-3dd8-4896-a6b8-3faffa3fabd6")?),
252 "user_3@example.com",
253 Some("User3"),
254 Some("User3"),
255 )
256 .await?,
257 users::insert(
258 &mut conn,
259 PKeyPolicy::Fixed(Uuid::parse_str("3524d694-7fa8-4e73-aa1a-de9a20fd514b")?),
260 "user_4@example.com",
261 Some("User4"),
262 Some("User4"),
263 )
264 .await?,
265 ];
266 for user_id in example_normal_user_ids {
267 user_details::update_user_country(&mut conn, user_id, "fi").await?;
268 }
269
270 Ok(SeedUsersResult {
271 admin_user_id,
272 teacher_user_id,
273 language_teacher_user_id,
274 assistant_user_id,
275 course_or_exam_creator_user_id,
276 example_normal_user_ids,
277 teaching_and_learning_services_user_id,
278 student_without_research_consent,
279 student_without_country,
280 sign_up_user,
281 material_viewer_user_id,
282 user_user_id,
283 student_1_user_id,
284 student_2_user_id,
285 student_3_user_id,
286 student_4_user_id,
287 student_5_user_id,
288 student_6_user_id,
289 student_7_user_id,
290 student_8_user_id,
291 langs_user_id,
292 })
293}