Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
Aggregate
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 values
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 buildSQL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Projom\Storage\SQL\Util;
6
7enum Aggregate: string
8{
9    case COUNT = 'COUNT';
10    case MIN = 'MIN';
11    case MAX = 'MAX';
12    case AVG = 'AVG';
13    case SUM = 'SUM';
14
15    public static function values(): array
16    {
17        return array_map(fn($case) => $case->value, static::cases());
18    }
19
20    public function buildSQL(string $field, string $alias = ''): string
21    {
22        $function = "{$this->value}({$field})";
23
24        if ($alias)
25            return "$function AS $alias";
26
27        return $function;
28    }
29}