diff --git a/_ide_helper.php b/_ide_helper.php index 82638d37..9e3b891a 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -18213,6 +18213,64 @@ return \App\Services\TwoFAccountService::setUser($twofaccounts, $user); } } + /** + * + * + * @see \App\Services\SettingService + */ class Settings { + /** + * Get a setting + * + * @param string $setting A single setting name + * @return mixed string|int|boolean|null + * @static + */ public static function get($setting) + { + /** @var \App\Services\SettingService $instance */ + return $instance->get($setting); + } + /** + * Get all settings + * + * @return \App\Services\Collection the Settings collection + * @static + */ public static function all() + { + /** @var \App\Services\SettingService $instance */ + return $instance->all(); + } + /** + * Set a setting + * + * @param string|array $setting A single setting name or an associative array of name:value settings + * @param string|int|bool|null $value The value for single setting + * @static + */ public static function set($setting, $value = null) + { + /** @var \App\Services\SettingService $instance */ + return $instance->set($setting, $value); + } + /** + * Delete a setting + * + * @param string $name The setting name + * @static + */ public static function delete($name) + { + /** @var \App\Services\SettingService $instance */ + return $instance->delete($name); + } + /** + * Determine if the given setting has been edited + * + * @param string $key + * @static + */ public static function isEdited($key) + { + /** @var \App\Services\SettingService $instance */ + return $instance->isEdited($key); + } + } } namespace Jackiedo\DotenvEditor\Facades { @@ -22836,6 +22894,7 @@ class Vite extends \Illuminate\Support\Facades\Vite {} class QrCode extends \App\Facades\QrCode {} class Groups extends \App\Facades\Groups {} class TwoFAccounts extends \App\Facades\TwoFAccounts {} + class Settings extends \App\Facades\Settings {} class Helpers extends \App\Helpers\Helpers {} class DotenvEditor extends \Jackiedo\DotenvEditor\Facades\DotenvEditor {} class Agent extends \Jenssegers\Agent\Facades\Agent {} @@ -22843,6 +22902,35 @@ class Socialite extends \Laravel\Socialite\Facades\Socialite {} } +namespace Facades\App\Services { + /** + * @mixin \App\Services\ReleaseRadarService */ + class ReleaseRadarService extends \App\Services\ReleaseRadarService {} +} +namespace Illuminate\Support { + /** + * Methods commonly used in migrations + * + * @method Fluent after(string $column) Add the after modifier + * @method Fluent charset(string $charset) Add the character set modifier + * @method Fluent collation(string $collation) Add the collation modifier + * @method Fluent comment(string $comment) Add comment + * @method Fluent default($value) Add the default modifier + * @method Fluent first() Select first row + * @method Fluent index(string $name = null) Add the in dex clause + * @method Fluent on(string $table) `on` of a foreign key + * @method Fluent onDelete(string $action) `on delete` of a foreign key + * @method Fluent onUpdate(string $action) `on update` of a foreign key + * @method Fluent primary() Add the primary key modifier + * @method Fluent references(string $column) `references` of a foreign key + * @method Fluent nullable(bool $value = true) Add the nullable modifier + * @method Fluent unique(string $name = null) Add unique index clause + * @method Fluent unsigned() Add the unsigned modifier + * @method Fluent useCurrent() Add the default timestamp value + * @method Fluent change() Add the change modifier + */ + class Fluent {} +} diff --git a/config/app.php b/config/app.php index f3668014..c4e50142 100644 --- a/config/app.php +++ b/config/app.php @@ -170,10 +170,11 @@ */ 'aliases' => Facade::defaultAliases()->merge([ - 'QrCode' => App\Facades\QrCode::class, - 'Groups' => App\Facades\Groups::class, + 'QrCode' => App\Facades\QrCode::class, + 'Groups' => App\Facades\Groups::class, 'TwoFAccounts' => App\Facades\TwoFAccounts::class, - 'Helpers' => App\Helpers\Helpers::class, + 'Settings' => App\Facades\Settings::class, + 'Helpers' => App\Helpers\Helpers::class, ])->toArray(), ]; diff --git a/config/ide-helper.php b/config/ide-helper.php new file mode 100644 index 00000000..1f3139bc --- /dev/null +++ b/config/ide-helper.php @@ -0,0 +1,314 @@ + '_ide_helper.php', + + /* + |-------------------------------------------------------------------------- + | Models filename + |-------------------------------------------------------------------------- + | + | The default filename for the models helper file + | + */ + + 'models_filename' => '_ide_helper_models.php', + + /* + |-------------------------------------------------------------------------- + | Where to write the PhpStorm specific meta file + |-------------------------------------------------------------------------- + | + | PhpStorm also supports the directory `.phpstorm.meta.php/` with arbitrary + | files in it, should you need additional files for your project; e.g. + | `.phpstorm.meta.php/laravel_ide_Helper.php'. + | + */ + 'meta_filename' => '.phpstorm.meta.php', + + /* + |-------------------------------------------------------------------------- + | Fluent helpers + |-------------------------------------------------------------------------- + | + | Set to true to generate commonly used Fluent methods + | + */ + + 'include_fluent' => true, + + /* + |-------------------------------------------------------------------------- + | Factory Builders + |-------------------------------------------------------------------------- + | + | Set to true to generate factory generators for better factory() + | method auto-completion. + | + | Deprecated for Laravel 8 or latest. + | + */ + + 'include_factory_builders' => false, + + /* + |-------------------------------------------------------------------------- + | Write Model Magic methods + |-------------------------------------------------------------------------- + | + | Set to false to disable write magic methods of model + | + */ + + 'write_model_magic_where' => true, + + /* + |-------------------------------------------------------------------------- + | Write Model External Eloquent Builder methods + |-------------------------------------------------------------------------- + | + | Set to false to disable write external eloquent builder methods + | + */ + + 'write_model_external_builder_methods' => true, + + /* + |-------------------------------------------------------------------------- + | Write Model relation count properties + |-------------------------------------------------------------------------- + | + | Set to false to disable writing of relation count properties to model DocBlocks. + | + */ + + 'write_model_relation_count_properties' => true, + + /* + |-------------------------------------------------------------------------- + | Write Eloquent Model Mixins + |-------------------------------------------------------------------------- + | + | This will add the necessary DocBlock mixins to the model class + | contained in the Laravel Framework. This helps the IDE with + | auto-completion. + | + | Please be aware that this setting changes a file within the /vendor directory. + | + */ + + 'write_eloquent_model_mixins' => false, + + /* + |-------------------------------------------------------------------------- + | Helper files to include + |-------------------------------------------------------------------------- + | + | Include helper files. By default not included, but can be toggled with the + | -- helpers (-H) option. Extra helper files can be included. + | + */ + + 'include_helpers' => false, + + 'helper_files' => [ + base_path() . '/vendor/laravel/framework/src/Illuminate/Support/helpers.php', + ], + + /* + |-------------------------------------------------------------------------- + | Model locations to include + |-------------------------------------------------------------------------- + | + | Define in which directories the ide-helper:models command should look + | for models. + | + | glob patterns are supported to easier reach models in sub-directories, + | e.g. `app/Services/* /Models` (without the space) + | + */ + + 'model_locations' => [ + 'app', + ], + + /* + |-------------------------------------------------------------------------- + | Models to ignore + |-------------------------------------------------------------------------- + | + | Define which models should be ignored. + | + */ + + 'ignored_models' => [ + + ], + + /* + |-------------------------------------------------------------------------- + | Models hooks + |-------------------------------------------------------------------------- + | + | Define which hook classes you want to run for models to add custom information + | + | Hooks should implement Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface. + | + */ + + 'model_hooks' => [ + // App\Support\IdeHelper\MyModelHook::class + ], + + /* + |-------------------------------------------------------------------------- + | Extra classes + |-------------------------------------------------------------------------- + | + | These implementations are not really extended, but called with magic functions + | + */ + + 'extra' => [ + 'Eloquent' => ['Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'], + 'Session' => ['Illuminate\Session\Store'], + ], + + 'magic' => [], + + /* + |-------------------------------------------------------------------------- + | Interface implementations + |-------------------------------------------------------------------------- + | + | These interfaces will be replaced with the implementing class. Some interfaces + | are detected by the helpers, others can be listed below. + | + */ + + 'interfaces' => [ + + ], + + /* + |-------------------------------------------------------------------------- + | Support for camel cased models + |-------------------------------------------------------------------------- + | + | There are some Laravel packages (such as Eloquence) that allow for accessing + | Eloquent model properties via camel case, instead of snake case. + | + | Enabling this option will support these packages by saving all model + | properties as camel case, instead of snake case. + | + | For example, normally you would see this: + | + | * @property \Illuminate\Support\Carbon $created_at + | * @property \Illuminate\Support\Carbon $updated_at + | + | With this enabled, the properties will be this: + | + | * @property \Illuminate\Support\Carbon $createdAt + | * @property \Illuminate\Support\Carbon $updatedAt + | + | Note, it is currently an all-or-nothing option. + | + */ + 'model_camel_case_properties' => false, + + /* + |-------------------------------------------------------------------------- + | Property Casts + |-------------------------------------------------------------------------- + | + | Cast the given "real type" to the given "type". + | + */ + 'type_overrides' => [ + 'integer' => 'int', + 'boolean' => 'bool', + ], + + /* + |-------------------------------------------------------------------------- + | Include DocBlocks from classes + |-------------------------------------------------------------------------- + | + | Include DocBlocks from classes to allow additional code inspection for + | magic methods and properties. + | + */ + 'include_class_docblocks' => false, + + /* + |-------------------------------------------------------------------------- + | Force FQN usage + |-------------------------------------------------------------------------- + | + | Use the fully qualified (class) name in docBlock, + | event if class exists in a given file + | or there is an import (use className) of a given class + | + */ + 'force_fqn' => false, + + /* + |-------------------------------------------------------------------------- + | Use generics syntax + |-------------------------------------------------------------------------- + | + | Use generics syntax within DocBlocks, + | e.g. `Collection` instead of `Collection|User[]`. + | + */ + 'use_generics_annotations' => true, + + /* + |-------------------------------------------------------------------------- + | Additional relation types + |-------------------------------------------------------------------------- + | + | Sometimes it's needed to create custom relation types. The key of the array + | is the Relationship Method name. The value of the array is the canonical class + | name of the Relationship, e.g. `'relationName' => RelationShipClass::class`. + | + */ + 'additional_relation_types' => [], + + /* + |-------------------------------------------------------------------------- + | Additional relation return types + |-------------------------------------------------------------------------- + | + | When using custom relation types its possible for the class name to not contain + | the proper return type of the relation. The key of the array is the relationship + | method name. The value of the array is the return type of the relation ('many' + | or 'morphTo'). + | e.g. `'relationName' => 'many'`. + | + */ + 'additional_relation_return_types' => [], + + /* + |-------------------------------------------------------------------------- + | Run artisan commands after migrations to generate model helpers + |-------------------------------------------------------------------------- + | + | The specified commands should run after migrations are finished running. + | + */ + 'post_migrate' => [ + // 'ide-helper:models --nowrite', + ], + +]; diff --git a/tests/Feature/Services/SettingServiceTest.php b/tests/Feature/Services/SettingServiceTest.php index 87508f2e..5caf7537 100644 --- a/tests/Feature/Services/SettingServiceTest.php +++ b/tests/Feature/Services/SettingServiceTest.php @@ -147,7 +147,7 @@ public function test_all_returns_default_and_overloaded_settings() Settings::set(self::SETTING_NAME, self::SETTING_VALUE_STRING); - $all = Settings::all(); + $all = Settings::all()->toArray(); $this->assertArrayHasKey(self::SETTING_NAME, $all); $this->assertEquals($all[self::SETTING_NAME], self::SETTING_VALUE_STRING);