Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Metoda POST
- if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['REQUEST_URI'] === '/api/categories/') {
- $name = $_POST['name'] ?? null;
- $color = $_POST['color'] ?? null;
- # 400 Bad Request - pusta nazwa, pusty kolor lub zły format koloru
- if (empty($name) || empty($color) || !preg_match('/^#[0-9A-Fa-f]{6}$/', $color)) {
- http_response_code(400);
- echo json_encode(['error' => 'Bad request']);
- exit();
- }
- $stmt = $conn->prepare("SELECT id FROM categories WHERE name = :name");
- $stmt->execute(['name' => $name]);
- # 409 Conflict - nazwa istnieje w bazie
- if ($stmt->rowCount() > 0) {
- http_response_code(409);
- echo json_encode(['error' => 'Conflict']);
- exit();
- }
- $stmt = $conn->prepare("INSERT INTO categories (name, color) VALUES (:name, :color)");
- $stmt->execute(['name' => $name, 'color' => $color]);
- # 201 Created
- $newId = $conn->lastInsertId();
- http_response_code(201);
- echo json_encode(['id' => $newId, 'name' => $name, 'color' => $color]);
- exit();
- }
- # Metoda PUT
- if ($_SERVER['REQUEST_METHOD'] === 'PUT' && preg_match('#^/api/categories/(\d+)/$#', $_SERVER['REQUEST_URI'], $matches)) {
- $categoryId = $matches[1];
- $input = json_decode(file_get_contents("php://input"), true);
- $name = $input['name'] ?? null;
- $color = $input['color'] ?? null;
- if ($name === null || $color === null) {
- http_response_code(400); // Bad Request
- echo json_encode(['error' => 'Bad Request']);
- exit();
- }
- // Sprawdź, czy kategoria o podanym ID istnieje
- $stmt = $conn->prepare("SELECT id FROM categories WHERE id = :id");
- $stmt->execute(['id' => $categoryId]);
- $category = $stmt->fetch(PDO::FETCH_ASSOC);
- if (!$category) {
- http_response_code(404); // Not Found
- echo json_encode(['error' => 'Not Found']);
- exit();
- }
- // Czy już istnieje taka nazwa kategorii dla innego id w bazie danych
- $stmt = $conn->prepare("SELECT id FROM categories WHERE name = :name AND id != :id");
- $stmt->execute(['name' => $name, 'id' => $categoryId]);
- if ($stmt->rowCount() > 0) {
- http_response_code(409); // Conflict
- echo json_encode(['error' => 'Conflict']);
- exit();
- }
- // Sprawdzenie czy nazwa lub kolor są puste / kolor ma # i 6 znaków
- if (empty($name) || empty($color) || !preg_match('/^#[0-9A-Fa-f]{6}$/', $color)) {
- http_response_code(400);
- echo json_encode(['error' => 'Bad Request']);
- exit();
- }
- // Aktualizacja danych
- $stmt = $conn->prepare("UPDATE categories SET name = :name, color = :color WHERE id = :id");
- $stmt->execute(['name' => $name, 'color' => $color]);
- http_response_code(204);
- exit();
- }
Advertisement
Add Comment
Please, Sign In to add comment