feat: repository crud

This commit is contained in:
devcodetools committed 2026-09-14 14:29:33 +02:00
1 parent b7317bd8e1
commit d654bb8511
1 file changed
+73
+73
View File
@@ -0,0 +1,73 @@
<?php
declare(strict_types=1);
final class LinkRepository
{
private PDO $pdo;
public function __construct(PDO $pdo)
{
$this->pdo = $pdo;
}
public function all(): array
{
return $this->pdo->query('SELECT * FROM links ORDER BY id DESC')->fetchAll();
}
public function find(int $id): ?array
{
$stmt = $this->pdo->prepare('SELECT * FROM links WHERE id = :id');
$stmt->execute(['id' => $id]);
$row = $stmt->fetch();
return $row ?: null;
}
public function create(string $title, string $description, string $linkUrl, ?string $thumbnail): int
{
$stmt = $this->pdo->prepare(
'INSERT INTO links (title, description, link_url, thumbnail)
VALUES (:title, :description, :link_url, :thumbnail)'
);
$stmt->execute([
'title' => $title,
'description' => $description,
'link_url' => $linkUrl,
'thumbnail' => $thumbnail,
]);
return (int) $this->pdo->lastInsertId();
}
public function update(int $id, string $title, string $description, string $linkUrl, ?string $thumbnail): bool
{
$stmt = $this->pdo->prepare(
'UPDATE links
SET title = :title,
description = :description,
link_url = :link_url,
thumbnail = :thumbnail,
updated_at = datetime(\'now\')
WHERE id = :id'
);
$stmt->execute([
'id' => $id,
'title' => $title,
'description' => $description,
'link_url' => $linkUrl,
'thumbnail' => $thumbnail,
]);
return $stmt->rowCount() > 0;
}
public function delete(int $id): bool
{
$stmt = $this->pdo->prepare('DELETE FROM links WHERE id = :id');
$stmt->execute(['id' => $id]);
return $stmt->rowCount() > 0;
}
}