diff --git a/app/views/console/database/collection.phtml b/app/views/console/database/collection.phtml
index 7552abde93..1ddb3bf943 100644
--- a/app/views/console/database/collection.phtml
+++ b/app/views/console/database/collection.phtml
@@ -241,6 +241,7 @@
+
@@ -367,6 +368,7 @@
+
diff --git a/app/views/console/database/rules/markdown.phtml b/app/views/console/database/rules/markdown.phtml
new file mode 100644
index 0000000000..538647e8ed
--- /dev/null
+++ b/app/views/console/database/rules/markdown.phtml
@@ -0,0 +1,7 @@
+getParam('key', '');
+$required = $this->getParam('required', '');
+$namespace = $this->getParam('namespace', '');
+?>
+
+
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index a3605e9a99..891346152e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -57,7 +57,7 @@ services:
depends_on:
- mariadb
- redis
- - smtp
+ # - smtp
- clamav
- influxdb
- telegraf
@@ -99,14 +99,22 @@ services:
- MYSQL_PASSWORD=password
command: 'mysqld --innodb-flush-method=fsync'
- smtp:
- image: appwrite/smtp:1.0.1
+ maildev:
+ image: djfarrelly/maildev
restart: unless-stopped
+ ports:
+ - '1080:80'
networks:
- appwrite
- environment:
- - MAILNAME=appwrite
- - RELAY_NETWORKS=:192.168.0.0/24:10.0.0.0/16
+
+ # smtp:
+ # image: appwrite/smtp:1.0.1
+ # restart: unless-stopped
+ # networks:
+ # - appwrite
+ # environment:
+ # - MAILNAME=appwrite
+ # - RELAY_NETWORKS=:192.168.0.0/24:10.0.0.0/16
redis:
image: redis:5.0
@@ -161,13 +169,23 @@ services:
# - RESQUE_WEB_HTTP_BASIC_AUTH_USER=user
# - RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=password
- maildev:
- image: djfarrelly/maildev
+ chronograf:
+ image: chronograf:1.5
restart: unless-stopped
- ports:
- - '1080:80'
networks:
- - appwrite
+ - appwrite
+ volumes:
+ - appwrite-chronograf:/var/lib/chronograf
+ ports:
+ - "8888:8888"
+ environment:
+ - INFLUXDB_URL=http://influxdb:8086
+ - KAPACITOR_URL=http://kapacitor:9092
+ - AUTH_DURATION=48h
+ - TOKEN_SECRET=duperduper5674829!jwt
+ - GH_CLIENT_ID=d86f7145a41eacfc52cc
+ - GH_CLIENT_SECRET=9e0081062367a2134e7f2ea95ba1a32d08b6c8ab
+ - GH_ORGS=appwrite
networks:
gateway:
@@ -180,4 +198,5 @@ volumes:
appwrite-uploads:
appwrite-certificates:
appwrite-influxdb:
+ appwrite-chronograf:
appwrite-config:
diff --git a/src/Appwrite/Database/Validator/Structure.php b/src/Appwrite/Database/Validator/Structure.php
index 7f0ea511b5..5ac3b3e012 100644
--- a/src/Appwrite/Database/Validator/Structure.php
+++ b/src/Appwrite/Database/Validator/Structure.php
@@ -8,6 +8,21 @@ use Utopia\Validator;
class Structure extends Validator
{
+ const RULE_TYPE_ID = 'id';
+ const RULE_TYPE_PERMISSIONS = 'permissions';
+ const RULE_TYPE_KEY = 'key';
+ const RULE_TYPE_TEXT = 'text';
+ const RULE_TYPE_MARKDOWN = 'markdown';
+ const RULE_TYPE_NUMERIC = 'numeric';
+ const RULE_TYPE_BOOLEAN = 'boolean';
+ const RULE_TYPE_EMAIL = 'email';
+ const RULE_TYPE_URL = 'url';
+ const RULE_TYPE_IP = 'ip';
+ const RULE_TYPE_WILDCARD = 'wildcard';
+ const RULE_TYPE_DOCUMENT = 'document';
+ const RULE_TYPE_DOCUMENTID = 'documentId';
+ const RULE_TYPE_FILEID = 'fileId';
+
/**
* @var Database
*/
@@ -147,45 +162,46 @@ class Structure extends Validator
$validator = null;
switch ($ruleType) {
- case 'id':
+ case self::RULE_TYPE_ID:
$validator = new UID();
break;
- case 'text':
- $validator = new Validator\Text(0);
- break;
- case 'numeric':
- $validator = new Validator\Numeric();
- break;
- case 'boolean':
- $validator = new Validator\Boolean();
- break;
- case 'email':
- $validator = new Validator\Email();
- break;
- case 'url':
- $validator = new Validator\URL();
- break;
- case 'ip':
- $validator = new Validator\IP();
- break;
- case 'wildcard':
- $validator = new Validator\Mock();
- break;
- case 'permissions':
+ case self::RULE_TYPE_PERMISSIONS:
$validator = new Permissions($document); //$validator = ($this->forcePermissions) ? new Authorization($original, 'write') : new Validator\Mock();
break;
- case 'key':
+ case self::RULE_TYPE_KEY:
$validator = new Key();
break;
- case 'document':
+ case self::RULE_TYPE_TEXT:
+ case self::RULE_TYPE_MARKDOWN:
+ $validator = new Validator\Text(0);
+ break;
+ case self::RULE_TYPE_NUMERIC:
+ $validator = new Validator\Numeric();
+ break;
+ case self::RULE_TYPE_BOOLEAN:
+ $validator = new Validator\Boolean();
+ break;
+ case self::RULE_TYPE_EMAIL:
+ $validator = new Validator\Email();
+ break;
+ case self::RULE_TYPE_URL:
+ $validator = new Validator\URL();
+ break;
+ case self::RULE_TYPE_IP:
+ $validator = new Validator\IP();
+ break;
+ case self::RULE_TYPE_WILDCARD:
+ $validator = new Validator\Mock();
+ break;
+ case self::RULE_TYPE_DOCUMENT:
$validator = new Collection($this->database, (isset($rule['list'])) ? $rule['list'] : []);
$value = $document->getAttribute($key);
break;
- case 'documentId':
+ case self::RULE_TYPE_DOCUMENTID:
$validator = new DocumentId($this->database, (isset($rule['list'])) ? $rule['list'] : []);
$value = $document->getAttribute($key);
break;
- case 'fileId':
+ case self::RULE_TYPE_FILEID:
$validator = new DocumentId($this->database, [Database::SYSTEM_COLLECTION_FILES]);
$value = $document->getAttribute($key);
break;