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