2024-08-30 12:28:30 +00:00
|
|
|
<?php declare(strict_types=1);
|
|
|
|
|
|
|
|
use DI\Container;
|
|
|
|
use Doctrine\DBAL\DriverManager;
|
|
|
|
use Doctrine\DBAL\Types\Type;
|
|
|
|
use Doctrine\ORM\EntityManager;
|
|
|
|
use Doctrine\ORM\ORMSetup;
|
|
|
|
use Lewisdale\App\Logging\FileLogger;
|
|
|
|
use Lewisdale\App\TwigExtensions\CsrfExtension;
|
|
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
use Ramsey\Uuid\Doctrine\UuidType;
|
|
|
|
use Slim\Factory\AppFactory;
|
|
|
|
use Slim\Views\Twig;
|
|
|
|
|
|
|
|
require_once __DIR__ . "/../vendor/autoload.php";
|
|
|
|
|
|
|
|
$container = new Container();
|
|
|
|
|
|
|
|
AppFactory::setContainer($container);
|
|
|
|
$app = AppFactory::create();
|
|
|
|
|
|
|
|
|
|
|
|
$container->set('csrf', function() use ($app) {
|
|
|
|
return new Slim\Csrf\Guard($app->getResponseFactory());
|
|
|
|
});
|
|
|
|
|
|
|
|
$container->set('view', function() use ($container) {
|
|
|
|
$twig = Twig::create(__DIR__ . "/../views");
|
|
|
|
$twig->addExtension(new CsrfExtension($container->get('csrf')));
|
|
|
|
|
|
|
|
return $twig;
|
|
|
|
});
|
|
|
|
|
|
|
|
$container->set(Twig::class, function() use ($container) {
|
|
|
|
return $container->get('view');
|
|
|
|
});
|
|
|
|
|
|
|
|
$container->set(LoggerInterface::class, $container->get(FileLogger::class));
|
|
|
|
|
|
|
|
|
|
|
|
$container->set(EntityManager::class, static function() {
|
|
|
|
Type::addType('uuid', UuidType::class);
|
|
|
|
|
|
|
|
$config = ORMSetup::createAttributeMetadataConfiguration(
|
|
|
|
paths: array(__DIR__."/Models/Data"),
|
|
|
|
isDevMode: true,
|
|
|
|
);
|
|
|
|
|
|
|
|
$connection = DriverManager::getConnection([
|
|
|
|
'driver' => 'pdo_sqlite',
|
2024-09-17 20:52:08 +00:00
|
|
|
'path' => __DIR__ . '/../' . getenv("SQLITE_DB_NAME"),
|
2024-08-30 12:28:30 +00:00
|
|
|
], $config);
|
|
|
|
|
|
|
|
return new EntityManager($connection, $config);
|
|
|
|
});
|
|
|
|
|