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 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}