< Summary - Syki

Information
Class: Syki.Back.Features.Adm.GetDomainEventsSummary.GetDomainEventsSummaryService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Adm/GetDomainEventsSummary/GetDomainEventsSummaryService.cs
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 10
Coverable lines: 10
Total lines: 54
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
Get()0%620%

File(s)

/home/runner/work/syki/syki/Back/Features/Adm/GetDomainEventsSummary/GetDomainEventsSummaryService.cs

#LineLine coverage
 1using Dapper;
 2using Npgsql;
 3
 4namespace Syki.Back.Features.Adm.GetDomainEventsSummary;
 5
 06public class GetDomainEventsSummaryService(NpgsqlDataSource dataSource) : IAdmService
 7{
 8    public async Task<GetDomainEventsSummaryOut> Get()
 9    {
 010        await using var connection = await dataSource.OpenConnectionAsync();
 11
 012        var result = new GetDomainEventsSummaryOut();
 13
 14        const string summarySql = @"
 15            SELECT
 16                count(1) AS total,
 17                count(1) FILTER (WHERE status = 'Pending') AS pending,
 18                count(1) FILTER (WHERE status = 'Processing') AS processing,
 19                count(1) FILTER (WHERE status = 'Success') AS success,
 20                count(1) FILTER (WHERE status = 'Error') AS error
 21            FROM syki.domain_events
 22        ";
 23
 24        const string lastEventsSql = @"
 25            SELECT occurred_at::timestamp(0) AS date, count(1) AS total
 26            FROM syki.domain_events
 27            GROUP BY occurred_at::timestamp(0)
 28            ORDER BY date
 29        ";
 30
 31        const string typesSql = @"
 32            SELECT type, count(1) AS total
 33            FROM syki.domain_events
 34            GROUP BY TYPE
 35            ORDER BY total DESC
 36        ";
 37
 38        const string institutionsSql = @"
 39            SELECT id, name
 40            FROM syki.institutions
 41            WHERE id <> '00000000-0000-0000-0000-000000000000'
 42            ORDER BY name
 43        ";
 44
 045        result.Summary = await connection.QueryFirstAsync<DomainEventsSummaryOut>(summarySql);
 046        result.LastEvents = (await connection.QueryAsync<LastDomainEventOut>(lastEventsSql)).ToList();
 047        result.EventTypes = (await connection.QueryAsync<DomainEventTypeCountOut>(typesSql)).ToList();
 048        result.Institutions = (await connection.QueryAsync<TinyInstitutionOut>(institutionsSql)).ToList();
 49
 050        result.EventTypes.ForEach(x => x.Description = x.Type.ToDomainEventDescription());
 51
 052        return result;
 053    }
 54}