Skip to content

Commit

Permalink
refactor!: Rid of \Illuminate\Contracts\Config\Repository injection…
Browse files Browse the repository at this point in the history
… (related to #38).
  • Loading branch information
LastDragon-ru committed Dec 18, 2022
1 parent dd49fe7 commit cd8db7d
Show file tree
Hide file tree
Showing 18 changed files with 115 additions and 154 deletions.
15 changes: 8 additions & 7 deletions packages/core/src/Concerns/ProviderWithConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

namespace LastDragon_ru\LaraASP\Core\Concerns;

use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\Foundation\CachesConfiguration;
use Illuminate\Support\ServiceProvider;
use LastDragon_ru\LaraASP\Core\Utils\ConfigMerger;

use function config;

/**
* @mixin ServiceProvider
*/
Expand All @@ -25,13 +26,13 @@ protected function bootConfig(): void {

protected function loadConfigFrom(string $path, string $key): void {
if (!($this->app instanceof CachesConfiguration && $this->app->configurationIsCached())) {
$config = $this->app->make(Repository::class);
$target = require $path;
$merger = new ConfigMerger();
$target = (array) require $path;
$current = (array) config($key, []);

$config->set($key, (new ConfigMerger())->merge(
(array) $target,
(array) $config->get($key, []),
));
config([
$key => $merger->merge($target, $current),
]);
}
}
}
15 changes: 5 additions & 10 deletions packages/formatter/src/Formatter.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
use DateTimeInterface;
use DateTimeZone;
use Illuminate\Container\Container;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Support\Traits\Macroable;
use IntlDateFormatter;
Expand All @@ -20,6 +19,7 @@
use OutOfBoundsException;

use function abs;
use function config;
use function is_int;
use function is_null;
use function is_string;
Expand Down Expand Up @@ -184,7 +184,6 @@ class Formatter {

public function __construct(
private Application $application,
private Repository $config,
private PackageTranslator $translator,
) {
// empty
Expand Down Expand Up @@ -243,10 +242,6 @@ protected function getApplication(): Application {
return $this->application;
}

protected function getConfig(): Repository {
return $this->config;
}

protected function getTranslator(): PackageTranslator {
return $this->translator;
}
Expand Down Expand Up @@ -395,21 +390,21 @@ protected function getDefaultLocale(): string {
}

protected function getDefaultTimezone(): IntlTimeZone|DateTimeZone|string|null {
return $this->getConfig()->get('app.timezone') ?: null;
return config('app.timezone') ?: null;
}

protected function getOptions(string $type, mixed $default = null): mixed {
$package = Package::Name;
$key = "{$package}.options.{$type}";

return $this->getConfig()->get($key, $default);
return config($key, $default);
}

protected function getLocaleOptions(string $type, string $option): mixed {
$package = Package::Name;
$locale = $this->getLocale();
$pattern = $this->getConfig()->get("{$package}.locales.{$locale}.{$type}.{$option}")
?: $this->getConfig()->get("{$package}.all.{$type}.{$option}");
$pattern = config("{$package}.locales.{$locale}.{$type}.{$option}")
?: config("{$package}.all.{$type}.{$option}");

return $pattern;
}
Expand Down
9 changes: 7 additions & 2 deletions packages/graphql/src/Builder/Operators.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,13 @@ abstract class Operators {
*/
protected array $operators = [];

public function __construct() {
// empty
/**
* @param array<string, array<class-string<Operator>|string>> $operators
*/
public function __construct(array $operators = []) {
foreach ($operators as $key => $value) {
$this->setOperators($key, $value);
}
}

abstract public function getScope(): string;
Expand Down
13 changes: 6 additions & 7 deletions packages/graphql/src/Provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

namespace LastDragon_ru\LaraASP\GraphQL;

use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\Container\Container;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\ServiceProvider;
use LastDragon_ru\LaraASP\Core\Concerns\ProviderWithConfig;
Expand All @@ -24,6 +22,7 @@
use Nuwave\Lighthouse\Schema\TypeRegistry;

use function array_slice;
use function config;
use function explode;
use function implode;
use function is_int;
Expand Down Expand Up @@ -64,18 +63,18 @@ protected function registerDirectives(): void {
$this->app->bindIf(ScoutFieldResolver::class, ScoutDefaultFieldResolver::class);
$this->callAfterResolving(
Manipulator::class,
static function (Manipulator $manipulator, Container $container): void {
$manipulator->addOperators($container->make(SearchByOperators::class));
$manipulator->addOperators($container->make(SortByOperators::class));
static function (Manipulator $manipulator): void {
$manipulator->addOperators(new SearchByOperators());
$manipulator->addOperators(new SortByOperators());
},
);
}

protected function registerEnums(): void {
$this->callAfterResolving(
TypeRegistry::class,
function (TypeRegistry $registry, Container $container): void {
$enums = (array) $container->make(Repository::class)->get("{$this->getName()}.enums");
function (TypeRegistry $registry): void {
$enums = (array) config("{$this->getName()}.enums");

foreach ($enums as $name => $enum) {
if (is_int($name)) {
Expand Down
9 changes: 5 additions & 4 deletions packages/graphql/src/SearchBy/Directives/DirectiveTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
use GraphQL\Type\Definition\EnumType;
use GraphQL\Type\Definition\InputObjectType;
use GraphQL\Type\Definition\Type;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Database\Eloquent\Model as EloquentModel;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Expand Down Expand Up @@ -52,6 +51,7 @@
use Nuwave\Lighthouse\Testing\MakesGraphQLRequests;

use function assert;
use function config;
use function implode;
use function is_array;
use function json_encode;
Expand Down Expand Up @@ -361,10 +361,11 @@ static function (self $test): GraphQLExpectedSchema {
'~example.graphql',
static function (TestCase $test): void {
$package = Package::Name;
$config = $test->app->make(Repository::class);

$config->set("{$package}.search_by.operators.Date", [
Between::class,
config([
"{$package}.search_by.operators.Date" => [
Between::class,
],
]);
},
],
Expand Down
13 changes: 5 additions & 8 deletions packages/graphql/src/SearchBy/Operators.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace LastDragon_ru\LaraASP\GraphQL\SearchBy;

use Illuminate\Contracts\Config\Repository;
use LastDragon_ru\LaraASP\GraphQL\Builder\Contracts\Operator as BuilderOperator;
use LastDragon_ru\LaraASP\GraphQL\Builder\Operators as BuilderOperators;
use LastDragon_ru\LaraASP\GraphQL\Package;
Expand Down Expand Up @@ -35,6 +34,8 @@
use LastDragon_ru\LaraASP\GraphQL\SearchBy\Operators\Logical\AnyOf;
use LastDragon_ru\LaraASP\GraphQL\SearchBy\Operators\Logical\Not;

use function config;

class Operators extends BuilderOperators {
public const Extra = 'Extra';
public const Number = 'Number';
Expand Down Expand Up @@ -113,15 +114,11 @@ class Operators extends BuilderOperators {
],
];

public function __construct(Repository $config) {
parent::__construct();

public function __construct() {
/** @var array<string,array<class-string<BuilderOperator>|string>> $operators */
$operators = (array) $config->get(Package::Name.'.search_by.operators');
$operators = (array) config(Package::Name.'.search_by.operators');

foreach ($operators as $type => $typeOperators) {
$this->setOperators($type, $typeOperators);
}
parent::__construct($operators);
}

public function getScope(): string {
Expand Down
18 changes: 7 additions & 11 deletions packages/graphql/src/SearchBy/OperatorsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace LastDragon_ru\LaraASP\GraphQL\SearchBy;

use Illuminate\Contracts\Config\Repository;
use LastDragon_ru\LaraASP\GraphQL\Package;
use LastDragon_ru\LaraASP\GraphQL\SearchBy\Operators\Comparison\Equal;
use LastDragon_ru\LaraASP\GraphQL\SearchBy\Operators\Comparison\NotEqual;
use LastDragon_ru\LaraASP\GraphQL\Testing\Package\TestCase;
use Mockery;

use function config;

/**
* @internal
Expand All @@ -20,22 +20,18 @@ class OperatorsTest extends TestCase {
* @covers ::__construct
*/
public function testConstructor(): void {
$config = Mockery::mock(Repository::class);
$config
->shouldReceive('get')
->with(Package::Name.'.search_by.operators')
->andReturn([
config([
Package::Name.'.search_by.operators' => [
Operators::ID => [
Equal::class,
],
Operators::Int => [
NotEqual::class,
],
]);
],
]);

$operators = new class($config) extends Operators {
// empty
};
$operators = $this->app->make(Operators::class);

self::assertTrue($operators->hasOperators(Operators::ID));
self::assertTrue($operators->hasOperators(Operators::Int));
Expand Down
21 changes: 11 additions & 10 deletions packages/graphql/src/SortBy/Directives/DirectiveTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use GraphQL\Type\Definition\InputObjectType;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Database\Query\Builder as QueryBuilder;
use LastDragon_ru\LaraASP\GraphQL\Builder\Exceptions\Client\ConditionTooManyProperties;
use LastDragon_ru\LaraASP\GraphQL\Builder\Exceptions\TypeDefinitionImpossibleToCreateType;
Expand All @@ -24,7 +23,7 @@
use Nuwave\Lighthouse\Schema\DirectiveLocator;
use Nuwave\Lighthouse\Schema\TypeRegistry;
use Nuwave\Lighthouse\Scout\SearchDirective;

use function config;
use function is_array;

/**
Expand Down Expand Up @@ -230,11 +229,12 @@ static function (self $test): GraphQLExpectedSchema {
'~full.graphql',
static function (TestCase $test): void {
$package = Package::Name;
$config = $test->app->make(Repository::class);

$config->set("{$package}.sort_by.operators", [
Operators::Extra => [
Random::class,
config([
"{$package}.sort_by.operators" => [
Operators::Extra => [
Random::class,
],
],
]);
},
Expand Down Expand Up @@ -344,11 +344,12 @@ public function dataProviderHandleBuilder(): array {
],
static function (TestCase $test): void {
$package = Package::Name;
$config = $test->app->make(Repository::class);

$config->set("{$package}.sort_by.operators", [
Operators::Extra => [
Random::class,
config([
"{$package}.sort_by.operators" => [
Operators::Extra => [
Random::class,
],
],
]);
},
Expand Down
21 changes: 6 additions & 15 deletions packages/graphql/src/SortBy/Operators.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,22 @@

namespace LastDragon_ru\LaraASP\GraphQL\SortBy;

use Illuminate\Contracts\Config\Repository;
use LastDragon_ru\LaraASP\GraphQL\Builder\Contracts\Operator as BuilderOperator;
use LastDragon_ru\LaraASP\GraphQL\Builder\Operators as BuilderOperators;
use LastDragon_ru\LaraASP\GraphQL\Package;
use LastDragon_ru\LaraASP\GraphQL\SortBy\Directives\Directive;

use function config;

class Operators extends BuilderOperators {
public const Extra = 'Extra';

/**
* @inheritDoc
*/
protected array $operators = [
// empty
];

public function __construct(Repository $config) {
parent::__construct();

public function __construct() {
/** @var array<string,array<class-string<BuilderOperator>|string>> $operators */
$operators = (array) $config->get(Package::Name.'.sort_by.operators');
$operators = (array) config(Package::Name.'.sort_by.operators');


foreach ($operators as $type => $typeOperators) {
$this->setOperators($type, $typeOperators);
}
parent::__construct($operators);
}

public function getScope(): string {
Expand Down
18 changes: 7 additions & 11 deletions packages/graphql/src/SortBy/OperatorsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

namespace LastDragon_ru\LaraASP\GraphQL\SortBy;

use Illuminate\Contracts\Config\Repository;
use LastDragon_ru\LaraASP\GraphQL\Package;
use LastDragon_ru\LaraASP\GraphQL\SortBy\Operators\Extra\Random;
use LastDragon_ru\LaraASP\GraphQL\Testing\Package\TestCase;
use Mockery;

use function config;

/**
* @internal
Expand All @@ -19,19 +19,15 @@ class OperatorsTest extends TestCase {
* @covers ::__construct
*/
public function testConstructor(): void {
$config = Mockery::mock(Repository::class);
$config
->shouldReceive('get')
->with(Package::Name.'.sort_by.operators')
->andReturn([
config([
Package::Name.'.sort_by.operators' => [
Operators::Extra => [
Random::class,
],
]);
],
]);

$operators = new class($config) extends Operators {
// empty
};
$operators = $this->app->make(Operators::class);

self::assertTrue($operators->hasOperators(Operators::Extra));
self::assertFalse($operators->hasOperators('unknown'));
Expand Down
Loading

0 comments on commit cd8db7d

Please sign in to comment.