Initial commit

This commit is contained in:
Chris Smith
2025-12-12 21:22:48 +01:00
parent 195c2f48ff
commit d225d12555
30 changed files with 976 additions and 3587 deletions

View File

@@ -1,9 +1,66 @@
<?php
declare(strict_types=1);
use App\Kernel;
require __DIR__ . '/../src/Autoloader.php';
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
$autoloader = new Autoloader('App', __DIR__ . '/../src');
$autoloader->register();
return function (array $context) {
return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};
$config = require __DIR__ . '/../config/config.php';
if ($config['error_reporting']) {
error_reporting(E_ALL);
ini_set('display_errors', '1');
}
header('Access-Control-Allow-Origin: ' . $config['cors']['allow_origin']);
header('Access-Control-Allow-Methods: ' . $config['cors']['allow_methods']);
header('Access-Control-Allow-Headers: ' . $config['cors']['allow_headers']);
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(204);
exit;
}
use App\Database;
use App\Router;
use App\Controllers\ListController;
use App\Controllers\ItemController;
Database::init($config['db']['path']);
$router = new Router();
$router->addRoute('POST', '/list', function () {
ListController::create();
});
$router->addRoute('GET', '/list/{uuid}', function (string $uuid) {
ListController::show($uuid);
});
$router->addRoute('PATCH', '/list/{uuid}', function (string $uuid) {
ListController::update($uuid);
});
$router->addRoute('DELETE', '/list/{uuid}', function (string $uuid) {
ListController::delete($uuid);
});
$router->addRoute('POST', '/list/{uuid}/item', function (string $uuid) {
ItemController::create($uuid);
});
$router->addRoute('PATCH', '/list/{uuid}/item/{id}', function (string $uuid, string $id) {
ItemController::update($uuid, $id);
});
$router->addRoute('DELETE', '/list/{uuid}/item/{id}', function (string $uuid, string $id) {
ItemController::delete($uuid, $id);
});
try {
$router->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
} catch (Exception $e) {
Router::sendResponse(['error' => 'Internal server error'], 500);
}