Skip to content

Commit

Permalink
添加redis驱动支持
Browse files Browse the repository at this point in the history
  • Loading branch information
jhasheng committed Jun 5, 2016
1 parent f36dc19 commit 663e782
Show file tree
Hide file tree
Showing 20 changed files with 134 additions and 123 deletions.
11 changes: 10 additions & 1 deletion config/purple.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,13 @@
* Email: [email protected]
*/

return [];
return [
// 路由前缀
'prefix' => '_purple',

// 表名/redis key名
'table' => 'purple',

// 存储方式
'storage' => 'mysql'
];
21 changes: 0 additions & 21 deletions src/Adapter/AdapterInterface.php

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* Email: [email protected]
*/

namespace Purple\Collections;
namespace Purple\Collectors;


use Illuminate\Foundation\Application;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* Email: [email protected]
*/

namespace Purple\Collections;
namespace Purple\Collectors;

use Illuminate\Foundation\Application;
use Symfony\Component\HttpFoundation\Response;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Time: 11:48 PM
*/

namespace Purple\Collections;
namespace Purple\Collectors;


use Illuminate\Foundation\Application;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Time: 8:35 PM
*/

namespace Purple\Collections;
namespace Purple\Collectors;


use Illuminate\Foundation\Application;
Expand Down
2 changes: 1 addition & 1 deletion src/Collections/Event.php → src/Collectors/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Time: 6:58 PM
*/

namespace Purple\Collections;
namespace Purple\Collectors;


use Illuminate\Foundation\Application;
Expand Down
2 changes: 1 addition & 1 deletion src/Collections/Info.php → src/Collectors/Info.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Time: 11:44 PM
*/

namespace Purple\Collections;
namespace Purple\Collectors;

use Illuminate\Foundation\Application;
use Symfony\Component\HttpFoundation\Response;
Expand Down
2 changes: 1 addition & 1 deletion src/Collections/Request.php → src/Collectors/Request.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* Email: [email protected]
*/

namespace Purple\Collections;
namespace Purple\Collectors;


use Illuminate\Foundation\Application;
Expand Down
2 changes: 1 addition & 1 deletion src/Collections/Route.php → src/Collectors/Route.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Time: 9:57 PM
*/

namespace Purple\Collections;
namespace Purple\Collectors;


use Illuminate\Foundation\Application;
Expand Down
2 changes: 1 addition & 1 deletion src/Controller/PurpleController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Application;
use Purple\Collections\CollectionInterface;
use Purple\Collectors\CollectionInterface;

