Lines 0.00% 0 / 15
Functions and Methods 0.00% 0 / 2
Classes and Traits 0.00% 0 / 1
Name Lines Functions and Methods CRAP Classes and Traits
SQLiteAccess 0.00% 0 / 15 0.00% 0 / 2 42 0.00% 0 / 1
 connect 0.00% 0 / 8 0.00% 0 / 1 12
 postConnect 0.00% 0 / 7 0.00% 0 / 1 12
1<?php
2
3/**
4 * @package ClientDLDB
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsdldb;
9
10class SQLiteAccess extends PDOAccess
11{
12    public const string DEFAULT_DATABASE_NAME = 'dldb_frontend_dev';
13    public const string DEFAULT_DATABASE_PATH = __DIR__;
14
15    #[\Override]
16    protected function connect(array $options): void
17    {
18        try {
19            $databasePath = rtrim(($options['databasePath'] ?? static::DEFAULT_DATABASE_PATH), \DIRECTORY_SEPARATOR);
20
21            if (!is_dir($databasePath)) {
22                mkdir($databasePath);
23            }
24            $database = ($options['database'] ?? static::DEFAULT_DATABASE_NAME) . '.db';
25            $dsn = 'sqlite:' . $databasePath . \DIRECTORY_SEPARATOR . $database;
26
27            $this->pdo = new \PDO($dsn);
28        } catch (\Exception $e) {
29            throw $e;
30        }
31    }
32
33    /**
34     * @return void
35     */
36    #[\Override]
37    protected function postConnect()
38    {
39        try {
40            $this->beginTransaction();
41            $shemaQuerys = include(__DIR__ . '/shema/sqlite.php');
42
43            foreach ($shemaQuerys as $query) {
44                $this->exec($query);
45            }
46            $this->commit();
47        } catch (\Exception $e) {
48            throw $e;
49        }
50    }
51}