< Summary - Syki

Information
Class: Syki.Back.Database.SykiDbContext
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Database/SykiDbContext.cs
Tag: 21_17346963026
Line coverage
100%
Covered lines: 64
Uncovered lines: 0
Coverable lines: 64
Total lines: 128
Line coverage: 100%
Branch coverage
90%
Covered branches: 9
Total branches: 10
Branch coverage: 90%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Institutions()100%11100%
get_Configs()100%11100%
get_Campi()100%11100%
get_Courses()100%11100%
get_Disciplines()100%11100%
get_CourseCurriculums()100%11100%
get_CoursesDisciplines()100%11100%
get_CourseCurriculumDisciplines()100%11100%
get_CourseOfferings()100%11100%
get_AcademicPeriods()100%11100%
get_EnrollmentPeriods()100%11100%
get_Notifications()100%11100%
get_UserNotifications()100%11100%
get_UserRegisters()100%11100%
get_ResetPasswordTokens()100%11100%
get_Webhooks()100%11100%
get_WebhookCalls()100%11100%
get_Classes()100%11100%
get_Classrooms()100%11100%
get_ClassroomsClasses()100%11100%
get_Schedules()100%11100%
get_Teachers()100%11100%
get_TeachersDisciplines()100%11100%
get_TeachersCampi()100%11100%
get_Students()100%11100%
get_ClassesStudents()100%11100%
get_Lessons()100%11100%
get_Attendances()100%11100%
get_ClassActivities()100%11100%
get_ClassActivityWorks()100%11100%
get_AuditLogs()100%11100%
get_FeatureFlags()100%11100%
get_DomainEvents()100%11100%
get_Commands()100%11100%
get_UserId()100%11100%
get_InstitutionId()100%11100%
OnConfiguring(...)100%11100%
OnModelCreating(...)90%1010100%
ConfigureConventions(...)100%11100%

File(s)

/home/runner/work/syki/syki/Back/Database/SykiDbContext.cs

