Begin moving packs to new service mechanisms, refactor exceptions for services

This commit is contained in:
Dane Everitt 2017-08-18 22:19:06 -05:00
parent 46cb71e69d
commit 9d3dca87f2
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
62 changed files with 492 additions and 303 deletions

View file

@ -28,10 +28,12 @@ use Pterodactyl\Models\Location;
use Pterodactyl\Exceptions\DisplayException;
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
use Pterodactyl\Repositories\Eloquent\Attributes\SearchableRepository;
use Pterodactyl\Repositories\Concerns\Searchable;
class LocationRepository extends SearchableRepository implements LocationRepositoryInterface
class LocationRepository extends EloquentRepository implements LocationRepositoryInterface
{
use Searchable;
/**
* @var string
*/

View file

@ -27,10 +27,12 @@ namespace Pterodactyl\Repositories\Eloquent;
use Pterodactyl\Models\Node;
use Pterodactyl\Contracts\Repository\NodeRepositoryInterface;
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
use Pterodactyl\Repositories\Eloquent\Attributes\SearchableRepository;
use Pterodactyl\Repositories\Concerns\Searchable;
class NodeRepository extends SearchableRepository implements NodeRepositoryInterface
class NodeRepository extends EloquentRepository implements NodeRepositoryInterface
{
use Searchable;
/**
* {@inheritdoc}
*/

View file

@ -22,30 +22,44 @@
* SOFTWARE.
*/
namespace Pterodactyl\Repositories\Eloquent\Attributes;
namespace Pterodactyl\Repositories\Eloquent;
use Pterodactyl\Repositories\Eloquent\EloquentRepository;
use Pterodactyl\Contracts\Repository\Attributes\SearchableInterface;
use Pterodactyl\Models\Pack;
use Illuminate\Contracts\Filesystem\Factory as FilesystemFactory;
use Pterodactyl\Repositories\Concerns\Searchable;
use Pterodactyl\Contracts\Repository\PackRepositoryInterface;
abstract class SearchableRepository extends EloquentRepository implements SearchableInterface
class PackRepository extends EloquentRepository implements PackRepositoryInterface
{
/**
* @var bool|string
*/
protected $searchTerm = false;
use Searchable;
/**
* {@inheritdoc}
*/
public function search($term)
public function model()
{
if (empty($term)) {
return $this;
}
return Pack::class;
}
$clone = clone $this;
$clone->searchTerm = $term;
/**
* {@inheritdoc}
*/
public function getFileArchives($id, $collection = false)
{
$pack = $this->getBuilder()->find($id, ['id', 'uuid']);
$storage = $this->app->make(FilesystemFactory::class);
$files = collect($storage->disk('default')->files('packs/' . $pack->uuid));
return $clone;
$files = $files->map(function ($file) {
$path = storage_path('app/' . $file);
return (object) [
'name' => basename($file),
'hash' => sha1_file($path),
'size' => human_readable($path),
];
});
return ($collection) ? $files : (object) $files->all();
}
}

View file

@ -25,12 +25,14 @@
namespace Pterodactyl\Repositories\Eloquent;
use Pterodactyl\Models\Server;
use Pterodactyl\Repositories\Concerns\Searchable;
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
use Pterodactyl\Repositories\Eloquent\Attributes\SearchableRepository;
class ServerRepository extends SearchableRepository implements ServerRepositoryInterface
class ServerRepository extends EloquentRepository implements ServerRepositoryInterface
{
use Searchable;
/**
* {@inheritdoc}
*/

View file

@ -26,12 +26,14 @@ namespace Pterodactyl\Repositories\Eloquent;
use Pterodactyl\Models\User;
use Illuminate\Foundation\Application;
use Pterodactyl\Repositories\Concerns\Searchable;
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
use Illuminate\Contracts\Config\Repository as ConfigRepository;
use Pterodactyl\Repositories\Eloquent\Attributes\SearchableRepository;
class UserRepository extends SearchableRepository implements UserRepositoryInterface
class UserRepository extends EloquentRepository implements UserRepositoryInterface
{
use Searchable;
/**
* @var \Illuminate\Contracts\Config\Repository
*/