init
This commit is contained in:
commit
f3c0f9d890
|
@ -0,0 +1,89 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace dominion\settings;
|
||||||
|
|
||||||
|
use Yii;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the model class for table "settings".
|
||||||
|
*
|
||||||
|
* @property int $id
|
||||||
|
* @property string $code
|
||||||
|
* @property string $value
|
||||||
|
*/
|
||||||
|
class Settings extends \yii\db\ActiveRecord
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function tableName()
|
||||||
|
{
|
||||||
|
return 'settings';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[['code'], 'required'],
|
||||||
|
[['code'], 'string', 'max' => 500],
|
||||||
|
[['value'], 'string', 'max' => 5000],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function attributeLabels()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => 'ID',
|
||||||
|
'code' => 'Code',
|
||||||
|
'value' => 'Value',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getData($params, $root)
|
||||||
|
{
|
||||||
|
$query = self::find();
|
||||||
|
$root->andWhere($query, $params, ['id', 'code']);
|
||||||
|
$root->andWhereLike($query, $params, ['value']);
|
||||||
|
|
||||||
|
$root->setMetaByQuery($query);
|
||||||
|
$root->orderBy($query, $params, ['id', 'code', 'value']);
|
||||||
|
return $root->getItemsByPage($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получить настройки
|
||||||
|
*
|
||||||
|
* @param string $code символьный код уникальный
|
||||||
|
* @param string $defaulValue значение по умолчанию
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getValue($code, $defaulValue = false)
|
||||||
|
{
|
||||||
|
$model = Settings::find()->andWhere(['code' => $code])->one();
|
||||||
|
return empty($model) ? $defaulValue : $model->value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Сохранить настройк
|
||||||
|
*
|
||||||
|
* @param type $code
|
||||||
|
* @param type $value
|
||||||
|
*/
|
||||||
|
public static function setValue($code, $value)
|
||||||
|
{
|
||||||
|
$model = Settings::find()->andWhere(['code' => $code])->one();
|
||||||
|
if(empty($model))
|
||||||
|
{
|
||||||
|
$model = new Settings;
|
||||||
|
$model->code = $code;
|
||||||
|
}
|
||||||
|
$model->value = (string)$value;
|
||||||
|
return $model->save();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "dominion/settings",
|
||||||
|
"description": "Функционал для работы с settings",
|
||||||
|
"type": "yii2-extension",
|
||||||
|
"keywords": ["yii2","extension"],
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Rybkin Sasha",
|
||||||
|
"email": "ribkin@dominion.ru"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"yiisoft/yii2": "~2.0.0"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"dominion\\settings\\": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace dominion\settings\schema;
|
||||||
|
|
||||||
|
use GraphQL\Type\Definition\ObjectType;
|
||||||
|
use GraphQL\Type\Definition\Type;
|
||||||
|
use dominion\settings\Settings;
|
||||||
|
|
||||||
|
class SettingsMutationType extends ObjectType
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$config = [
|
||||||
|
'fields' => function() {
|
||||||
|
return [
|
||||||
|
'save' => [
|
||||||
|
'type' => Type::int(),
|
||||||
|
'description' => 'Сохранение наклейки',
|
||||||
|
'args' => [
|
||||||
|
'code' => Type::nonNull(Type::string()),
|
||||||
|
'value' => Type::nonNull(Type::string()),
|
||||||
|
],
|
||||||
|
'resolve' => function($root, $args) {
|
||||||
|
return Settings::setValue($args['code'], $args['value']);
|
||||||
|
},
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
parent::__construct($config);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace dominion\settings\schema;
|
||||||
|
|
||||||
|
use GraphQL\Type\Definition\Type;
|
||||||
|
use dominion\api\GraphQLSchemaPagination;
|
||||||
|
use dominion\settings\Settings;
|
||||||
|
use dominion\api\GraphQLPagination;
|
||||||
|
|
||||||
|
|
||||||
|
class SettingsPaginationType extends GraphQLSchemaPagination
|
||||||
|
{
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$config = [
|
||||||
|
'fields' => function(){
|
||||||
|
$output = $this->getCustomFields();
|
||||||
|
$output['data'] = [
|
||||||
|
'type' => Type::listOf(Types::settings()),
|
||||||
|
'description' => 'Настройки',
|
||||||
|
'args' => GraphQLPagination::argumentModify([
|
||||||
|
'id' => [
|
||||||
|
'type' => Type::int(),
|
||||||
|
'description' => 'Id',
|
||||||
|
],
|
||||||
|
'code' => [
|
||||||
|
'type' => Type::string(),
|
||||||
|
'description' => 'символьный код',
|
||||||
|
'modify' => true,
|
||||||
|
'modifyOption' => ['in'],
|
||||||
|
],
|
||||||
|
'sort' => [
|
||||||
|
'type' => Type::string(),
|
||||||
|
'description' => 'Сортировка (пример "isNew_asc" или "isVisible_desc")',
|
||||||
|
],
|
||||||
|
]),
|
||||||
|
'resolve' => function($root, $args){
|
||||||
|
return Settings::getData($args, $root);
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
parent::__construct($config);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace dominion\settings\schema;
|
||||||
|
|
||||||
|
use GraphQL\Type\Definition\ObjectType;
|
||||||
|
use GraphQL\Type\Definition\Type;
|
||||||
|
|
||||||
|
class SettingsType extends ObjectType
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$config = [
|
||||||
|
'fields' => function() {
|
||||||
|
return [
|
||||||
|
'id' => [
|
||||||
|
'type' => Type::int(),
|
||||||
|
'description' => 'Id',
|
||||||
|
],
|
||||||
|
'code' => [
|
||||||
|
'type' => Type::string(),
|
||||||
|
'description' => 'code',
|
||||||
|
],
|
||||||
|
'value' => [
|
||||||
|
'type' => Type::string(),
|
||||||
|
'description' => 'value',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
parent::__construct($config);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace dominion\settings\schema;
|
||||||
|
|
||||||
|
trait Types
|
||||||
|
{
|
||||||
|
private static $settings;
|
||||||
|
private static $settingsPagination;
|
||||||
|
//
|
||||||
|
private static $settingsMutation;
|
||||||
|
|
||||||
|
public static function settings()
|
||||||
|
{
|
||||||
|
return self::$settings ?: (self::$settings = new SettingsType());
|
||||||
|
}
|
||||||
|
public static function settingsPagination()
|
||||||
|
{
|
||||||
|
return self::$settingsPagination ?: (self::$settingsPagination = new SettingsPaginationType());
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static function settingsMutation()
|
||||||
|
{
|
||||||
|
return self::$settingsMutation ?: (self::$settingsMutation = new SettingsMutationType());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue