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