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