API
This commit is contained in:
44
api/setup/app.php
Normal file
44
api/setup/app.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
use DI\ContainerBuilder as Builder;
|
||||
use DI\Bridge\Slim\Bridge;
|
||||
|
||||
include_once 'composer.php';
|
||||
|
||||
$builder = new Builder();
|
||||
$folders = [
|
||||
'settings',
|
||||
'setups'
|
||||
];
|
||||
foreach ($folders as $folder) {
|
||||
$name = implode(DIRECTORY_SEPARATOR, [__DIR__, $folder]);
|
||||
if (!file_exists($name)) {
|
||||
continue;
|
||||
}
|
||||
$files = new DirectoryIterator($name);
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir()) {
|
||||
continue;
|
||||
}
|
||||
$builder->addDefinitions($file->getRealPath());
|
||||
}
|
||||
}
|
||||
|
||||
$container = $builder->build();
|
||||
#!d($container->getKnownEntryNames());
|
||||
$app = Bridge::create($container);
|
||||
|
||||
$app->addBodyParsingMiddleware();
|
||||
|
||||
$folder = implode(DIRECTORY_SEPARATOR, [__DIR__, 'middlewares']);
|
||||
if (file_exists($folder)) {
|
||||
$files = new DirectoryIterator($folder);
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir()) {
|
||||
continue;
|
||||
}
|
||||
include_once $file->getRealPath();
|
||||
}
|
||||
}
|
||||
|
||||
include_once 'databases.php';
|
||||
include_once 'router.php';
|
6
api/setup/composer.php
Normal file
6
api/setup/composer.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
require_once implode(DIRECTORY_SEPARATOR, [
|
||||
dirname(__DIR__),
|
||||
'vendor',
|
||||
'autoload.php'
|
||||
]);
|
30
api/setup/databases.php
Normal file
30
api/setup/databases.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
$databases = $app->getContainer()->get('databases');
|
||||
foreach ($databases->databases as $name => $settings) {
|
||||
switch ($settings->engine) {
|
||||
case 'mysql': {
|
||||
$dsn = ["mysql:host={$settings->host->name}"];
|
||||
if (isset($settings->host->port)) {
|
||||
$dsn []= "port={$settings->host->port}";
|
||||
}
|
||||
$dsn []= "dbname={$settings->name}";
|
||||
$dsn = implode(';', $dsn);
|
||||
$config = [
|
||||
'connection_string' => $dsn,
|
||||
'username' => $settings->user->name,
|
||||
'password' => $settings->user->password
|
||||
];
|
||||
Model::configure($config, null, $name);
|
||||
Model::set_db(new PDO($dsn, $settings->user->name, $settings->user->password), $name);
|
||||
break;
|
||||
}
|
||||
case 'sqlite': {
|
||||
$dsn = "sqlite:{$settings->database}";
|
||||
Model::configure($dsn, null, $name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($databases->short_names) and $databases->short_names) {
|
||||
Model::$short_table_names = true;
|
||||
}
|
3
api/setup/middlewares/01_base.php
Normal file
3
api/setup/middlewares/01_base.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
$app->add(new Incoviba\Common\Middleware\Cors());
|
||||
$app->addRoutingMiddleware();
|
2
api/setup/middlewares/02_error.php
Normal file
2
api/setup/middlewares/02_error.php
Normal file
@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$app->add(new Zeuxisoo\Whoops\Slim\WhoopsMiddleware());
|
9
api/setup/router.php
Normal file
9
api/setup/router.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
$folder = $app->getContainer()->get('folders')->routes;
|
||||
$files = new DirectoryIterator($folder);
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir() or $file->getExtension() !== 'php') {
|
||||
continue;
|
||||
}
|
||||
include_once $file->getRealPath();
|
||||
}
|
34
api/setup/settings/01_env.php
Normal file
34
api/setup/settings/01_env.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
return [
|
||||
'databases' => function() {
|
||||
$arr = [
|
||||
'databases' => [
|
||||
ORM::DEFAULT_CONNECTION => (object) [
|
||||
'engine' => 'mysql',
|
||||
'name' => $_ENV['MYSQL_DATABASE'],
|
||||
'host' => (object) [
|
||||
'name' => 'db'
|
||||
],
|
||||
'user' => (object) [
|
||||
'name' => $_ENV['MYSQL_USER'],
|
||||
'password' => $_ENV['MYSQL_PASSWORD']
|
||||
]
|
||||
]
|
||||
],
|
||||
'short_names' => true
|
||||
];
|
||||
return (object) $arr;
|
||||
},
|
||||
'folders' => function() {
|
||||
$arr = ['base' => dirname(__DIR__, 2)];
|
||||
$arr['resources'] = implode(DIRECTORY_SEPARATOR, [
|
||||
$arr['base'],
|
||||
'resources'
|
||||
]);
|
||||
$arr['routes'] = implode(DIRECTORY_SEPARATOR, [
|
||||
$arr['resources'],
|
||||
'routes'
|
||||
]);
|
||||
return (object) $arr;
|
||||
}
|
||||
];
|
Reference in New Issue
Block a user