BookmarkRepository   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 1
dl 0
loc 88
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A findAll() 0 14 3
A find() 0 13 1
A save() 0 16 1
A update() 0 15 1
A remove() 0 13 1
1
<?php
2
3
namespace App;
4
5
use Rhumsaa\Uuid\Uuid;
6
7
class BookmarkRepository
8
{
9
    /**
10
     * @var \PDO
11
     */
12
    private $connection;
13
14
    public function __construct(\PDO $connection)
15
    {
16
        $this->connection = $connection;
17
    }
18
19
    public function findAll()
20
    {
21
        $bookmarks = array();
22
23
        foreach ($this->connection->query('SELECT * FROM bookmarks;') as $row) {
24
            $bookmark = json_decode($row['data']);
25
            $bookmark->uuid = $row['uuid'];
26
            $bookmark->url = $row['url'];
27
            $bookmark->title = !empty($bookmark->title) ? $bookmark->title : $bookmark->url;
28
            $bookmarks[] = $bookmark;
29
        }
30
31
        return $bookmarks;
32
    }
33
34
    public function find(Uuid $uuid)
35
    {
36
        $statement = $this->connection->prepare('SELECT * FROM bookmarks WHERE uuid = :uuid;');
37
        $statement->execute(
38
            array(
39
                'uuid' => (string) $uuid,
40
            )
41
        );
42
43
        $row = $statement->fetch(\PDO::FETCH_ASSOC);
44
45
        return Bookmark::unserialize($row);
46
    }
47
48
    public function save(Bookmark $bookmark)
49
    {
50
        $statement = $this->connection->prepare(
51
            'INSERT INTO bookmarks (uuid, url, data) VALUES (:uuid, :url, :data);'
52
        );
53
54
        $statement->execute(
55
            array(
56
                ':uuid' => (string) $bookmark->getUuid(),
57
                ':url' => (string) $bookmark->getUrl(),
58
                ':data' => json_encode($bookmark->getData()),
59
            )
60
        );
61
62
        return $bookmark;
63
    }
64
65
    public function update(Bookmark $bookmark)
66
    {
67
        $statement = $this->connection->prepare(
68
            'UPDATE bookmarks SET data = :data WHERE uuid = :uuid;'
69
        );
70
71
        $statement->execute(
72
            array(
73
                ':uuid' => (string) $bookmark->getUuid(),
74
                ':data' => json_encode($bookmark->getData()),
75
            )
76
        );
77
78
        return $bookmark;
79
    }
80
81
    public function remove(Uuid $uuid)
82
    {
83
        $bookmark = $this->find($uuid);
84
85
        $statement = $this->connection->prepare('DELETE FROM bookmarks WHERE uuid = :uuid;');
86
        $statement->execute(
87
            array(
88
                'uuid' => (string) $uuid,
89
            )
90
        );
91
92
        return $bookmark;
93
    }
94
}
95