< Summary - Syki

Line coverage
96%
Covered lines: 222
Uncovered lines: 9
Coverable lines: 231
Total lines: 569
Line coverage: 96.1%
Branch coverage
75%
Covered branches: 18
Total branches: 24
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
File 1: get_UserActivities()100%11100%
File 1: ConfigureActivities(...)100%11100%
File 1: RecordSuccess(...)100%11100%
File 1: RecordInfo(...)100%210%
File 1: RecordError(...)100%210%
File 1: Record(...)50%88100%
File 2: ConfigureAudit(...)100%11100%
File 3: get_Campi()100%11100%
File 3: ConfigureCampi(...)100%11100%
File 4: get_Classes()100%11100%
File 4: get_Schedules()100%11100%
File 4: get_ClassLessons()100%11100%
File 4: get_ClassLessonAttendances()100%11100%
File 4: ConfigureClasses(...)100%11100%
File 5: get_Classrooms()100%11100%
File 5: ConfigureClassrooms(...)100%11100%
File 6: get_HasPendingCommands()100%11100%
File 6: get_CommandLogs()100%11100%
File 6: get_Commands()100%11100%
File 6: ConfigureCommands(...)100%11100%
File 6: AddCommand(...)50%22100%
File 6: AddCommand(...)100%22100%
File 7: get_CourseCurriculums()100%11100%
File 7: get_CourseCurriculumDisciplines()100%11100%
File 7: ConfigureCourseCurriculums(...)100%11100%
File 8: get_CourseOfferings()100%11100%
File 8: ConfigureCourseOfferings(...)100%11100%
File 9: get_Courses()100%11100%
File 9: get_CoursesDisciplines()100%11100%
File 9: ConfigureCourses(...)100%11100%
File 10: .ctor(...)100%11100%
File 10: get_Cache()100%11100%
File 10: get_RequestUser()100%11100%
File 10: get_ActivityId()100%11100%
File 10: get_Operation()100%11100%
File 10: get_DataProtectionKeys()100%11100%
File 10: OnConfiguring(...)100%11100%
File 10: OnModelCreating(...)100%11100%
File 10: ConfigureDatabaseNames(...)91.66%1212100%
File 10: GetOpenConnectionAsync()100%11100%
File 10: SaveChangesAsync()100%11100%
File 11: get_Disciplines()100%11100%
File 11: ConfigureDisciplines(...)100%11100%
File 12: get_WebMagicLinks()100%11100%
File 12: get_ResetPasswordTokens()100%11100%
File 12: get_WebSsoConfigurations()100%11100%
File 12: get_WebSsoAllowedDomains()100%11100%
File 12: get_UserSocialLogins()100%11100%
File 12: ConfigureIdentity(...)100%11100%
File 12: GetUserRole()100%11100%
File 12: GetDirectorRole()100%11100%
File 12: <GetDirectorRole()100%11100%
File 12: GetTeacherRole()100%11100%
File 12: <GetTeacherRole()100%11100%
File 12: GetStudentRole()100%11100%
File 12: <GetStudentRole()100%11100%
File 12: GetActiveSsoConfigForSchemeAsync()100%210%
File 12: EmailRequiresSsoAsync()100%210%
File 13: get_Institutions()100%11100%
File 13: ConfigureInstitutions(...)100%11100%
File 14: get_Notifications()100%11100%
File 14: get_UserNotifications()100%11100%
File 14: ConfigureNotifications(...)100%11100%
File 15: get_AcademicPeriods()100%11100%
File 15: ConfigurePeriods(...)100%11100%
File 16: get_Students()100%11100%
File 16: get_StudentCourseEnrollments()100%11100%
File 16: ConfigureStudents(...)100%11100%
File 17: get_Teachers()100%11100%
File 17: get_TeachersCampi()100%11100%
File 17: get_TeachersDisciplines()100%11100%
File 17: ConfigureTeachers(...)100%11100%
File 18: get_WebhookCalls()100%11100%
File 18: get_WebhookCallAttempts()100%11100%
File 18: get_WebhookSubscriptions()100%11100%
File 18: get_ReceivedWebhookEvents()100%11100%
File 18: ConfigureWebhooks(...)100%11100%

