Use enum filter to respond with proper enum model
This commit is contained in:
parent
23611857a1
commit
7fbe95de30
|
@ -214,7 +214,7 @@ $collections = [
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'default' => new stdClass,
|
'default' => new stdClass,
|
||||||
'array' => false,
|
'array' => false,
|
||||||
'filters' => ['json', 'range'],
|
'filters' => ['json', 'range', 'enum'],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'$id' => 'filters',
|
'$id' => 'filters',
|
||||||
|
|
|
@ -900,6 +900,7 @@ App::get('/v1/database/collections/:collectionId/attributes/:attributeId')
|
||||||
Database::VAR_FLOAT => Response::MODEL_ATTRIBUTE_FLOAT,
|
Database::VAR_FLOAT => Response::MODEL_ATTRIBUTE_FLOAT,
|
||||||
Database::VAR_STRING => match($format) {
|
Database::VAR_STRING => match($format) {
|
||||||
APP_DATABASE_ATTRIBUTE_EMAIL => Response::MODEL_ATTRIBUTE_EMAIL,
|
APP_DATABASE_ATTRIBUTE_EMAIL => Response::MODEL_ATTRIBUTE_EMAIL,
|
||||||
|
APP_DATABASE_ATTRIBUTE_ENUM => Response::MODEL_ATTRIBUTE_ENUM,
|
||||||
APP_DATABASE_ATTRIBUTE_IP => Response::MODEL_ATTRIBUTE_IP,
|
APP_DATABASE_ATTRIBUTE_IP => Response::MODEL_ATTRIBUTE_IP,
|
||||||
APP_DATABASE_ATTRIBUTE_URL => Response::MODEL_ATTRIBUTE_URL,
|
APP_DATABASE_ATTRIBUTE_URL => Response::MODEL_ATTRIBUTE_URL,
|
||||||
default => Response::MODEL_ATTRIBUTE_STRING,
|
default => Response::MODEL_ATTRIBUTE_STRING,
|
||||||
|
|
16
app/init.php
16
app/init.php
|
@ -198,6 +198,22 @@ Database::addFilter('casting',
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Database::addFilter('enum',
|
||||||
|
function($value, Document $attribute) {
|
||||||
|
if ($attribute->isSet('elements')) {
|
||||||
|
$attribute->removeAttribute('elements');
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
},
|
||||||
|
function($value, Document $attribute) {
|
||||||
|
$formatOptions = json_decode($attribute->getAttribute('formatOptions', []), true);
|
||||||
|
if (isset($formatOptions['elements'])) {
|
||||||
|
$attribute->setAttribute('elements', $formatOptions['elements']);
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
Database::addFilter('range',
|
Database::addFilter('range',
|
||||||
function($value, Document $attribute) {
|
function($value, Document $attribute) {
|
||||||
if ($attribute->isSet('min')) {
|
if ($attribute->isSet('min')) {
|
||||||
|
|
|
@ -17,6 +17,7 @@ use Appwrite\Utopia\Response\Model\AttributeInteger;
|
||||||
use Appwrite\Utopia\Response\Model\AttributeFloat;
|
use Appwrite\Utopia\Response\Model\AttributeFloat;
|
||||||
use Appwrite\Utopia\Response\Model\AttributeBoolean;
|
use Appwrite\Utopia\Response\Model\AttributeBoolean;
|
||||||
use Appwrite\Utopia\Response\Model\AttributeEmail;
|
use Appwrite\Utopia\Response\Model\AttributeEmail;
|
||||||
|
use Appwrite\Utopia\Response\Model\AttributeEnum;
|
||||||
use Appwrite\Utopia\Response\Model\AttributeIP;
|
use Appwrite\Utopia\Response\Model\AttributeIP;
|
||||||
use Appwrite\Utopia\Response\Model\AttributeURL;
|
use Appwrite\Utopia\Response\Model\AttributeURL;
|
||||||
use Appwrite\Utopia\Response\Model\BaseList;
|
use Appwrite\Utopia\Response\Model\BaseList;
|
||||||
|
@ -79,11 +80,12 @@ class Response extends SwooleResponse
|
||||||
const MODEL_ATTRIBUTE = 'attribute';
|
const MODEL_ATTRIBUTE = 'attribute';
|
||||||
const MODEL_ATTRIBUTE_LIST = 'attributeList';
|
const MODEL_ATTRIBUTE_LIST = 'attributeList';
|
||||||
const MODEL_ATTRIBUTE_STRING = 'attributeString';
|
const MODEL_ATTRIBUTE_STRING = 'attributeString';
|
||||||
const MODEL_ATTRIBUTE_INTEGER= 'attributeInteger';
|
const MODEL_ATTRIBUTE_INTEGER = 'attributeInteger';
|
||||||
const MODEL_ATTRIBUTE_FLOAT= 'attributeFloat';
|
const MODEL_ATTRIBUTE_FLOAT = 'attributeFloat';
|
||||||
const MODEL_ATTRIBUTE_BOOLEAN= 'attributeBoolean';
|
const MODEL_ATTRIBUTE_BOOLEAN = 'attributeBoolean';
|
||||||
const MODEL_ATTRIBUTE_EMAIL= 'attributeEmail';
|
const MODEL_ATTRIBUTE_EMAIL = 'attributeEmail';
|
||||||
const MODEL_ATTRIBUTE_IP= 'attributeIp';
|
const MODEL_ATTRIBUTE_ENUM = 'attributeEnum';
|
||||||
|
const MODEL_ATTRIBUTE_IP = 'attributeIp';
|
||||||
const MODEL_ATTRIBUTE_URL= 'attributeUrl';
|
const MODEL_ATTRIBUTE_URL= 'attributeUrl';
|
||||||
|
|
||||||
// Users
|
// Users
|
||||||
|
@ -201,6 +203,7 @@ class Response extends SwooleResponse
|
||||||
->setModel(new AttributeFloat())
|
->setModel(new AttributeFloat())
|
||||||
->setModel(new AttributeBoolean())
|
->setModel(new AttributeBoolean())
|
||||||
->setModel(new AttributeEmail())
|
->setModel(new AttributeEmail())
|
||||||
|
->setModel(new AttributeEnum())
|
||||||
->setModel(new AttributeIP())
|
->setModel(new AttributeIP())
|
||||||
->setModel(new AttributeURL())
|
->setModel(new AttributeURL())
|
||||||
->setModel(new Index())
|
->setModel(new Index())
|
||||||
|
|
|
@ -29,6 +29,7 @@ class AttributeList extends Model
|
||||||
self::TYPE_FLOAT => Response::MODEL_ATTRIBUTE_FLOAT,
|
self::TYPE_FLOAT => Response::MODEL_ATTRIBUTE_FLOAT,
|
||||||
self::TYPE_STRING => match($attribute->getAttribute('format')) {
|
self::TYPE_STRING => match($attribute->getAttribute('format')) {
|
||||||
APP_DATABASE_ATTRIBUTE_EMAIL => Response::MODEL_ATTRIBUTE_EMAIL,
|
APP_DATABASE_ATTRIBUTE_EMAIL => Response::MODEL_ATTRIBUTE_EMAIL,
|
||||||
|
APP_DATABASE_ATTRIBUTE_ENUM => Response::MODEL_ATTRIBUTE_ENUM,
|
||||||
APP_DATABASE_ATTRIBUTE_IP => Response::MODEL_ATTRIBUTE_IP,
|
APP_DATABASE_ATTRIBUTE_IP => Response::MODEL_ATTRIBUTE_IP,
|
||||||
APP_DATABASE_ATTRIBUTE_URL => Response::MODEL_ATTRIBUTE_URL,
|
APP_DATABASE_ATTRIBUTE_URL => Response::MODEL_ATTRIBUTE_URL,
|
||||||
default => Response::MODEL_ATTRIBUTE_STRING,
|
default => Response::MODEL_ATTRIBUTE_STRING,
|
||||||
|
|
|
@ -57,6 +57,7 @@ class Collection extends Model
|
||||||
self::TYPE_FLOAT => Response::MODEL_ATTRIBUTE_FLOAT,
|
self::TYPE_FLOAT => Response::MODEL_ATTRIBUTE_FLOAT,
|
||||||
self::TYPE_STRING => match($attribute->getAttribute('format')) {
|
self::TYPE_STRING => match($attribute->getAttribute('format')) {
|
||||||
APP_DATABASE_ATTRIBUTE_EMAIL => Response::MODEL_ATTRIBUTE_EMAIL,
|
APP_DATABASE_ATTRIBUTE_EMAIL => Response::MODEL_ATTRIBUTE_EMAIL,
|
||||||
|
APP_DATABASE_ATTRIBUTE_ENUM => Response::MODEL_ATTRIBUTE_ENUM,
|
||||||
APP_DATABASE_ATTRIBUTE_IP => Response::MODEL_ATTRIBUTE_IP,
|
APP_DATABASE_ATTRIBUTE_IP => Response::MODEL_ATTRIBUTE_IP,
|
||||||
APP_DATABASE_ATTRIBUTE_URL => Response::MODEL_ATTRIBUTE_URL,
|
APP_DATABASE_ATTRIBUTE_URL => Response::MODEL_ATTRIBUTE_URL,
|
||||||
default => Response::MODEL_ATTRIBUTE_STRING,
|
default => Response::MODEL_ATTRIBUTE_STRING,
|
||||||
|
|
Loading…
Reference in a new issue