Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
SQLiteAccess
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 2
42
0.00% covered (danger)
0.00%
0 / 1
 connect
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
12
 postConnect
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
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    const string DEFAULT_DATABASE_NAME = 'dldb_frontend_dev';
13    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}