File(s)

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

#LineLine coverage
 1using Syki.Back.Domain.Activities;
 2using Syki.Back.Database.Activities;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 63888    public DbSet<UserActivity> UserActivities { get; set; }
 9
 10    private static void ConfigureActivities(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new UserActivityDbConfig());
 413    }
 14
 15    public void RecordSuccess(UserActivityType type, int? userId = null, int? institutionId = null, object? metadata = n
 16    {
 1617        Record(UserActivitySeverity.Success, type, userId, institutionId, metadata);
 1618    }
 19
 20    public void RecordInfo(UserActivityType type, int? userId = null, int? institutionId = null, object? metadata = null
 21    {
 022        Record(UserActivitySeverity.Info, type, userId, institutionId, metadata);
 023    }
 24
 25    public void RecordError(UserActivityType type, int? userId = null, int? institutionId = null, object? metadata = nul
 26    {
 027        Record(UserActivitySeverity.Error, type, userId, institutionId, metadata);
 028    }
 29
 30    private void Record(UserActivitySeverity severity, UserActivityType type, int? userId = null, int? institutionId = n
 31    {
 1632        var activity = new UserActivity(
 1633            severity,
 1634            type,
 1635            userId ?? (RequestUser.Id > 0 ? RequestUser.Id : null),
 1636            institutionId ?? (RequestUser.InstitutionId > 0 ? RequestUser.InstitutionId : null),
 1637            metadata
 1638        );
 1639        UserActivities.Add(activity);
 1640    }
 41}

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

#LineLine coverage
 1using Syki.Back.Audit;
 2
 3namespace Syki.Back.Database;
 4
 5public partial class SykiDbContext
 6{
 7    private static void ConfigureAudit(ModelBuilder modelBuilder)
 8    {
 49        modelBuilder.ApplyConfiguration(new AuditTrailDbConfig());
 410    }
 11}

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

#LineLine coverage
 1using Syki.Back.Domain.Campi;
 2using Syki.Back.Database.Campi;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 64188    public DbSet<Campus> Campi { get; set; }
 9
 10    private static void ConfigureCampi(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new CampusDbConfig());
 413    }
 14}

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

#LineLine coverage
 1using Syki.Back.Domain.Classes;
 2using Syki.Back.Database.Classes;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 63808    public DbSet<Class> Classes { get; set; }
 63729    public DbSet<Schedule> Schedules { get; set; }
 637210    public DbSet<ClassLesson> ClassLessons { get; set; }
 637211    public DbSet<ClassLessonAttendance> ClassLessonAttendances { get; set; }
 12
 13    private static void ConfigureClasses(ModelBuilder modelBuilder)
 14    {
 415        modelBuilder.ApplyConfiguration(new ClassDbConfig());
 416        modelBuilder.ApplyConfiguration(new ScheduleDbConfig());
 417        modelBuilder.ApplyConfiguration(new ClassLessonDbConfig());
 418        modelBuilder.ApplyConfiguration(new ClassLessonAttendanceDbConfig());
 419    }
 20}

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

#LineLine coverage
 1using Syki.Back.Domain.Classrooms;
 2using Syki.Back.Database.Classrooms;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 63748    public DbSet<Classroom> Classrooms { get; set; }
 9
 10    private static void ConfigureClassrooms(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new ClassroomConfig());
 413    }
 14}

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