#LineLine coverage
 1using Npgsql;
 2using Syki.Back.Audit;
 3using Audit.EntityFramework;
 4using Syki.Back.Database.Interceptors;
 5using Syki.Back.Features.Cross.CreateUser;
 6using Syki.Back.Features.Academic.CreateClass;
 7using Syki.Back.Features.Academic.CreateCourse;
 8using Syki.Back.Features.Academic.CallWebhooks;
 9using Syki.Back.Features.Academic.CreateCampus;
 10using Syki.Back.Features.Academic.CreateStudent;
 11using Syki.Back.Features.Academic.CreateTeacher;
 12using Microsoft.EntityFrameworkCore.Diagnostics;
 13using Syki.Back.Features.Cross.CreateInstitution;
 14using Syki.Back.Features.Cross.SetupFeatureFlags;
 15using Syki.Back.Features.Academic.CreateClassroom;
 16using Syki.Back.Features.Academic.CreateDiscipline;
 17using Syki.Back.Features.Academic.CreateNotification;
 18using Syki.Back.Features.Teacher.CreateClassActivity;
 19using Syki.Back.Features.Cross.SendResetPasswordToken;
 20using Syki.Back.Features.Academic.CreateCourseOffering;
 21using Syki.Back.Features.Academic.CreateAcademicPeriod;
 22using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
 23using Syki.Back.Features.Teacher.CreateLessonAttendance;
 24using Syki.Back.Features.Cross.CreatePendingUserRegister;
 25using Syki.Back.Features.Academic.CreateCourseCurriculum;
 26using Syki.Back.Features.Academic.CreateEnrollmentPeriod;
 27using Syki.Back.Features.Student.CreateStudentEnrollment;
 28using Syki.Back.Features.Student.CreateClassActivityWork;
 29using Syki.Back.Features.Academic.AssignClassToClassroom;
 30using Syki.Back.Features.Academic.CreateWebhookSubscription;
 31
 32namespace Syki.Back.Database;
 33
 1504634public class SykiDbContext(DbContextOptions<SykiDbContext> options, NpgsqlDataSource npgsqlDataSource) : IdentityDbConte
 35{
 1619836    public DbSet<Institution> Institutions { get; set; }
 1504837    public DbSet<InstitutionConfigs> Configs { get; set; }
 38
 1643039    public DbSet<Campus> Campi { get; set; }
 1617240    public DbSet<Course> Courses { get; set; }
 1587841    public DbSet<Discipline> Disciplines { get; set; }
 1621642    public DbSet<CourseCurriculum> CourseCurriculums { get; set; }
 1559443    public DbSet<CourseDiscipline> CoursesDisciplines { get; set; }
 1506044    public DbSet<CourseCurriculumDiscipline> CourseCurriculumDisciplines { get; set; }
 1593645    public DbSet<CourseOffering> CourseOfferings { get; set; }
 1697246    public DbSet<AcademicPeriod> AcademicPeriods { get; set; }
 1564247    public DbSet<EnrollmentPeriod> EnrollmentPeriods { get; set; }
 48
 1550449    public DbSet<Notification> Notifications { get; set; }
 1554650    public DbSet<UserNotification> UserNotifications { get; set; }
 1779451    public DbSet<UserRegister> UserRegisters { get; set; }
 1646652    public DbSet<ResetPasswordToken> ResetPasswordTokens { get; set; }
 53
 1536854    public DbSet<WebhookSubscription> Webhooks { get; set; }
 1504655    public DbSet<WebhookCall> WebhookCalls { get; set; }
 56
 1728257    public DbSet<Class> Classes { get; set; }
 1506058    public DbSet<Classroom> Classrooms { get; set; }
 1505859    public DbSet<ClassroomClass> ClassroomsClasses { get; set; }
 1505460    public DbSet<Schedule> Schedules { get; set; }
 1608661    public DbSet<SykiTeacher> Teachers { get; set; }
 1565262    public DbSet<TeacherDiscipline> TeachersDisciplines { get; set; }
 1566463    public DbSet<TeacherCampus> TeachersCampi { get; set; }
 1587264    public DbSet<SykiStudent> Students { get; set; }
 1556065    public DbSet<ClassStudent> ClassesStudents { get; set; }
 1530266    public DbSet<ClassLesson> Lessons { get; set; }
 1514267    public DbSet<ClassLessonAttendance> Attendances { get; set; }
 1533468    public DbSet<ClassActivity> ClassActivities { get; set; }
 1511669    public DbSet<ClassActivityWork> ClassActivityWorks { get; set; }
 70
 1505071    public DbSet<AuditLog> AuditLogs { get; set; }
 1505072    public DbSet<FeatureFlags> FeatureFlags { get; set; }
 2025473    public DbSet<DomainEvent> DomainEvents { get; set; }
 2000074    public DbSet<Command> Commands { get; set; }
 75
 560476    public Guid UserId { get; set; }
 1551677    public Guid InstitutionId { get; set; }
 78
 79    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
 80    {
 1490481        optionsBuilder.UseSnakeCaseNamingConvention();
 1490482        optionsBuilder.UseNpgsql(
 1490483            npgsqlDataSource,
 1490484            x => x.MigrationsHistoryTable("migrations", "syki")
 1490485        );
 86
 2980887        optionsBuilder.ConfigureWarnings(w => w.Ignore(RelationalEventId.PendingModelChangesWarning));
 88
 1490489        optionsBuilder.AddInterceptors(new SetBatchSizeInterceptor());
 1490490        optionsBuilder.AddInterceptors(new AuditSaveChangesInterceptor());
 1490491        optionsBuilder.AddInterceptors(new SaveDomainEventsInterceptor());
 1490492        optionsBuilder.AddInterceptors(new CommandsDelayInterceptor());
 1490493    }
 94
 95    protected override void OnModelCreating(ModelBuilder builder)
 96    {
 297        base.OnModelCreating(builder);
 98
 299        builder.HasDefaultSchema("syki");
 100
 2101        builder.ApplyConfigurationsFromAssembly(GetType().Assembly);
 102
 200103        foreach (var entity in builder.Model.GetEntityTypes())
 104        {
 98105            if (entity.GetTableName().IsEmpty()) continue;
 106
 98107            entity.SetTableName(entity.GetTableName().ToSnakeCase().Replace("asp_net_", ""));
 108
 468109            foreach (var fk in entity.GetForeignKeys())
 110            {
 136111                fk.SetConstraintName(fk.GetConstraintName().Replace("1", ""));
 112            }
 113
 428114            foreach (var index in entity.GetIndexes())
 115            {
 116116                index.SetDatabaseName(index.GetDatabaseName()?.ToSnakeCase());
 117            }
 118        }
 2119    }
 120
 121    protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
 122    {
 2123        configurationBuilder.Properties<Enum>().HaveConversion<string>();
 2124        configurationBuilder.Properties<CommandId>().HaveConversion<CommandId.CommandIdEfCoreValueConverter>();
 2125        configurationBuilder.Properties<DomainEventId>().HaveConversion<DomainEventId.DomainEventIdEfCoreValueConverter>
 2126        configurationBuilder.Properties<CommandBatchId>().HaveConversion<CommandBatchId.CommandBatchIdEfCoreValueConvert
 2127    }
 128}