feat: add image model and api controller
This commit is contained in:
parent
a5eb1d859b
commit
949006b68d
|
@ -14,7 +14,10 @@ $config = [
|
|||
'components' => [
|
||||
'request' => [
|
||||
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
|
||||
'cookieValidationKey' => 'lMAfMLborfQnIGmHY25_bz_WLAwK0Cx_',
|
||||
'cookieValidationKey' => 'never mind this, it is not used at all',
|
||||
'parsers' => [
|
||||
'application/json' => 'yii\web\JsonParser',
|
||||
],
|
||||
],
|
||||
'cache' => [
|
||||
'class' => 'yii\caching\FileCache',
|
||||
|
@ -42,14 +45,13 @@ $config = [
|
|||
],
|
||||
],
|
||||
'db' => $db,
|
||||
/*
|
||||
'urlManager' => [
|
||||
'enablePrettyUrl' => true,
|
||||
'showScriptName' => false,
|
||||
'rules' => [
|
||||
[ 'class' => 'yii\rest\UrlRule', 'controller' => 'Api' ],
|
||||
],
|
||||
],
|
||||
*/
|
||||
],
|
||||
'params' => $params,
|
||||
];
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace app\controllers;
|
||||
use app\models\Parameter;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use yii\rest\IndexAction;
|
||||
|
||||
class ApiController extends \yii\rest\Controller
|
||||
{
|
||||
public function actionIndex()
|
||||
{
|
||||
return Parameter::find()->with(['icon', 'iconGray'])->all();
|
||||
}
|
||||
|
||||
public function verbs()
|
||||
{
|
||||
return [
|
||||
'index' => [ 'GET' ],
|
||||
];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
use yii\db\cubrid\Schema;
|
||||
use yii\db\Migration;
|
||||
|
||||
/**
|
||||
* Class m240819_102301_image
|
||||
*/
|
||||
class m240819_102301_image extends Migration
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function safeUp()
|
||||
{
|
||||
$this->createTable('image', [
|
||||
'id' => Schema::TYPE_PK,
|
||||
'sha256' => Schema::TYPE_STRING . ' NOT NULL',
|
||||
'original_name' => Schema::TYPE_STRING . ' NOT NULL'
|
||||
]);
|
||||
$this->addColumn('parameters', 'icon', 'INT(11) DEFAULT NULL');
|
||||
$this->addColumn('parameters', 'icon_gray', 'INT(11) DEFAULT NULL');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function safeDown()
|
||||
{
|
||||
$this->dropTable('image');
|
||||
$this->dropColumn('parameters', 'icon');
|
||||
$this->dropColumn('parameters', 'icon_gray');
|
||||
}
|
||||
|
||||
/*
|
||||
// Use up()/down() to run migration code without a transaction.
|
||||
public function up()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
echo "m240819_102301_image cannot be reverted.\n";
|
||||
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
}
|
|
@ -5,20 +5,20 @@ namespace app\models;
|
|||
use Yii;
|
||||
|
||||
/**
|
||||
* This is the model class for table "parameters".
|
||||
* This is the model class for table "image".
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $title
|
||||
* @property int $type
|
||||
* @property string $sha256
|
||||
* @property string $original_name
|
||||
*/
|
||||
class Parameters extends \yii\db\ActiveRecord
|
||||
class Image extends \yii\db\ActiveRecord
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function tableName()
|
||||
{
|
||||
return 'parameters';
|
||||
return 'image';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -27,9 +27,8 @@ class Parameters extends \yii\db\ActiveRecord
|
|||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['title', 'type'], 'required'],
|
||||
[['type'], 'integer'],
|
||||
[['title'], 'string', 'max' => 255],
|
||||
[['sha256', 'original_name'], 'required'],
|
||||
[['sha256', 'original_name'], 'string', 'max' => 255],
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -40,8 +39,8 @@ class Parameters extends \yii\db\ActiveRecord
|
|||
{
|
||||
return [
|
||||
'id' => 'ID',
|
||||
'title' => 'Title',
|
||||
'type' => 'Type',
|
||||
'sha256' => 'Sha256',
|
||||
'original_name' => 'Original Name',
|
||||
];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
<?php
|
||||
|
||||
namespace app\models;
|
||||
|
||||
use Yii;
|
||||
use yii\db\ActiveQuery;
|
||||
|
||||
/**
|
||||
* This is the model class for table "parameters".
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $title
|
||||
* @property int $type
|
||||
*/
|
||||
class Parameter extends \yii\db\ActiveRecord
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function tableName()
|
||||
{
|
||||
return 'parameters';
|
||||
}
|
||||
|
||||
public function getIcon()
|
||||
{
|
||||
return $this->hasOne(Image::class, [ 'id' => 'icon' ]);
|
||||
}
|
||||
|
||||
public function getIconGray()
|
||||
{
|
||||
return $this->hasOne(Image::class, [ 'id' => 'icon_gray' ]);
|
||||
}
|
||||
|
||||
public function fields()
|
||||
{
|
||||
$fields = parent::fields();
|
||||
|
||||
$fields['icon'] = function (Parameter $parameter) {
|
||||
return $parameter->relatedRecords['icon'];
|
||||
};
|
||||
|
||||
$fields['icon_gray'] = function (Parameter $parameter) {
|
||||
return $parameter->relatedRecords['iconGray'];
|
||||
};
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['title', 'type'], 'required'],
|
||||
[['type'], 'integer'],
|
||||
[['title'], 'string', 'max' => 255],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function attributeLabels()
|
||||
{
|
||||
return [
|
||||
'id' => 'ID',
|
||||
'title' => 'Title',
|
||||
'type' => 'Type (either 1 or 2)',
|
||||
'icon' => 'Icon',
|
||||
'icon_gray' => 'Gray icon',
|
||||
];
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ openapi: '3.1.0'
|
|||
tags:
|
||||
- name: Routes
|
||||
paths:
|
||||
/api/list:
|
||||
/api:
|
||||
get:
|
||||
tags:
|
||||
- Routes
|
||||
|
@ -25,23 +25,22 @@ paths:
|
|||
"id": 0,
|
||||
"title": "A thing happening somewhere",
|
||||
"type": 1,
|
||||
"icons": null
|
||||
"icon": null,
|
||||
"icon_gray": null
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "The fox jumping over a cat",
|
||||
"type": 1,
|
||||
"icons": {
|
||||
"icon": {
|
||||
"original_name": "fox_jump.jpeg",
|
||||
"url": "/images/SHA256_HASH.jpeg",
|
||||
"sha256": "SHA256"
|
||||
},
|
||||
"icon_gray": {
|
||||
"original_name": "fox_jump.gray.jpeg",
|
||||
"url": "/images/SHA256_HASH.jpeg",
|
||||
"sha256": "SHA256"
|
||||
}
|
||||
"icon": {
|
||||
"original_name": "fox_jump.jpeg",
|
||||
"url": "/images/SHA256_HASH.jpeg",
|
||||
"sha256": "SHA256"
|
||||
},
|
||||
"icon_gray": {
|
||||
"original_name": "fox_jump.gray.jpeg",
|
||||
"url": "/images/SHA256_HASH.jpeg",
|
||||
"sha256": "SHA256"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -74,13 +73,10 @@ components:
|
|||
type:
|
||||
type: number
|
||||
example: 0
|
||||
icons:
|
||||
type: object
|
||||
properties:
|
||||
icon:
|
||||
$ref: '#/components/schemas/Image'
|
||||
icon_gray:
|
||||
$ref: '#/components/schemas/Image'
|
||||
icon:
|
||||
$ref: '#/components/schemas/Image'
|
||||
icon_gray:
|
||||
$ref: '#/components/schemas/Image'
|
||||
required:
|
||||
- id
|
||||
- title
|
||||
|
|
Loading…
Reference in New Issue