Skip to content

Commit

Permalink
(feat): Added Laravel 11 support
Browse files Browse the repository at this point in the history
  • Loading branch information
rickgoemans committed Mar 13, 2024
1 parent 6c97e87 commit 3d4f5d3
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 52 deletions.
20 changes: 10 additions & 10 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@
}
],
"require": {
"php": "^8.1",
"illuminate/contracts": "^10.0",
"spatie/laravel-data": "^3.5",
"php": "^8.2",
"illuminate/contracts": "^11.0",
"spatie/laravel-data": "^4.1.0",
"spatie/laravel-package-tools": "^1.14.0"
},
"require-dev": {
"larastan/larastan": "^2.0",
"laravel/pint": "^1.0",
"nunomaduro/collision": "^7.8",
"orchestra/testbench": "^8.8",
"pestphp/pest": "^2.20",
"pestphp/pest-plugin-arch": "^2.0",
"pestphp/pest-plugin-laravel": "^2.0",
"laravel/pint": "^1.13",
"nunomaduro/collision": "^8.1",
"larastan/larastan": "^2.8",
"orchestra/testbench": "^9.0",
"pestphp/pest": "^2.34",
"pestphp/pest-plugin-arch": "^2.5",
"pestphp/pest-plugin-laravel": "^2.3",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0"
Expand Down
19 changes: 0 additions & 19 deletions src/Commands/LaravelUserSettingsCommand.php

This file was deleted.

4 changes: 2 additions & 2 deletions src/Concerns/ScopesUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ public static function bootScopesUser(): void
$query->where('user_id', $user->getKey());
});

static::saving(function (Model $model) use ($user) {
static::saving(function (Model $model) use ($user): void {
if (! $user instanceof Model) {
return;
}

$model->user_id = $user->getKey();
$model->user_id = $user->getKey(); /** @phpstan-ignore-line */
});
}
}
1 change: 1 addition & 0 deletions src/DataTransferObjects/UserSettingData.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public function __construct(
public UserSettingType $type,
public string $group,
public string $key,
public ?int $id = null,
public ?int $user_id = null,
public mixed $value = null,
public mixed $defaultValue = null,
Expand Down
9 changes: 4 additions & 5 deletions src/LaravelUserSettingsServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Rickgoemans\LaravelUserSettings;

use Rickgoemans\LaravelUserSettings\Commands\LaravelUserSettingsCommand;
use Illuminate\Contracts\Foundation\Application;
use Rickgoemans\LaravelUserSettings\Services\UserSettingService;
use Spatie\LaravelPackageTools\Package;
use Spatie\LaravelPackageTools\PackageServiceProvider;
Expand All @@ -18,15 +18,14 @@ public function configurePackage(Package $package): void
*/
$package
->name('laravel-user-settings')
->hasConfigFile()
->hasMigration('create_user_settings_table')
->hasCommand(LaravelUserSettingsCommand::class);
->hasConfigFile('user-settings')
->hasMigration('create_user_settings_table');
}

public function registeringPackage(): void
{
parent::registeringPackage();

app()->singleton(UserSettingService::class, UserSettingService::class);
$this->app->singleton(UserSettingService::class, fn (Application $app): UserSettingService => new UserSettingService());
}
}
12 changes: 3 additions & 9 deletions src/Models/UserSetting.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,19 @@ class UserSetting extends Model

protected $dataClass = UserSettingData::class;

/**
* {@inheritdoc}
*/
/** {@inheritdoc} */
public function newEloquentBuilder($query): UserSettingQueryBuilder
{
return new UserSettingQueryBuilder($query);
}

/**
* {@inheritdoc}
*/
/** {@inheritdoc} */
public static function newFactory(): UserSettingFactory
{
return UserSettingFactory::new();
}

/**
* {@inheritdoc}
*/
/** {@inheritdoc} */
public function newCollection(array $models = []): UserSettingCollection
{
return new UserSettingCollection($models);
Expand Down
15 changes: 10 additions & 5 deletions src/Services/UserSettingService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Rickgoemans\LaravelUserSettings\Collections\UserSettingCollection;
use Rickgoemans\LaravelUserSettings\DataTransferObjects\UserSettingData;
use Rickgoemans\LaravelUserSettings\Models\UserSetting;

Expand Down Expand Up @@ -46,13 +47,16 @@ public function set(string $group, string $key, mixed $payload): ?UserSetting
return null;
}

return UserSetting::updateOrCreate([
/** @var UserSetting $userSetting */
$userSetting = UserSetting::updateOrCreate([
'group' => $group,
'key' => $key,
], [
...$setting->except('created_at', 'updated_at')->all(),
'value' => $payload,
]);

return $userSetting;
}

public function migrate(): void
Expand All @@ -64,17 +68,18 @@ public function migrate(): void
}

Cache::remember("user-settings.{$user->getKey()}", 60 * 60, function () use ($user) {
/** @var UserSettingCollection $userSettings */
$userSettings = UserSetting::query()
->forUser($user->getKey())
->get();

$this->registeredSettings
->each(function (UserSettingData $data) use ($userSettings) {
$dbSetting = $userSettings->first(fn (UserSetting $setting) => $setting->group == $data->group
&& $setting->key == $data->key);

$dbSetting = $userSettings->first(fn (UserSetting $setting): bool => $setting->group === $data->group && $setting->key === $data->key); /** @phpstan-ignore-line */
if (! $dbSetting) {
UserSetting::create($data->except('defaultValue', 'created_at', 'updated_at')->all());
$userSetting = new UserSetting();
$userSetting->fill($data->except('defaultValue', 'created_at', 'updated_at')->all());
$userSetting->save();
}
});
});
Expand Down
2 changes: 1 addition & 1 deletion tests/ArchTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

arch('it will not use debugging functions')
->expect(['dd', 'dump', 'ray'])
->each->not->toBeUsed();
->each->not->toBeUsed();
2 changes: 1 addition & 1 deletion workbench/app/Providers/WorkbenchServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ public function boot(): void
{
Route::view('/', 'welcome');
}
}
}

0 comments on commit 3d4f5d3

Please sign in to comment.