< Summary - Syki

Information
Class: Syki.Back.Features.Cross.GetUserAccount.GetUserAccountService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Cross/GetUserAccount/GetUserAccountService.cs
Tag: 4_16869239191
Line coverage
85%
Covered lines: 6
Uncovered lines: 1
Coverable lines: 7
Total lines: 51
Line coverage: 85.7%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
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()75%4483.33%

File(s)

/home/runner/work/syki/syki/Back/Features/Cross/GetUserAccount/GetUserAccountService.cs

#LineLine coverage
 1using Dapper;
 2using Npgsql;
 3
 4namespace Syki.Back.Features.Cross.GetUserAccount;
 5
 26public class GetUserAccountService(NpgsqlDataSource dataSource) : ICrossService
 7{
 8    public async Task<GetUserAccountOut> Get(Guid userId)
 9    {
 210        await using var connection = await dataSource.OpenConnectionAsync();
 11
 12        const string sql = @"
 13            SELECT
 14                u.id,
 15                u.name,
 16                u.email,
 17                u.profile_photo,
 18                r.name AS role,
 19                i.name AS institution
 20            FROM
 21                syki.users u
 22            INNER JOIN
 23                syki.user_roles ur ON ur.user_id = u.id
 24            INNER JOIN
 25                syki.roles r ON r.id = ur.role_id
 26            INNER JOIN
 27                syki.institutions i ON i.id = u.institution_id
 28            WHERE
 29                u.id = @UserId
 30            LIMIT 1
 31        ";
 32
 233        var data = await connection.QueryFirstAsync<GetUserAccountOut>(sql, new { userId });
 34
 235        if (data.Role == UserRole.Student)
 36        {
 37            const string studentSql = @"
 38                SELECT name FROM syki.courses WHERE id =
 39                (
 40                    SELECT course_id
 41                    FROM syki.course_offerings co
 42                    INNER JOIN syki.students s ON s.course_offering_id = co.id
 43                    WHERE s.id = @UserId
 44                )
 45            ";
 046            data.Course = await connection.QueryFirstAsync<string?>(studentSql, new { userId });
 47        }
 48
 249        return data;
 250    }
 51}