headless_lms_server/programs/seed/
seed_users.rs

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}