tasklist-backend/src/Repositories/TaskRepository.php

79 lines
2.1 KiB
PHP
Raw Normal View History

2025-04-13 19:03:41 +01:00
<?php declare(strict_types=1);
namespace Repositories;
use Carbon\Carbon;
use Database\Connection;
use Interfaces\TaskDao;
use Models\Task;
use PDO;
class TaskRepository implements TaskDao
{
private PDO $conn;
public function __construct(Connection $connection)
{
$this->conn = $connection->getConnection();
}
public function create(Task $task): bool
{
$data = $task->persist();
$stmt = $this->conn->prepare(
"INSERT INTO Tasks (task_owner, created_at, updated_at, name, description, start, end, status_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
);
$stmt->bindParam(1, $data['task_owner']);
$stmt->bindParam(2, $data['created_at']);
$stmt->bindParam(3, $data['updated_at']);
$stmt->bindParam(4, $data['name']);
$stmt->bindParam(5, $data['description']);
$stmt->bindParam(6, $data['start']);
$stmt->bindParam(7, $data['end']);
$stmt->bindParam(8, $data['status_id']);
return $stmt->execute();
}
public function readAll(): array
{
$stmt = $this->conn->query('SELECT * FROM Tasks');
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function readById($id): Task
{
$stmt = $this->conn->prepare('SELECT * FROM Tasks WHERE id = ?');
$stmt->execute([$id]);
return Task::fromArray($stmt->fetch(PDO::FETCH_ASSOC));
}
public function update(Task $task): bool
{
$stmt = $this->conn->prepare(
"UPDATE Tasks SET task_owner = ?, updated_at = ?, name = ?, description = ?, start = ?, end = ?, status_id = 0 WHERE id = ?"
);
return $stmt->execute([
1, // Mock user ID for now, we haven't implemented authentication yet
Carbon::now(),
$task->getTitle(),
$task->getDescription(),
$task->getStartDt(),
$task->getEndDt(),
$task->getStatus(),
$task->getTaskId()
]);
}
public function delete(Task $task): bool
{
$stmt = $this->conn->prepare('DELETE FROM Tasks WHERE id = ?');
return $stmt->execute([$task->getTaskId()]);
}
}