#LineLine coverage
 1using System.Diagnostics;
 2using Syki.Back.Database.Commands;
 3using Syki.Back.Domain.Institutions;
 4using Syki.Back.Commands.Domain.Commands;
 5
 6namespace Syki.Back.Database;
 7
 8public partial class SykiDbContext
 9{
 471010    public bool HasPendingCommands { get; set; }
 790411    public List<string> CommandLogs { get; set; } = [];
 12
 798213    public DbSet<Command> Commands { get; set; }
 14
 15    private static void ConfigureCommands(ModelBuilder modelBuilder)
 16    {
 417        modelBuilder.ApplyConfiguration(new CommandDbConfig());
 418        modelBuilder.ApplyConfiguration(new CommandBatchDbConfig());
 419    }
 20
 21    public Command AddCommand(
 22        Institution institution,
 23        ICommand command,
 24        int? parentId = null,
 25        int? originalId = null,
 26        int? batchId = null,
 27        int? delaySeconds = null,
 28        int maxRetries = 0,
 29        int baseDelaySeconds = 5,
 30        BackoffStrategy backoffStrategy = BackoffStrategy.None)
 31    {
 72432        var activityId = Activity.Current?.Id;
 33
 72434        HasPendingCommands = true;
 35
 72436        return Add(
 72437            new Command(
 72438                institution,
 72439                command,
 72440                parentId: parentId,
 72441                originalId: originalId,
 72442                batchId: batchId,
 72443                delaySeconds: delaySeconds,
 72444                activityId: activityId,
 72445                maxRetries: maxRetries,
 72446                backoffStrategy: backoffStrategy,
 72447                baseDelaySeconds: baseDelaySeconds
 72448            )
 72449        ).Entity;
 50    }
 51
 52    public Command AddCommand(
 53        int institutionId,
 54        ICommand command,
 55        int? parentId = null,
 56        int? originalId = null,
 57        int? batchId = null,
 58        int? delaySeconds = null,
 59        int maxRetries = 0,
 60        int baseDelaySeconds = 5,
 61        BackoffStrategy backoffStrategy = BackoffStrategy.None)
 62    {
 4263        var activityId = Activity.Current?.Id;
 64
 4265        HasPendingCommands = true;
 66
 4267        return Add(
 4268            new Command(
 4269                institutionId,
 4270                command,
 4271                parentId: parentId,
 4272                originalId: originalId,
 4273                batchId: batchId,
 4274                delaySeconds: delaySeconds,
 4275                activityId: activityId,
 4276                maxRetries: maxRetries,
 4277                backoffStrategy: backoffStrategy,
 4278                baseDelaySeconds: baseDelaySeconds
 4279            )
 4280        ).Entity;
 81    }
 82}

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

#LineLine coverage
 1using Syki.Back.Domain.CourseCurriculums;
 2using Syki.Back.Database.CourseCurriculums;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 64028    public DbSet<CourseCurriculum> CourseCurriculums { get; set; }
 63769    public DbSet<CourseCurriculumDiscipline> CourseCurriculumDisciplines { get; set; }
 10
 11    private static void ConfigureCourseCurriculums(ModelBuilder modelBuilder)
 12    {
 413        modelBuilder.ApplyConfiguration(new CourseCurriculumDbConfig());
 414        modelBuilder.ApplyConfiguration(new CourseCurriculumDisciplineDbConfig());
 415    }
 16}

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

#LineLine coverage
 1using Syki.Back.Domain.CourseOfferings;
 2using Syki.Back.Database.CourseOfferings;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 63808    public DbSet<CourseOffering> CourseOfferings { get; set; }
 9
 10    private static void ConfigureCourseOfferings(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new CourseOfferingDbConfig());
 413    }
 14}

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

#LineLine coverage
 1using Syki.Back.Domain.Courses;
 2using Syki.Back.Database.Courses;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 68088    public DbSet<Course> Courses { get; set; }
 64309    public DbSet<CourseDiscipline> CoursesDisciplines { get; set; }
 10
 11    private static void ConfigureCourses(ModelBuilder modelBuilder)
 12    {
 413        modelBuilder.ApplyConfiguration(new CourseDbConfig());
 414        modelBuilder.ApplyConfiguration(new CourseDisciplineDbConfig());
 415    }
 16}

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

