timetracking-php-web-app/src/Persistence/LocalDatabase.php

72 lines
2 KiB
PHP

<?php
namespace App\Persistence;
/*
* Copyright (C) 2020 Daniel Siepmann <coding@daniel-siepmann.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
use App\Entity\Entry;
use Doctrine\DBAL\Connection;
class LocalDatabase implements Entries
{
/**
* @var Connection
*/
private $connection;
public function __construct(
Connection $connection
) {
$this->connection = $connection;
}
public function add(Entry $entry): void
{
$this->connection->insert('entry', [
'title' => $entry->getTitle(),
'start' => $entry->getBegan()->format('U'),
'end' => $entry->getEnded()->format('U'),
]);
}
public function get(int $limit): array
{
$queryBuilder = $this->connection->createQueryBuilder();
$queryBuilder->select('*');
$queryBuilder->from('entry');
$queryBuilder->setMaxResults($limit);
$queryBuilder->orderBy('id', 'desc');
$entries = [];
$result = $queryBuilder->execute();
while ($entry = $result->fetch()) {
$entries[] = Entry::fromPersistence(
$entry['title'],
new \DateTimeImmutable('@' . $entry['start']),
new \DateTimeImmutable('@' . $entry['end'])
);
}
return $entries;
}
}