source: iknow-api/Migrations/20251208203846_InitialCreate.Designer.cs@ c2f79d7

Last change on this file since c2f79d7 was c2f79d7, checked in by Stefan-Saveski <stefan@…>, 10 months ago

Refactor and enhance application structure

Enhanced error handling in AuthController with detailed exception handling for user registration. Updated UserDTO to improve JSON serialization and renamed enums for clarity. Introduced new entities (Major, PassedSubject, etc.) and seeded initial data in AppDbContext.

Replaced legacy migrations with 20251208203846_InitialCreate, reflecting the updated schema. Fixed typographical errors and improved JSON serialization in Program.cs with case-insensitive property matching and enum handling.

Refactored repository interfaces for better null safety. Improved debugging in AuthService and updated connection strings. Added the PassedSubject entity and cleaned up redundant code and unused imports for better maintainability.

  • Property mode set to 100644
File size: 22.4 KB
Line 
1// <auto-generated />
2using System;
3using Microsoft.EntityFrameworkCore;
4using Microsoft.EntityFrameworkCore.Infrastructure;
5using Microsoft.EntityFrameworkCore.Migrations;
6using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
7using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
8using iknow_api.Data;
9
10#nullable disable
11
12namespace iknow_api.Migrations
13{
14 [DbContext(typeof(AppDbContext))]
15 [Migration("20251208203846_InitialCreate")]
16 partial class InitialCreate
17 {
18 /// <inheritdoc />
19 protected override void BuildTargetModel(ModelBuilder modelBuilder)
20 {
21#pragma warning disable 612, 618
22 modelBuilder
23 .HasAnnotation("ProductVersion", "9.0.10")
24 .HasAnnotation("Relational:MaxIdentifierLength", 63);
25
26 NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
27
28 modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
29 {
30 b.Property<int>("Id")
31 .ValueGeneratedOnAdd()
32 .HasColumnType("integer");
33
34 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
35
36 b.Property<int>("UserId")
37 .HasColumnType("integer");
38
39 b.Property<string>("address")
40 .HasColumnType("text");
41
42 b.Property<string>("city")
43 .HasColumnType("text");
44
45 b.Property<string>("microsoftEmail")
46 .HasColumnType("text");
47
48 b.Property<string>("municipality")
49 .HasColumnType("text");
50
51 b.Property<string>("phoneNumber")
52 .HasColumnType("text");
53
54 b.HasKey("Id");
55
56 b.HasIndex("UserId")
57 .IsUnique();
58
59 b.ToTable("ContactInfo");
60 });
61
62 modelBuilder.Entity("iknow_api.Models.DependencySubject", b =>
63 {
64 b.Property<int>("SubjectId")
65 .HasColumnType("integer");
66
67 b.Property<int>("DependencyId")
68 .HasColumnType("integer");
69
70 b.HasKey("SubjectId", "DependencyId");
71
72 b.HasIndex("DependencyId");
73
74 b.ToTable("DependencySubjects");
75 });
76
77 modelBuilder.Entity("iknow_api.Models.Documents", b =>
78 {
79 b.Property<int>("Id")
80 .ValueGeneratedOnAdd()
81 .HasColumnType("integer");
82
83 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
84
85 b.Property<string>("body")
86 .HasColumnType("text");
87
88 b.Property<int>("cost")
89 .HasColumnType("integer");
90
91 b.Property<string>("name")
92 .HasColumnType("text");
93
94 b.HasKey("Id");
95
96 b.ToTable("Documents");
97 });
98
99 modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
100 {
101 b.Property<int>("Id")
102 .ValueGeneratedOnAdd()
103 .HasColumnType("integer");
104
105 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
106
107 b.Property<int>("MajorId")
108 .HasColumnType("integer");
109
110 b.Property<int>("QuotaType")
111 .HasColumnType("integer");
112
113 b.Property<int>("Type")
114 .HasColumnType("integer");
115
116 b.Property<int>("UserId")
117 .HasColumnType("integer");
118
119 b.Property<int>("Year")
120 .HasColumnType("integer");
121
122 b.HasKey("Id");
123
124 b.HasIndex("MajorId");
125
126 b.HasIndex("UserId");
127
128 b.ToTable("EnrolledSemesters");
129 });
130
131 modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
132 {
133 b.Property<int>("Id")
134 .ValueGeneratedOnAdd()
135 .HasColumnType("integer");
136
137 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
138
139 b.Property<int>("MajorId")
140 .HasColumnType("integer");
141
142 b.Property<int>("UserId")
143 .HasColumnType("integer");
144
145 b.Property<int>("enrollmentYear")
146 .HasColumnType("integer");
147
148 b.Property<int>("quota")
149 .HasColumnType("integer");
150
151 b.HasKey("Id");
152
153 b.HasIndex("MajorId");
154
155 b.HasIndex("UserId")
156 .IsUnique();
157
158 b.ToTable("EnrollmentInfo");
159 });
160
161 modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
162 {
163 b.Property<int>("Id")
164 .ValueGeneratedOnAdd()
165 .HasColumnType("integer");
166
167 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
168
169 b.Property<float>("GPA")
170 .HasColumnType("real");
171
172 b.Property<int>("UserId")
173 .HasColumnType("integer");
174
175 b.Property<int>("tip")
176 .HasColumnType("integer");
177
178 b.HasKey("Id");
179
180 b.HasIndex("UserId")
181 .IsUnique();
182
183 b.ToTable("HighSchool");
184 });
185
186 modelBuilder.Entity("iknow_api.Models.Major", b =>
187 {
188 b.Property<int>("Id")
189 .ValueGeneratedOnAdd()
190 .HasColumnType("integer");
191
192 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
193
194 b.Property<string>("Name")
195 .HasColumnType("text");
196
197 b.HasKey("Id");
198
199 b.ToTable("Majors");
200
201 b.HasData(
202 new
203 {
204 Id = 1,
205 Name = "PIT"
206 },
207 new
208 {
209 Id = 2,
210 Name = "SIIS"
211 },
212 new
213 {
214 Id = 3,
215 Name = "SEIS"
216 },
217 new
218 {
219 Id = 4,
220 Name = "KN"
221 });
222 });
223
224 modelBuilder.Entity("iknow_api.Models.MajorSubjects", b =>
225 {
226 b.Property<int>("MajorId")
227 .HasColumnType("integer");
228
229 b.Property<int>("SubjectId")
230 .HasColumnType("integer");
231
232 b.Property<int>("Akreditacija")
233 .HasColumnType("integer");
234
235 b.Property<int>("MandatorySemester")
236 .HasColumnType("integer");
237
238 b.HasKey("MajorId", "SubjectId");
239
240 b.HasIndex("SubjectId");
241
242 b.ToTable("MajorSubjects");
243 });
244
245 modelBuilder.Entity("iknow_api.Models.PassedSubject", b =>
246 {
247 b.Property<int>("Id")
248 .ValueGeneratedOnAdd()
249 .HasColumnType("integer");
250
251 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
252
253 b.Property<DateTime>("DatePassed")
254 .HasColumnType("timestamp with time zone");
255
256 b.Property<int>("Grade")
257 .HasColumnType("integer");
258
259 b.Property<int>("SemesterSubjectId")
260 .HasColumnType("integer");
261
262 b.HasKey("Id");
263
264 b.HasIndex("SemesterSubjectId")
265 .IsUnique();
266
267 b.ToTable("PassedSubjects");
268 });
269
270 modelBuilder.Entity("iknow_api.Models.Payment", b =>
271 {
272 b.Property<int>("UserId")
273 .HasColumnType("integer");
274
275 b.Property<int>("EnrollmentInfoId")
276 .HasColumnType("integer");
277
278 b.Property<int>("Id")
279 .HasColumnType("integer");
280
281 b.HasKey("UserId", "EnrollmentInfoId");
282
283 b.HasIndex("EnrollmentInfoId");
284
285 b.ToTable("Payment");
286 });
287
288 modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
289 {
290 b.Property<int>("Id")
291 .ValueGeneratedOnAdd()
292 .HasColumnType("integer");
293
294 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
295
296 b.Property<DateTime>("ExpiresAt")
297 .HasColumnType("timestamp with time zone");
298
299 b.Property<bool>("IsValid")
300 .HasColumnType("boolean");
301
302 b.Property<string>("Token")
303 .HasColumnType("text");
304
305 b.Property<int>("UserId")
306 .HasColumnType("integer");
307
308 b.HasKey("Id");
309
310 b.HasIndex("UserId");
311
312 b.ToTable("RefreshToken");
313 });
314
315 modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
316 {
317 b.Property<int>("Id")
318 .ValueGeneratedOnAdd()
319 .HasColumnType("integer");
320
321 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
322
323 b.Property<int>("EnrolledSemesterId")
324 .HasColumnType("integer");
325
326 b.Property<int>("ProfessorId")
327 .HasColumnType("integer");
328
329 b.Property<int>("SubjectId")
330 .HasColumnType("integer");
331
332 b.Property<int>("UserId")
333 .HasColumnType("integer");
334
335 b.HasKey("Id");
336
337 b.HasIndex("EnrolledSemesterId");
338
339 b.HasIndex("ProfessorId");
340
341 b.HasIndex("SubjectId");
342
343 b.HasIndex("UserId");
344
345 b.ToTable("SemesterSubject");
346 });
347
348 modelBuilder.Entity("iknow_api.Models.Subject", b =>
349 {
350 b.Property<int>("Id")
351 .ValueGeneratedOnAdd()
352 .HasColumnType("integer");
353
354 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
355
356 b.Property<int?>("AwardedCredits")
357 .HasColumnType("integer");
358
359 b.Property<string>("Code")
360 .HasColumnType("text");
361
362 b.Property<int?>("DependencyCredit")
363 .HasColumnType("integer");
364
365 b.Property<string>("Name")
366 .HasColumnType("text");
367
368 b.HasKey("Id");
369
370 b.ToTable("Subjects");
371 });
372
373 modelBuilder.Entity("iknow_api.Models.User", b =>
374 {
375 b.Property<int>("Id")
376 .ValueGeneratedOnAdd()
377 .HasColumnType("integer");
378
379 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
380
381 b.Property<DateTime>("Bday")
382 .HasColumnType("timestamp with time zone");
383
384 b.Property<DateTime>("CreatedAt")
385 .HasColumnType("timestamp with time zone");
386
387 b.Property<string>("EMBG")
388 .HasColumnType("text");
389
390 b.Property<string>("Email")
391 .HasColumnType("text");
392
393 b.Property<string>("Index")
394 .HasColumnType("text");
395
396 b.Property<string>("Name")
397 .HasColumnType("text");
398
399 b.Property<string>("PasswordHash")
400 .HasColumnType("text");
401
402 b.Property<int>("Role")
403 .HasColumnType("integer");
404
405 b.Property<string>("Surname")
406 .HasColumnType("text");
407
408 b.HasKey("Id");
409
410 b.ToTable("User");
411 });
412
413 modelBuilder.Entity("iknow_api.Models.UserDocuments", b =>
414 {
415 b.Property<int>("UserId")
416 .HasColumnType("integer");
417
418 b.Property<int>("DocumentId")
419 .HasColumnType("integer");
420
421 b.HasKey("UserId", "DocumentId");
422
423 b.HasIndex("DocumentId");
424
425 b.ToTable("UserDocuments");
426 });
427
428 modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
429 {
430 b.HasOne("iknow_api.Models.User", "User")
431 .WithOne("ContactInfo")
432 .HasForeignKey("iknow_api.Models.ContactInfo", "UserId")
433 .OnDelete(DeleteBehavior.Cascade)
434 .IsRequired();
435
436 b.Navigation("User");
437 });
438
439 modelBuilder.Entity("iknow_api.Models.DependencySubject", b =>
440 {
441 b.HasOne("iknow_api.Models.Subject", "Dependency")
442 .WithMany("Dependents")
443 .HasForeignKey("DependencyId")
444 .OnDelete(DeleteBehavior.Restrict)
445 .IsRequired();
446
447 b.HasOne("iknow_api.Models.Subject", "Subject")
448 .WithMany("Dependencies")
449 .HasForeignKey("SubjectId")
450 .OnDelete(DeleteBehavior.Restrict)
451 .IsRequired();
452
453 b.Navigation("Dependency");
454
455 b.Navigation("Subject");
456 });
457
458 modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
459 {
460 b.HasOne("iknow_api.Models.Major", "Major")
461 .WithMany()
462 .HasForeignKey("MajorId")
463 .OnDelete(DeleteBehavior.Cascade)
464 .IsRequired();
465
466 b.HasOne("iknow_api.Models.User", "User")
467 .WithMany()
468 .HasForeignKey("UserId")
469 .OnDelete(DeleteBehavior.Cascade)
470 .IsRequired();
471
472 b.Navigation("Major");
473
474 b.Navigation("User");
475 });
476
477 modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
478 {
479 b.HasOne("iknow_api.Models.Major", "Major")
480 .WithMany()
481 .HasForeignKey("MajorId")
482 .OnDelete(DeleteBehavior.Cascade)
483 .IsRequired();
484
485 b.HasOne("iknow_api.Models.User", "User")
486 .WithOne("EnrollmentInfo")
487 .HasForeignKey("iknow_api.Models.EnrollmentInfo", "UserId")
488 .OnDelete(DeleteBehavior.Cascade)
489 .IsRequired();
490
491 b.Navigation("Major");
492
493 b.Navigation("User");
494 });
495
496 modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
497 {
498 b.HasOne("iknow_api.Models.User", "User")
499 .WithOne("HighSchool")
500 .HasForeignKey("iknow_api.Models.HighSchool", "UserId")
501 .OnDelete(DeleteBehavior.Cascade)
502 .IsRequired();
503
504 b.Navigation("User");
505 });
506
507 modelBuilder.Entity("iknow_api.Models.MajorSubjects", b =>
508 {
509 b.HasOne("iknow_api.Models.Major", "Majors")
510 .WithMany("Subjects")
511 .HasForeignKey("MajorId")
512 .OnDelete(DeleteBehavior.Cascade)
513 .IsRequired();
514
515 b.HasOne("iknow_api.Models.Subject", "Subjects")
516 .WithMany("Majors")
517 .HasForeignKey("SubjectId")
518 .OnDelete(DeleteBehavior.Cascade)
519 .IsRequired();
520
521 b.Navigation("Majors");
522
523 b.Navigation("Subjects");
524 });
525
526 modelBuilder.Entity("iknow_api.Models.PassedSubject", b =>
527 {
528 b.HasOne("iknow_api.Models.SemesterSubject", "SemesterSubject")
529 .WithOne("PassedSubject")
530 .HasForeignKey("iknow_api.Models.PassedSubject", "SemesterSubjectId")
531 .OnDelete(DeleteBehavior.Cascade)
532 .IsRequired();
533
534 b.Navigation("SemesterSubject");
535 });
536
537 modelBuilder.Entity("iknow_api.Models.Payment", b =>
538 {
539 b.HasOne("iknow_api.Models.EnrolledSemesters", "EnrolledSemesters")
540 .WithMany("Users")
541 .HasForeignKey("EnrollmentInfoId")
542 .OnDelete(DeleteBehavior.Cascade)
543 .IsRequired();
544
545 b.HasOne("iknow_api.Models.User", "User")
546 .WithMany("EnrolledSemesters")
547 .HasForeignKey("UserId")
548 .OnDelete(DeleteBehavior.Cascade)
549 .IsRequired();
550
551 b.Navigation("EnrolledSemesters");
552
553 b.Navigation("User");
554 });
555
556 modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
557 {
558 b.HasOne("iknow_api.Models.User", "User")
559 .WithMany()
560 .HasForeignKey("UserId")
561 .OnDelete(DeleteBehavior.Cascade)
562 .IsRequired();
563
564 b.Navigation("User");
565 });
566
567 modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
568 {
569 b.HasOne("iknow_api.Models.EnrolledSemesters", "EnrolledSemester")
570 .WithMany("SemesterSubjects")
571 .HasForeignKey("EnrolledSemesterId")
572 .OnDelete(DeleteBehavior.Restrict)
573 .IsRequired();
574
575 b.HasOne("iknow_api.Models.User", "Professor")
576 .WithMany("TeachingSubjects")
577 .HasForeignKey("ProfessorId")
578 .OnDelete(DeleteBehavior.Restrict)
579 .IsRequired();
580
581 b.HasOne("iknow_api.Models.Subject", "Subject")
582 .WithMany("SemesterSubjects")
583 .HasForeignKey("SubjectId")
584 .OnDelete(DeleteBehavior.Restrict)
585 .IsRequired();
586
587 b.HasOne("iknow_api.Models.User", "User")
588 .WithMany("EnrolledSemesterUserSubjects")
589 .HasForeignKey("UserId")
590 .OnDelete(DeleteBehavior.Restrict)
591 .IsRequired();
592
593 b.Navigation("EnrolledSemester");
594
595 b.Navigation("Professor");
596
597 b.Navigation("Subject");
598
599 b.Navigation("User");
600 });
601
602 modelBuilder.Entity("iknow_api.Models.UserDocuments", b =>
603 {
604 b.HasOne("iknow_api.Models.Documents", "Documents")
605 .WithMany("User")
606 .HasForeignKey("DocumentId")
607 .OnDelete(DeleteBehavior.Cascade)
608 .IsRequired();
609
610 b.HasOne("iknow_api.Models.User", "User")
611 .WithMany("Documents")
612 .HasForeignKey("UserId")
613 .OnDelete(DeleteBehavior.Cascade)
614 .IsRequired();
615
616 b.Navigation("Documents");
617
618 b.Navigation("User");
619 });
620
621 modelBuilder.Entity("iknow_api.Models.Documents", b =>
622 {
623 b.Navigation("User");
624 });
625
626 modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
627 {
628 b.Navigation("SemesterSubjects");
629
630 b.Navigation("Users");
631 });
632
633 modelBuilder.Entity("iknow_api.Models.Major", b =>
634 {
635 b.Navigation("Subjects");
636 });
637
638 modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
639 {
640 b.Navigation("PassedSubject");
641 });
642
643 modelBuilder.Entity("iknow_api.Models.Subject", b =>
644 {
645 b.Navigation("Dependencies");
646
647 b.Navigation("Dependents");
648
649 b.Navigation("Majors");
650
651 b.Navigation("SemesterSubjects");
652 });
653
654 modelBuilder.Entity("iknow_api.Models.User", b =>
655 {
656 b.Navigation("ContactInfo");
657
658 b.Navigation("Documents");
659
660 b.Navigation("EnrolledSemesterUserSubjects");
661
662 b.Navigation("EnrolledSemesters");
663
664 b.Navigation("EnrollmentInfo");
665
666 b.Navigation("HighSchool");
667
668 b.Navigation("TeachingSubjects");
669 });
670#pragma warning restore 612, 618
671 }
672 }
673}
Note: See TracBrowser for help on using the repository browser.