Skip to content

Commit

Permalink
[#4] - Introduced modelsMetadata service stored in memcached
Browse files Browse the repository at this point in the history
  • Loading branch information
niden committed Aug 3, 2018
1 parent 303a5d7 commit 01234b9
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 4 deletions.
2 changes: 2 additions & 0 deletions api/config/providers.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Niden\Providers\DatabaseProvider;
use Niden\Providers\ErrorHandlerProvider;
use Niden\Providers\LoggerProvider;
use Niden\Providers\ModelsMetadataProvider;
use Niden\Providers\RequestProvider;
use Niden\Providers\ResponseProvider;
use Niden\Providers\RouterProvider;
Expand All @@ -18,6 +19,7 @@
LoggerProvider::class,
ErrorHandlerProvider::class,
DatabaseProvider::class,
ModelsMetadataProvider::class,
RequestProvider::class,
ResponseProvider::class,
RouterProvider::class,
Expand Down
2 changes: 2 additions & 0 deletions cli/config/providers.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@
use Niden\Providers\DatabaseProvider;
use Niden\Providers\ErrorHandlerProvider;
use Niden\Providers\LoggerProvider;
use Niden\Providers\ModelsMetadataProvider;

return [
ConfigProvider::class,
LoggerProvider::class,
ErrorHandlerProvider::class,
DatabaseProvider::class,
ModelsMetadataProvider::class,
CliDispatcherProvider::class,
CacheDataProvider::class,
];
43 changes: 43 additions & 0 deletions library/Providers/ModelsMetadataProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

declare(strict_types=1);

namespace Niden\Providers;

use function Niden\Core\envValue;
use Phalcon\Di\ServiceProviderInterface;
use Phalcon\DiInterface;
use Phalcon\Mvc\Model\MetaData\Libmemcached;

class ModelsMetadataProvider implements ServiceProviderInterface
{
/**
* @param DiInterface $container
*/
public function register(DiInterface $container)
{
$container->setShared(
'modelsMetadata',
function () {
$prefix = 'metadata';
$backOptions = [
'servers' => [
0 => [
'host' => envValue('DATA_API_MEMCACHED_HOST', '127.0.0.1'),
'port' => envValue('DATA_API_MEMCACHED_PORT', 11211),
'weight' => envValue('DATA_API_MEMCACHED_WEIGHT', 100),
],
],
'client' => [
\Memcached::OPT_HASH => \Memcached::HASH_MD5,
\Memcached::OPT_PREFIX_KEY => 'api-',
],
'lifetime' => 3600,
'prefix' => $prefix . '-',
];

return new Libmemcached($backOptions);
}
);
}
}
11 changes: 7 additions & 4 deletions tests/unit/config/ProvidersCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Niden\Providers\ErrorHandlerProvider;
use Niden\Providers\EventsManagerProvider;
use Niden\Providers\LoggerProvider;
use Niden\Providers\ModelsMetadataProvider;
use Niden\Providers\RequestProvider;
use Niden\Providers\ResponseProvider;
use Niden\Providers\RouterProvider;
Expand All @@ -24,9 +25,10 @@ public function checkApiProviders(UnitTester $I)
$I->assertEquals(LoggerProvider::class, $providers[1]);
$I->assertEquals(ErrorHandlerProvider::class, $providers[2]);
$I->assertEquals(DatabaseProvider::class, $providers[3]);
$I->assertEquals(RequestProvider::class, $providers[4]);
$I->assertEquals(ResponseProvider::class, $providers[5]);
$I->assertEquals(RouterProvider::class, $providers[6]);
$I->assertEquals(ModelsMetadataProvider::class, $providers[4]);
$I->assertEquals(RequestProvider::class, $providers[5]);
$I->assertEquals(ResponseProvider::class, $providers[6]);
$I->assertEquals(RouterProvider::class, $providers[7]);
}

public function checkCliProviders(UnitTester $I)
Expand All @@ -37,6 +39,7 @@ public function checkCliProviders(UnitTester $I)
$I->assertEquals(LoggerProvider::class, $providers[1]);
$I->assertEquals(ErrorHandlerProvider::class, $providers[2]);
$I->assertEquals(DatabaseProvider::class, $providers[3]);
$I->assertEquals(CliDispatcherProvider::class, $providers[4]);
$I->assertEquals(ModelsMetadataProvider::class, $providers[4]);
$I->assertEquals(CliDispatcherProvider::class, $providers[5]);
}
}
26 changes: 26 additions & 0 deletions tests/unit/library/Providers/ModelsMetadataCest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace Niden\Tests\unit\library\Providers;

use Niden\Providers\ModelsMetadataProvider;
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Model\MetaData\Libmemcached;
use UnitTester;

class ModelsMetadataCest
{
/**
* @param UnitTester $I
*/
public function checkRegistration(UnitTester $I)
{
$diContainer = new FactoryDefault();
$provider = new ModelsMetadataProvider();
$provider->register($diContainer);

$I->assertTrue($diContainer->has('modelsMetadata'));
/** @var Libmemcached $cache */
$metadata = $diContainer->getShared('modelsMetadata');
$I->assertTrue($metadata instanceof Libmemcached);
}
}

0 comments on commit 01234b9

Please sign in to comment.