Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
14 / 14
CRAP
100.00% covered (success)
100.00%
1 / 1
Connection
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
14 / 14
14
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 credentials
100.00% covered (success)
100.00%
2 / 2
n/a
0 / 0
n/a
0 / 0
100.00% covered (success)
100.00%
1 / 1
1
 options
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 option
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 fetch
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 pingAfterIdle
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 maxConnectionAge
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 placeholders
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 migrationTable
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 migrationColumns
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 migrations
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addMigration
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 migrationNamespace
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addSql
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace Celema\Quma;
6
7/**
8 * @api
9 *
10 * @psalm-import-type SqlConfig from Config
11 * @psalm-import-type PlaceholderConfig from Config
12 */
13class Connection
14{
15    public readonly Config $config;
16
17    /** @psalm-param SqlConfig $sql */
18    public function __construct(string $dsn, string|array $sql)
19    {
20        $this->config = new Config($dsn, $sql);
21    }
22
23    public function credentials(
24        string $username,
25        #[\SensitiveParameter]
26        ?string $password = null,
27    ): static {
28        $this->config->setCredentials($username, $password);
29
30        return $this;
31    }
32
33    /** @param array<array-key, mixed> $options */
34    public function options(array $options): static
35    {
36        $this->config->setPdoOptions($options);
37
38        return $this;
39    }
40
41    public function option(int $attribute, mixed $value): static
42    {
43        $this->config->setPdoOption($attribute, $value);
44
45        return $this;
46    }
47
48    public function fetch(int $fetchMode): static
49    {
50        $this->config->setFetchMode($fetchMode);
51
52        return $this;
53    }
54
55    /**
56     * Before a connection that was idle for at least this many seconds is
57     * used again, it is pinged and replaced if it is broken. 0 disables the
58     * check. Default: 60.
59     */
60    public function pingAfterIdle(int $seconds): static
61    {
62        $this->config->setPingAfterIdle($seconds);
63
64        return $this;
65    }
66
67    /**
68     * A connection older than this many seconds is replaced before it is
69     * used again. 0 keeps connections regardless of their age (default).
70     */
71    public function maxConnectionAge(int $seconds): static
72    {
73        $this->config->setMaxConnectionAge($seconds);
74
75        return $this;
76    }
77
78    /** @psalm-param PlaceholderConfig $placeholders */
79    public function placeholders(Delimiters $delimiters, array $placeholders): static
80    {
81        $this->config->setPlaceholders($delimiters, $placeholders);
82
83        return $this;
84    }
85
86    public function migrationTable(string $table): static
87    {
88        $this->config->setMigrationsTable($table);
89
90        return $this;
91    }
92
93    public function migrationColumns(string $migration, string $applied = 'applied'): static
94    {
95        $this->config->setMigrationsColumnMigration($migration);
96        $this->config->setMigrationsColumnApplied($applied);
97
98        return $this;
99    }
100
101    /** @psalm-param SqlConfig $migrations */
102    public function migrations(array|string $migrations): static
103    {
104        $this->config->setMigrations($migrations);
105
106        return $this;
107    }
108
109    /** @param non-empty-string $migrations */
110    public function addMigration(string $migrations): static
111    {
112        $this->config->addMigrationDir($migrations);
113
114        return $this;
115    }
116
117    /** @psalm-param SqlConfig $dirs */
118    public function migrationNamespace(string $namespace, string|array $dirs): static
119    {
120        $this->config->setMigrationNamespace($namespace, $dirs);
121
122        return $this;
123    }
124
125    /** @psalm-param SqlConfig $sql */
126    public function addSql(array|string $sql): static
127    {
128        $this->config->addSqlDirs($sql);
129
130        return $this;
131    }
132}

Branches

Below are the source code lines that represent each code branch as identified by Xdebug. Please note a branch is not necessarily coterminous with a line, a line may contain multiple branches and therefore show up more than once. Please also be aware that some branches may be implicit rather than explicit, e.g. an if statement always has an else as part of its logical flow even if you didn't write one.

Connection->__construct
18    public function __construct(string $dsn, string|array $sql)
19    {
20        $this->config = new Config($dsn, $sql);
21    }
Connection->addMigration
110    public function addMigration(string $migrations): static
111    {
112        $this->config->addMigrationDir($migrations);
113
114        return $this;
115    }
Connection->addSql
126    public function addSql(array|string $sql): static
127    {
128        $this->config->addSqlDirs($sql);
129
130        return $this;
131    }
Connection->fetch
48    public function fetch(int $fetchMode): static
49    {
50        $this->config->setFetchMode($fetchMode);
51
52        return $this;
53    }
Connection->maxConnectionAge
71    public function maxConnectionAge(int $seconds): static
72    {
73        $this->config->setMaxConnectionAge($seconds);
74
75        return $this;
76    }
Connection->migrationColumns
93    public function migrationColumns(string $migration, string $applied = 'applied'): static
94    {
95        $this->config->setMigrationsColumnMigration($migration);
96        $this->config->setMigrationsColumnApplied($applied);
97
98        return $this;
99    }
Connection->migrationNamespace
118    public function migrationNamespace(string $namespace, string|array $dirs): static
119    {
120        $this->config->setMigrationNamespace($namespace, $dirs);
121
122        return $this;
123    }
Connection->migrationTable
86    public function migrationTable(string $table): static
87    {
88        $this->config->setMigrationsTable($table);
89
90        return $this;
91    }
Connection->migrations
102    public function migrations(array|string $migrations): static
103    {
104        $this->config->setMigrations($migrations);
105
106        return $this;
107    }
Connection->option
41    public function option(int $attribute, mixed $value): static
42    {
43        $this->config->setPdoOption($attribute, $value);
44
45        return $this;
46    }
Connection->options
34    public function options(array $options): static
35    {
36        $this->config->setPdoOptions($options);
37
38        return $this;
39    }
Connection->pingAfterIdle
60    public function pingAfterIdle(int $seconds): static
61    {
62        $this->config->setPingAfterIdle($seconds);
63
64        return $this;
65    }
Connection->placeholders
79    public function placeholders(Delimiters $delimiters, array $placeholders): static
80    {
81        $this->config->setPlaceholders($delimiters, $placeholders);
82
83        return $this;
84    }