* database response model * database collection config * new database scopes * database service update * database execption codes * remove read write permission from database model * updating tests and fixing some bugs * server side tests are now passing * databases api * tests for database endpoint * composer update * fix error * formatting * formatting fixes * get database test * more updates to events and usage * more usage updates * fix delete type * fix test * delete database * more fixes * databaseId in attributes and indexes * more fixes * fix issues * fix index subquery * fix console scope and index query * updating tests as required * fix phpcs errors and warnings * updates to review suggestions * UI progress * ui updates and cleaning up * fix type * rework database events * update tests * update types * event generation fixed * events config updated * updating context to support multiple * realtime updates * fix ids * update context * validator updates * fix naming conflict * fix tests * fix lint errors * fix wprler and realtime tests * fix webhooks test * fix event validator and other tests * formatting fixes * removing leftover var_dumps * remove leftover comment * update usage params * usage metrics updates * update database usage * fix usage * specs update * updates to usage * fix UI and usage * fix lints * internal id fixes * fixes for internal Id * renaming services and related files * rename tests * rename doc link * rename readme * fix test name * tests: fixes for 0.15.x sync Co-authored-by: Torsten Dittmann <torsten.dittmann@googlemail.com>
2979 lines
93 KiB
PHP
2979 lines
93 KiB
PHP
<?php
|
|
|
|
use Utopia\Config\Config;
|
|
use Utopia\Database\Database;
|
|
|
|
$providers = Config::getParam('providers', []);
|
|
$auth = Config::getParam('auth', []);
|
|
|
|
/**
|
|
* $collection => id of the parent collection where this will be inserted
|
|
* $id => id of this collection
|
|
* name => name of this collection
|
|
* project => whether or not this collection should be created per project
|
|
* attributes => list of attributes
|
|
* indexes => list of indexes
|
|
*/
|
|
|
|
$collections = [
|
|
'databases' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'databases',
|
|
'name' => 'Databases',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 256,
|
|
'required' => true,
|
|
'signed' => true,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_fulltext_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
'collections' => [
|
|
'$collection' => 'databases',
|
|
'$id' => 'collections',
|
|
'name' => 'Collections',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'databaseInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'databaseId',
|
|
'type' => Database::VAR_STRING,
|
|
'signed' => true,
|
|
'size' => Database::LENGTH_KEY,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 256,
|
|
'required' => true,
|
|
'signed' => true,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'enabled',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'permission',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 64,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'attributes',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 1000000,
|
|
'required' => false,
|
|
'signed' => true,
|
|
'array' => false,
|
|
'filters' => ['subQueryAttributes'],
|
|
],
|
|
[
|
|
'$id' => 'indexes',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 1000000,
|
|
'required' => false,
|
|
'signed' => true,
|
|
'array' => false,
|
|
'filters' => ['subQueryIndexes'],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_fulltext_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'attributes' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'attributes',
|
|
'name' => 'Attributes',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'databaseInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'databaseId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => false,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'collectionInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'collectionId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'key',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'type',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'size',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'required',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'default',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['casting'],
|
|
],
|
|
[
|
|
'$id' => 'signed',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'array',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'format',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 64,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'formatOptions',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => new stdClass(),
|
|
'array' => false,
|
|
'filters' => ['json', 'range', 'enum'],
|
|
],
|
|
[
|
|
'$id' => 'filters',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 64,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_db_collection',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['databaseInternalId', 'collectionInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY, Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC, Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'indexes' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'indexes',
|
|
'name' => 'Indexes',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'databaseInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'databaseId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => false,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'collectionInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'collectionId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'key',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'type',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'attributes',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'lengths',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'orders',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 4,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_db_collection',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['databaseInternalId', 'collectionInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY, Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC, Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'projects' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'projects',
|
|
'name' => 'Projects',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'teamInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'teamId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'description',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'logo',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'url',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'version',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'legalName',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'legalCountry',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'legalState',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'legalCity',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'legalAddress',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'legalTaxId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'services',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'auths',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'authProviders',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json', 'encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'platforms',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryPlatforms'],
|
|
],
|
|
[
|
|
'$id' => 'webhooks',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryWebhooks'],
|
|
],
|
|
[
|
|
'$id' => 'keys',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryKeys'],
|
|
],
|
|
[
|
|
'$id' => 'domains',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryDomains'],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'platforms' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'platforms',
|
|
'name' => 'platforms',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'projectInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'projectId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'type',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'key',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'store',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'hostname',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_project',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'domains' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'domains',
|
|
'name' => 'domains',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'projectInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'projectId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'updated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'domain',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'tld',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'registerable',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'verification',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'certificateId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_project',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'keys' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'keys',
|
|
'name' => 'keys',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'projectInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'projectId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => 0,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'scopes',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'secret',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 512, // var_dump of \bin2hex(\random_bytes(128)) => string(256) doubling for encryption
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'expire',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => 0,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_project',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'webhooks' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'webhooks',
|
|
'name' => 'webhooks',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'projectInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'projectId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'url',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'httpUser',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'httpPass',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY, // TODO will the length suffice after encryption?
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'security',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'events',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'signatureKey',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_project',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'users' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'users',
|
|
'name' => 'Users',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'email',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 320,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'phone',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16, // leading '+' and 15 digitts maximum by E.164 format
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'password',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'passwordUpdate',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'prefs',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 65535,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => new \stdClass(),
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'registration',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'emailVerification',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'phoneVerification',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'reset',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'sessions',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQuerySessions'],
|
|
],
|
|
[
|
|
'$id' => 'tokens',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryTokens'],
|
|
],
|
|
[
|
|
'$id' => 'memberships',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryMemberships'],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_email',
|
|
'type' => Database::INDEX_UNIQUE,
|
|
'attributes' => ['email'],
|
|
'lengths' => [320],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_phone',
|
|
'type' => Database::INDEX_UNIQUE,
|
|
'attributes' => ['phone'],
|
|
'lengths' => [16],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
]
|
|
],
|
|
],
|
|
|
|
'tokens' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'tokens',
|
|
'name' => 'Tokens',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'userInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'userId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'type',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'secret',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 512, // https://www.tutorialspoint.com/how-long-is-the-sha256-hash-in-mysql (512 for encryption)
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'expire',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'userAgent',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'ip',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 45, // https://stackoverflow.com/a/166157/2299554
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_user',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['userInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'sessions' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'sessions',
|
|
'name' => 'Sessions',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'userInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'userId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'provider',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'providerUid',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'providerAccessToken',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'providerAccessTokenExpiry',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'providerRefreshToken',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'secret',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 512, // https://www.tutorialspoint.com/how-long-is-the-sha256-hash-in-mysql (512 for encryption)
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'expire',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'userAgent',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'ip',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 45, // https://stackoverflow.com/a/166157/2299554
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'countryCode',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'osCode',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'osName',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'osVersion',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'clientType',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'clientCode',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'clientName',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'clientVersion',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'clientEngine',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'clientEngineVersion',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'deviceName',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'deviceBrand',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'deviceModel',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_provider_providerUid',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['provider', 'providerUid'],
|
|
'lengths' => [100, 100],
|
|
'orders' => [Database::ORDER_ASC, Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_user',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['userInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'teams' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'teams',
|
|
'name' => 'Teams',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'total',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'memberships' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'memberships',
|
|
'name' => 'Memberships',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'userInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'userId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'teamInternalId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'teamId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'roles',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'invited',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'joined',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'confirm',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'secret',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_unique',
|
|
'type' => Database::INDEX_UNIQUE,
|
|
'attributes' => ['teamInternalId', 'userInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY, Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC, Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_user',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['userInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_team',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['teamInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'functions' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'functions',
|
|
'name' => 'Functions',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'execute',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'array' => false,
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'runtime',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'deployment',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'vars',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 8192,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json', 'encrypt'],
|
|
],
|
|
[
|
|
'$id' => 'events',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'schedule',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'schedulePrevious',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'scheduleNext',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'timeout',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [2048],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'deployments' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'deployments',
|
|
'name' => 'Deployments',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'resourceId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'resourceType',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'buildId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'array' => false,
|
|
'$id' => 'entrypoint',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'path',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'size',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'metadata',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384, // https://tools.ietf.org/html/rfc4288#section-4.2
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'chunksTotal',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'chunksUploaded',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'activate',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => false,
|
|
'array' => false,
|
|
'filters' => [],
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_resource',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['resourceId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_resource_type',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['resourceType'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'builds' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'builds',
|
|
'name' => 'Builds',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'startTime',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'endTime',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'duration',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'deploymentId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'runtime',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => 'processing',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'outputPath',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'stderr',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'stdout',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'sourceType',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => 'local',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'source',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_deployment',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'executions' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'executions',
|
|
'name' => 'Executions',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'functionId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'deploymentId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'array' => false,
|
|
'$id' => 'trigger',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'response',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'stderr',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'statusCode',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'time',
|
|
'type' => Database::VAR_FLOAT,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_function',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['functionId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_fulltext_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'certificates' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'certificates',
|
|
'name' => 'Certificates',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'domain',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
// The maximum total length of a domain name or number is 255 characters.
|
|
// https://datatracker.ietf.org/doc/html/rfc2821#section-4.5.3.1
|
|
// https://datatracker.ietf.org/doc/html/rfc5321#section-4.5.3.1.2
|
|
'size' => 255,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'issueDate',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'renewDate',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'attempts',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'log',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'updated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_domain',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['domain'],
|
|
'lengths' => [255],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'buckets' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'buckets',
|
|
'name' => 'Buckets',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'enabled',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'signed' => true,
|
|
'size' => 128,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'permission',
|
|
'type' => Database::VAR_STRING,
|
|
'size' => 64,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'maximumFileSize',
|
|
'type' => Database::VAR_INTEGER,
|
|
'signed' => false,
|
|
'size' => 8,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'allowedFileExtensions',
|
|
'type' => Database::VAR_STRING,
|
|
'signed' => true,
|
|
'size' => 64,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => true,
|
|
],
|
|
[
|
|
'$id' => 'encryption',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'antivirus',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_fulltext_name',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['name'],
|
|
'lengths' => [1024],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [2048],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
]
|
|
],
|
|
|
|
'stats' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'stats',
|
|
'name' => 'Stats',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'metric',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 255,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'value',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 8,
|
|
'signed' => false,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'time',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'period',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 4,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'type',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 1,
|
|
'signed' => false,
|
|
'required' => true,
|
|
'default' => 0, // 0 -> count, 1 -> sum
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_time',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['time'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_DESC],
|
|
],
|
|
[
|
|
'$id' => '_key_metric',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['metric'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_metric_period',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['metric', 'period'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_DESC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'realtime' => [
|
|
'$collection' => Database::METADATA,
|
|
'$id' => 'realtime',
|
|
'name' => 'Realtime Connections',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'container',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'timestamp',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'value',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [], //TODO: use json filter
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_timestamp',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['timestamp'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_DESC],
|
|
],
|
|
]
|
|
],
|
|
'files' => [
|
|
'$collection' => 'buckets',
|
|
'$id' => 'files',
|
|
'$name' => 'Files',
|
|
'attributes' => [
|
|
[
|
|
'array' => false,
|
|
'$id' => 'bucketId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'path',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'signature',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'mimeType',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 127, // https://tools.ietf.org/html/rfc4288#section-4.2
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'metadata',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384, // https://tools.ietf.org/html/rfc4288#section-4.2
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'sizeOriginal',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 8,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'sizeActual',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 8,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'algorithm',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 255,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'comment',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'openSSLVersion',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 64,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'openSSLCipher',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 64,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'openSSLTag',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'openSSLIV',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'chunksTotal',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'chunksUploaded',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'search',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_search',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [2048],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_bucket',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['bucketId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
]
|
|
],
|
|
];
|
|
|
|
return $collections;
|