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