#LineLine coverage
 1using Npgsql;
 2using System.Data.Common;
 3using Syki.Back.Auth.Users;
 4using Audit.EntityFramework;
 5using Syki.Back.Domain.Identity;
 6using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
 7using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore;
 8
 9namespace Syki.Back.Database;
 10
 11public partial class SykiDbContext(DbContextOptions<SykiDbContext> options, NpgsqlDataSource npgsqlDataSource, HybridCac
 637212    : IdentityDbContext<SykiUser, SykiRole, int, SykiUserClaim, SykiUserRole, SykiUserLogin, SykiRoleClaim, SykiUserToke
 13{
 729414    public HybridCache Cache { get; set; } = cache;
 15
 2787616    public RequestUser RequestUser { get; set; } = new();
 17
 1076418    public string ActivityId { get; set; }
 1076419    public string Operation { get; set; }
 20
 637821    public DbSet<DataProtectionKey> DataProtectionKeys { get; set; }
 22
 23    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
 24    {
 547225        optionsBuilder.UseSnakeCaseNamingConvention();
 1094426        optionsBuilder.UseNpgsql(npgsqlDataSource, x => x.MigrationsHistoryTable("migrations", DbSchemas.Syki));
 27
 547228        optionsBuilder.AddInterceptors(new AuditSaveChangesInterceptor());
 547229    }
 30
 31    protected override void OnModelCreating(ModelBuilder modelBuilder)
 32    {
 433        base.OnModelCreating(modelBuilder);
 34
 435        ConfigureAudit(modelBuilder);
 436        ConfigureCampi(modelBuilder);
 437        ConfigureClasses(modelBuilder);
 438        ConfigureCourses(modelBuilder);
 439        ConfigurePeriods(modelBuilder);
 440        ConfigureTeachers(modelBuilder);
 441        ConfigureStudents(modelBuilder);
 442        ConfigureCommands(modelBuilder);
 443        ConfigureIdentity(modelBuilder);
 444        ConfigureWebhooks(modelBuilder);
 445        ConfigureActivities(modelBuilder);
 446        ConfigureClassrooms(modelBuilder);
 447        ConfigureDisciplines(modelBuilder);
 448        ConfigureInstitutions(modelBuilder);
 449        ConfigureNotifications(modelBuilder);
 450        ConfigureCourseOfferings(modelBuilder);
 451        ConfigureCourseCurriculums(modelBuilder);
 52
 453        ConfigureDatabaseNames(modelBuilder);
 454    }
 55
 56    private static void ConfigureDatabaseNames(ModelBuilder modelBuilder)
 57    {
 36858        foreach (var entity in modelBuilder.Model.GetEntityTypes())
 59        {
 18060            if (entity.GetTableName().IsEmpty()) continue;
 61
 18062            entity.SetTableName(entity.GetTableName().ToSnakeCase().Replace("asp_net_", ""));
 63
 88064            foreach (var fk in entity.GetForeignKeys())
 65            {
 26066                if (fk.GetConstraintName().HasValue())
 67                {
 26068                    fk.SetConstraintName(fk.GetConstraintName()!.Replace("~", "").Replace("1", ""));
 69                }
 70            }
 71
 88872            foreach (var index in entity.GetIndexes())
 73            {
 26474                index.SetDatabaseName(index.GetDatabaseName()?.ToSnakeCase());
 75            }
 76        }
 477    }
 78
 79    public async Task<DbConnection> GetOpenConnectionAsync(CancellationToken ct = default)
 80    {
 1481        await Database.OpenConnectionAsync(ct);
 1482        return Database.GetDbConnection();
 1483    }
 84
 85    public async Task<int> SaveChangesAsync<TEntity>(TEntity entity)
 86    {
 49087        Add(entity);
 49088        return await SaveChangesAsync();
 49089    }
 90}

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

#LineLine coverage
 1using Syki.Back.Domain.Disciplines;
 2using Syki.Back.Database.Disciplines;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 64948    public DbSet<Discipline> Disciplines { get; set; }
 9
 10    private static void ConfigureDisciplines(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new DisciplineDbConfig());
 413    }
 14}

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

