SqliteHelper::getDynamicSqliteDbPath()   A
last analyzed

Complexity

Conditions 4
Paths 8

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 8
c 1
b 0
f 0
nc 8
nop 2
dl 0
loc 14
rs 10
1
<?php
2
3
namespace Silviooosilva\CacheerPhp\Helpers;
4
use Silviooosilva\CacheerPhp\Helpers\EnvHelper;
5
6
/**
7
 * Class SqliteHelper
8
 * @author Sílvio Silva <https://github.com/silviooosilva>
9
 * @package Silviooosilva\CacheerPhp
10
 */
11
class SqliteHelper
12
{
13
14
    /**
15
     * @param string $database
16
     * @param ?string $path
17
     * @return string
18
     */
19
    public static function database(string $database = 'database.sqlite', ?string $path = null)
20
    {
21
        return self::getDynamicSqliteDbPath($database, $path);
22
    }
23
24
    /**
25
     * @param  string $database
26
     * @param ?string $path
27
     * @return string
28
     */
29
    private static function getDynamicSqliteDbPath(string $database, ?string $path = null)
30
    {
31
        $rootPath = EnvHelper::getRootPath();
32
        $databaseDir = is_null($path) ? $rootPath . '/database' : $rootPath . '/' . $path;
33
        $dbFile = $databaseDir . '/' . self::checkExtension($database);
34
        
35
        if (!is_dir($databaseDir)) {
36
            self::createDatabaseDir($databaseDir);
37
        }
38
        if (!file_exists($dbFile)) {
39
            self::createDatabaseFile($dbFile);
40
        }
41
        
42
        return $dbFile;
43
    }
44
45
    /**
46
    * @param string $databaseDir
47
    * @return void
48
    */
49
    private static function createDatabaseDir(string $databaseDir)
50
    {
51
        if (!is_dir($databaseDir)) {
52
            mkdir($databaseDir, 0755, true);
53
        }
54
    }
55
56
    /**
57
    * @param string $dbFile
58
    * @return void
59
    */
60
    private static function createDatabaseFile(string $dbFile)
61
    {
62
        if (!file_exists($dbFile)) {
63
            file_put_contents($dbFile, '');
64
        }
65
    }
66
67
    /**
68
    * @param string $database
69
    * @return string
70
    */
71
    private static function checkExtension(string $database)
72
    {
73
        if (strpos($database, '.sqlite') === false) {
74
            return $database . '.sqlite';
75
        }
76
        return $database;
77
    }
78
79
}
80