Add PDO repository (#2)

* Add PDO repository

* Make file storage path configurable

* Name username query property required

* Add special exception class
This commit is contained in:
Anton Komarev
2020-07-12 18:46:42 +03:00
committed by GitHub
parent 042b26ea71
commit e4f24b04f7
13 changed files with 604 additions and 42 deletions

View File

@@ -0,0 +1,51 @@
<?php
/*
* This file is part of GitHub Profile Views Counter.
*
* (c) Anton Komarev <anton@komarev.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Komarev\GitHubProfileViewsCounter;
use Contracts\Komarev\GitHubProfileViewsCounter\CounterRepositoryInterface;
use PDO;
final class CounterPdoRepository implements CounterRepositoryInterface
{
private PDO $connection;
public function __construct(PDO $connection)
{
$this->connection = $connection;
}
public function getCountByUsername(string $username): int
{
$statement = $this->connection->prepare(
'SELECT COUNT(*)
FROM page_views
WHERE username = :username;'
);
$statement->bindParam('username', $username);
$statement->execute();
return (int) $statement->fetchColumn(0);
}
public function incrementCountByUsername(string $username): void
{
$statement = $this->connection->prepare(
'INSERT INTO page_views
(username, created_at)
VALUES (:username, NOW());'
);
$statement->bindParam('username', $username);
$statement->execute();
}
}