#LineLine coverage
 1using Dapper;
 2using Syki.Back.Cache;
 3using Syki.Back.Auth.Roles;
 4using Syki.Back.Domain.Identity;
 5using Syki.Back.Database.Identity;
 6
 7namespace Syki.Back.Database;
 8
 9public partial class SykiDbContext
 10{
 798211    public DbSet<MagicLink> WebMagicLinks { get; set; }
 644412    public DbSet<ResetPasswordToken> ResetPasswordTokens { get; set; }
 13
 638014    public DbSet<SsoConfiguration> WebSsoConfigurations { get; set; }
 638415    public DbSet<SsoAllowedDomain> WebSsoAllowedDomains { get; set; }
 16
 637217    public DbSet<UserSocialLogin> UserSocialLogins { get; set; }
 18
 19    private static void ConfigureIdentity(ModelBuilder modelBuilder)
 20    {
 421        modelBuilder.ApplyConfiguration(new MagicLinkDbConfig());
 422        modelBuilder.ApplyConfiguration(new ResetPasswordTokenDbConfig());
 23
 424        modelBuilder.ApplyConfiguration(new SykiRoleDbConfig());
 425        modelBuilder.ApplyConfiguration(new SykiUserDbConfig());
 426        modelBuilder.ApplyConfiguration(new SykiUserRoleDbConfig());
 427        modelBuilder.ApplyConfiguration(new SykiRoleClaimDbConfig());
 428        modelBuilder.ApplyConfiguration(new SykiUserClaimDbConfig());
 429        modelBuilder.ApplyConfiguration(new SykiUserTokenDbConfig());
 430        modelBuilder.ApplyConfiguration(new SykiUserLoginDbConfig());
 31
 432        modelBuilder.ApplyConfiguration(new InstitutionRoleDbConfig());
 33
 434        modelBuilder.ApplyConfiguration(new SsoConfigurationDbConfig());
 435        modelBuilder.ApplyConfiguration(new SsoAllowedDomainDbConfig());
 36
 437        modelBuilder.ApplyConfiguration(new UserSocialLoginDbConfig());
 38
 439        modelBuilder.ApplyConfiguration(new DataProtectionKeyDbConfig());
 440    }
 41
 42    public async Task<SykiRole> GetUserRole(int userId, int institutionId)
 43    {
 81844        var userRole = await UserRoles.Where(x => x.UserId == userId && x.InstitutionId == institutionId).FirstAsync();
 45
 81846        return await Roles.Where(x => x.Id == userRole.RoleId).FirstAsync();
 81847    }
 48
 49    public async Task<SykiRole> GetDirectorRole()
 50    {
 72451        return await Cache.GetOrCreateAsync(
 72452            key: $"{CacheKeys.GetDirectorRole}",
 72453            state: this,
 72454            options: new() { Expiration = TimeSpan.FromDays(100) },
 72455            factory: async (state, ct) =>
 72456            {
 257                return await state.Roles.AsNoTracking()
 258                    .Where(x => x.OwnerId == null && x.NormalizedName == SykiDefaultRoles.Director.NormalizedName)
 259                    .FirstAsync(ct);
 260            }
 72461        );
 72462    }
 63
 64    public async Task<SykiRole> GetTeacherRole()
 65    {
 17666        return await Cache.GetOrCreateAsync(
 17667            key: $"{CacheKeys.GetTeacherRole}",
 17668            state: this,
 17669            options: new() { Expiration = TimeSpan.FromDays(100) },
 17670            factory: async (state, ct) =>
 17671            {
 272                return await state.Roles.AsNoTracking()
 273                    .Where(x => x.OwnerId == null && x.NormalizedName == SykiDefaultRoles.Teacher.NormalizedName)
 274                    .FirstAsync(ct);
 275            }
 17676        );
 17677    }
 78
 79    public async Task<SykiRole> GetStudentRole()
 80    {
 2281        return await Cache.GetOrCreateAsync(
 2282            key: $"{CacheKeys.GetStudentRole}",
 2283            state: this,
 2284            options: new() { Expiration = TimeSpan.FromDays(100) },
 2285            factory: async (state, ct) =>
 2286            {
 287                return await state.Roles.AsNoTracking()
 288                    .Where(x => x.OwnerId == null && x.NormalizedName == SykiDefaultRoles.Student.NormalizedName)
 289                    .FirstAsync(ct);
 290            }
 2291        );
 2292    }
 93
 94    public async Task<SsoConfiguration?> GetActiveSsoConfigForSchemeAsync(Guid publicId)
 95    {
 96        const string sql = @"
 97            SELECT
 98                id,
 99                external_id,
 100                authority,
 101                client_id,
 102                client_secret,
 103                updated_at
 104            FROM
 105                syki.sso_configurations
 106            WHERE
 107                public_id = @PublicId AND is_active = true
 108            LIMIT 1
 109        ";
 110
 0111        return await Database.GetDbConnection().QueryFirstOrDefaultAsync<SsoConfiguration?>(sql, new { PublicId = public
 0112    }
 113
 114    public async Task<bool> EmailRequiresSsoAsync(string email)
 115    {
 116        const string sql = @"
 117            SELECT
 118                count(1) > 0
 119            FROM
 120                syki.sso_allowed_domains d
 121            INNER JOIN
 122                syki.sso_configurations c ON c.id = d.sso_configuration_id
 123            WHERE
 124                d.domain = @Domain
 125                    AND
 126                c.is_active = true
 127                    AND
 128                c.require_sso = true
 129        ";
 130
 0131        var domain = email.Split('@').Last().ToLowerInvariant();
 0132        return await Database.GetDbConnection().QuerySingleAsync<bool>(sql, new { domain });
 0133    }
 134}

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

#LineLine coverage
 1using Syki.Back.Domain.Institutions;
 2using Syki.Back.Database.Institutions;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 65488    public DbSet<Institution> Institutions { get; set; }
 9
 10    private static void ConfigureInstitutions(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new InstitutionDbConfig());
 413    }
 14}

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