class PurpleController extends Controller
{
Expand Down
16 changes: 8 additions & 8 deletions src/PurpleHook.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
namespace Purple;

use Illuminate\Foundation\Application;
use Purple\Collections\CollectionInterface;
use Purple\Collections\Dashboard;
use Purple\Collections\Database;
use Purple\Collections\Event;
use Purple\Collections\Info;
use Purple\Collections\Request;
use Purple\Collections\Route;
use Purple\Collectors\CollectionInterface;
use Purple\Collectors\Dashboard;
use Purple\Collectors\Database;
use Purple\Collectors\Event;
use Purple\Collectors\Info;
use Purple\Collectors\Request;
use Purple\Collectors\Route;
use Purple\Exceptions\InvalidCollectionException;
use Symfony\Component\HttpFoundation\Response;

Expand Down Expand Up @@ -169,7 +169,7 @@ protected function isAjax()
protected function endHook()
{
/**
* @var $collection \Purple\Collections\CollectionInterface
* @var $collection \Purple\Collectors\CollectionInterface
*/
$request = $this->app['purple.request'];
$collectionData = [];
Expand Down
32 changes: 13 additions & 19 deletions src/PurpleServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
namespace Purple;

use Illuminate\Support\ServiceProvider;
use Purple\Adapter\MySQL;
use Purple\Request\Request;
use Purple\Storage\Storage;
use Purple\Storage\RedisStorage;

class PurpleServiceProvider extends ServiceProvider
{
Expand Down Expand Up @@ -35,17 +34,16 @@ public function boot()
public function register()
{
$app = $this->app;
$app->singleton('purple.adapter', MySQL::class);

$app->singleton('purple.storage', function ($app) {
return new Storage($app['purple.adapter']);
$app->singleton('purple.storage', function($app) {
$storage = new RedisStorage();
$storage->setApplication($app);
return $storage;
});
$app->singleton('purple.hook', PurpleHook::class);

$app->singleton('purple.request', Request::class);
/**
* @var $purple \Purple\PurpleHook
*/
/** @var $purple \Purple\PurpleHook */
$purple = $app->make('purple.hook');
$purple->setPrefix($app['config']->get('purple.prefix', '_purple'));
$purple->registerHook();
Expand All @@ -64,17 +62,17 @@ protected function registerCommand()
*/
protected function registerRouter()
{
/**
* @var $config \Illuminate\Config\Repository
*/
/** @var $config \Illuminate\Config\Repository */
$config = $this->app['config'];
$prefix = $config->get('purple.prefix', '_purple');

/**
* @var $router \Illuminate\Routing\Router
*/
/** @var $router \Illuminate\Routing\Router */
$router = $this->app['router'];
$router->get('/{id}/{key?}', ['prefix' => $prefix, 'as' => 'purple.index', 'uses' => 'Purple\Controller\PurpleController@index']);
$router->get('/{id}/{key?}', [
'prefix' => $prefix,
'as' => 'purple.index',
'uses' => 'Purple\Controller\PurpleController@index'
]);
}

/**
Expand All @@ -94,10 +92,6 @@ protected function publishAssetsFiles()
__DIR__ . '/../migrations' => database_path('migrations')
], 'purple.sql');

// $this->publishes([
// __DIR__ . '/Resources' => resource_path('views/purple')
// ], 'purple.view');

}

}
5 changes: 5 additions & 0 deletions src/Request/Request.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ public function setUuid($uuid)
{
$this->uuid = $uuid;
}

public function getUuid()
{
return $this->uuid;
}

/**
* @param mixed $time
Expand Down
23 changes: 0 additions & 23 deletions src/Storage/AbstractStorage.php

This file was deleted.

26 changes: 12 additions & 14 deletions src/Adapter/MySQL.php → src/Storage/MySQLStorage.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,36 @@
* Created by PhpStorm.
* User: Krasen
* Date: 16/5/17
* Time: 17:23
* Time: 16:32
* Email: [email protected]
*/

namespace Purple\Adapter;
namespace Purple\Storage;

use DB;
use Illuminate\Database\Eloquent\Model;
use Purple\Request\Request;
use Illuminate\Database\Eloquent\Model;


class MySQL extends Model implements AdapterInterface
class MySQLStorage extends Model implements StorageInterface
{
use StorageTrait;

protected $table = 'purple';

protected $fillable = ['uuid', 'uri', 'content', 'time'];

public function store(Request $request)
public function retrieve($id)
{
try {
self::create($request->toArray());
}catch (\Exception $e) {
throw new \Exception($e->getMessage());
}

return unserialize(DB::table('purple')->where('uuid', $id)->value('content'));
}

public function retrieve($id)
public function store(Request $request)
{
return DB::table('purple')->where('uuid', $id)->first();
self::create($request->toArray());
}

public function clear()
public function purge()
{
DB::table('purple')->truncate();
}
Expand Down
53 changes: 53 additions & 0 deletions src/Storage/RedisStorage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php
/**
* Created by PhpStorm.
* User: krasen
* Date: 6/5/2016
* Time: 3:28 PM
*/

namespace Purple\Storage;

use Cache;
use Purple\Request\Request;

class RedisStorage implements StorageInterface
{
use StorageTrait;

public function retrieve($id)
{
/**
* @var $config \Illuminate\Config\Repository
*/
$config = $this->app['config'];
$table = $config->get('purple.table', 'purple');

$client = Cache::store('redis')->connection();
$values = unserialize($client->hget($table, $id));
return unserialize($values['content']);
}

public function store(Request $request)
{
/**
* @var $config \Illuminate\Config\Repository
*/
$config = $this->app['config'];
$table = $config->get('purple.table', 'purple');

$client = Cache::store('redis')->connection();
$client->hset($table, $request->getUuid(), serialize($request->toArray()));
}

public function purge()
{
/**
* @var $config \Illuminate\Config\Repository
*/
$config = $this->app['config'];
$table = $config->get('purple.table', 'purple');

Cache::store('redis')->del($table);
}
}
28 changes: 0 additions & 28 deletions src/Storage/Storage.php

This file was deleted.

Loading

0 comments on commit 663e782

Please sign in to comment.