#LineLine coverage
 1using Syki.Back.Domain.Notifications;
 2using Syki.Back.Database.Notifications;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 63728    public DbSet<Notification> Notifications { get; set; }
 64129    public DbSet<UserNotification> UserNotifications { get; set; }
 10
 11    private static void ConfigureNotifications(ModelBuilder modelBuilder)
 12    {
 413        modelBuilder.ApplyConfiguration(new NotificationDbConfig());
 414        modelBuilder.ApplyConfiguration(new UserNotificationDbConfig());
 415    }
 16}

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

#LineLine coverage
 1using Syki.Back.Domain.Periods;
 2using Syki.Back.Database.Periods;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 64368    public DbSet<AcademicPeriod> AcademicPeriods { get; set; }
 9
 10    private static void ConfigurePeriods(ModelBuilder modelBuilder)
 11    {
 412        modelBuilder.ApplyConfiguration(new AcademicPeriodDbConfig());
 413        modelBuilder.ApplyConfiguration(new EnrollmentPeriodDbConfig());
 414    }
 15}

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

#LineLine coverage
 1using Syki.Back.Domain.Students;
 2using Syki.Back.Database.Students;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 63788    public DbSet<SykiStudent> Students { get; set; }
 63789    public DbSet<StudentCourseEnrollment> StudentCourseEnrollments { get; set; }
 10
 11    private static void ConfigureStudents(ModelBuilder modelBuilder)
 12    {
 413        modelBuilder.ApplyConfiguration(new SykiStudentDbConfig());
 414        modelBuilder.ApplyConfiguration(new StudentCourseEnrollmentDbConfig());
 415    }
 16}

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

#LineLine coverage
 1using Syki.Back.Domain.Teachers;
 2using Syki.Back.Database.Teachers;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 64348    public DbSet<SykiTeacher> Teachers { get; set; }
 63789    public DbSet<TeacherCampus> TeachersCampi { get; set; }
 637810    public DbSet<TeacherDiscipline> TeachersDisciplines { get; set; }
 11
 12    private static void ConfigureTeachers(ModelBuilder modelBuilder)
 13    {
 414        modelBuilder.ApplyConfiguration(new SykiTeacherDbConfig());
 415        modelBuilder.ApplyConfiguration(new TeacherCampusDbConfig());
 416        modelBuilder.ApplyConfiguration(new TeacherDisciplineDbConfig());
 417    }
 18}

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

#LineLine coverage
 1using Syki.Back.Domain.Webhooks;
 2using Syki.Back.Database.Webhooks;
 3
 4namespace Syki.Back.Database;
 5
 6public partial class SykiDbContext
 7{
 64168    public DbSet<WebhookCall> WebhookCalls { get; set; }
 63729    public DbSet<WebhookCallAttempt> WebhookCallAttempts { get; set; }
 10
 641411    public DbSet<WebhookSubscription> WebhookSubscriptions { get; set; }
 12
 637213    public DbSet<ReceivedWebhookEvent> ReceivedWebhookEvents { get; set; }
 14
 15    private static void ConfigureWebhooks(ModelBuilder modelBuilder)
 16    {
 417        modelBuilder.ApplyConfiguration(new WebhookCallDbConfig());
 418        modelBuilder.ApplyConfiguration(new WebhookCallAttemptDbConfig());
 19
 420        modelBuilder.ApplyConfiguration(new WebhookSubscriptionDbConfig());
 21
 422        modelBuilder.ApplyConfiguration(new ReceivedWebhookEventDbConfig());
 423    }
 24}

Methods/Properties

get_UserActivities()
ConfigureActivities(Microsoft.EntityFrameworkCore.ModelBuilder)
RecordSuccess(Syki.Back.Domain.Enums.UserActivityType,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Object)
RecordInfo(Syki.Back.Domain.Enums.UserActivityType,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Object)
RecordError(Syki.Back.Domain.Enums.UserActivityType,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Object)
Record(Syki.Back.Domain.Enums.UserActivitySeverity,Syki.Back.Domain.Enums.UserActivityType,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Object)
ConfigureAudit(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Campi()
ConfigureCampi(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Classes()
get_Schedules()
get_ClassLessons()
get_ClassLessonAttendances()
ConfigureClasses(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Classrooms()
ConfigureClassrooms(Microsoft.EntityFrameworkCore.ModelBuilder)
get_HasPendingCommands()
get_CommandLogs()
get_Commands()
ConfigureCommands(Microsoft.EntityFrameworkCore.ModelBuilder)
AddCommand(Syki.Back.Domain.Institutions.Institution,Syki.Back.Commands.ICommand,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Int32,System.Int32,Syki.Back.Domain.Enums.BackoffStrategy)
AddCommand(System.Int32,Syki.Back.Commands.ICommand,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.Int32,System.Int32,Syki.Back.Domain.Enums.BackoffStrategy)
get_CourseCurriculums()
get_CourseCurriculumDisciplines()
ConfigureCourseCurriculums(Microsoft.EntityFrameworkCore.ModelBuilder)
get_CourseOfferings()
ConfigureCourseOfferings(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Courses()
get_CoursesDisciplines()
ConfigureCourses(Microsoft.EntityFrameworkCore.ModelBuilder)
.ctor(Microsoft.EntityFrameworkCore.DbContextOptions`1<Syki.Back.Database.SykiDbContext>,Npgsql.NpgsqlDataSource,Microsoft.Extensions.Caching.Hybrid.HybridCache)
get_Cache()
get_RequestUser()
get_ActivityId()
get_Operation()
get_DataProtectionKeys()
OnConfiguring(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder)
OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder)
ConfigureDatabaseNames(Microsoft.EntityFrameworkCore.ModelBuilder)
GetOpenConnectionAsync()
SaveChangesAsync()
get_Disciplines()
ConfigureDisciplines(Microsoft.EntityFrameworkCore.ModelBuilder)
get_WebMagicLinks()
get_ResetPasswordTokens()
get_WebSsoConfigurations()
get_WebSsoAllowedDomains()
get_UserSocialLogins()
ConfigureIdentity(Microsoft.EntityFrameworkCore.ModelBuilder)
GetUserRole()
GetDirectorRole()
<GetDirectorRole()
GetTeacherRole()
<GetTeacherRole()
GetStudentRole()
<GetStudentRole()
GetActiveSsoConfigForSchemeAsync()
EmailRequiresSsoAsync()
get_Institutions()
ConfigureInstitutions(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Notifications()
get_UserNotifications()
ConfigureNotifications(Microsoft.EntityFrameworkCore.ModelBuilder)
get_AcademicPeriods()
ConfigurePeriods(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Students()
get_StudentCourseEnrollments()
ConfigureStudents(Microsoft.EntityFrameworkCore.ModelBuilder)
get_Teachers()
get_TeachersCampi()
get_TeachersDisciplines()
ConfigureTeachers(Microsoft.EntityFrameworkCore.ModelBuilder)
get_WebhookCalls()
get_WebhookCallAttempts()
get_WebhookSubscriptions()
get_ReceivedWebhookEvents()
ConfigureWebhooks(Microsoft.EntityFrameworkCore.ModelBuilder)