1563 lines
No EOL
48 KiB
PHP
1563 lines
No EOL
48 KiB
PHP
<?php
|
|
|
|
use Utopia\Config\Config;
|
|
use Utopia\Database\Database;
|
|
|
|
$providers = Config::getParam('providers', []);
|
|
$auth = Config::getParam('auth', []);
|
|
|
|
$collections = [
|
|
'projects' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'projects',
|
|
'name' => 'Projects',
|
|
'attributes' => [
|
|
[
|
|
'$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' => 'usersAuthLimit',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'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' => 'platforms',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'webhooks',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'keys',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'tasks',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'domains',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_fulltext_name',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['name'],
|
|
'lengths' => [1024],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'users' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$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' => 1024,
|
|
'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' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'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' => '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' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'tokens',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => 'memberships',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => ['json'],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_email',
|
|
'type' => Database::INDEX_UNIQUE,
|
|
'attributes' => ['email'],
|
|
'lengths' => [1024],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'sessions' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'sessions',
|
|
'name' => 'Sessions',
|
|
'attributes' => [
|
|
[
|
|
'$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' => 'providerToken',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'secret',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 64, // https://www.tutorialspoint.com/how-long-is-the-sha256-hash-in-mysql
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$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],
|
|
]
|
|
],
|
|
],
|
|
|
|
'teams' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'teams',
|
|
'name' => 'Teams',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'dateCreated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'sum',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'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],
|
|
]
|
|
],
|
|
],
|
|
|
|
'memberships' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'memberships',
|
|
'name' => 'Memberships',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'teamId',
|
|
'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' => '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' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_unique',
|
|
'type' => Database::INDEX_UNIQUE,
|
|
'attributes' => ['teamId', 'userId'],
|
|
'lengths' => [Database::LENGTH_KEY, Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC, Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_team',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['teamId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_user',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['userId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'files' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'files',
|
|
'name' => 'Files',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'dateCreated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'array' => false,
|
|
'$id' => 'bucketId',
|
|
'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' => 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' => 'sizeOriginal',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'sizeActual',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'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' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_bucket',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['bucketId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_fulltext_name',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['name'],
|
|
'lengths' => [1024],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'functions' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'functions',
|
|
'name' => 'Functions',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'execute',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'dateCreated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'dateUpdated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'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,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'name',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'runtime',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'tag',
|
|
'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' => null,
|
|
'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' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_fulltext_name',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['name'],
|
|
'lengths' => [1024],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'tags' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'tags',
|
|
'name' => 'Tags',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'dateCreated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'functionId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'array' => false,
|
|
'$id' => 'command',
|
|
'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' => 'size',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'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],
|
|
]
|
|
],
|
|
],
|
|
|
|
'executions' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$id' => 'executions',
|
|
'name' => 'Executions',
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'dateCreated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'functionId',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'tagId',
|
|
'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,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'stdout',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'stderr',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'exitCode',
|
|
'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' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_key_function',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['functionId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'certificates' => [
|
|
'$collection' => Database::COLLECTIONS,
|
|
'$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::COLLECTIONS,
|
|
'$id' => 'buckets',
|
|
'$permissions' => ['read' => ['*']],
|
|
'name' => 'Buckets',
|
|
'structure' => true,
|
|
'attributes' => [
|
|
[
|
|
'$id' => 'dateCreated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'signed' => false,
|
|
'size' => 0,
|
|
'required' => false,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'dateUpdated',
|
|
'type' => Database::VAR_INTEGER,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'signed' => true,
|
|
'required' => false,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$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' => 'adapter',
|
|
'type' => Database::VAR_STRING,
|
|
'signed' => true,
|
|
'size' => 64,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
|
|
'$id' => 'adapterCredentials',
|
|
'type' => Database::VAR_STRING,
|
|
'signed' => true,
|
|
'size' => 16384,
|
|
'format' => '',
|
|
'required' => false,
|
|
'array' => false,
|
|
'filters' => ['json']
|
|
],
|
|
[
|
|
'$id' => 'maximumFileSize',
|
|
'type' => Database::VAR_INTEGER,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'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,
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => '_fulltext_name',
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['name'],
|
|
'lengths' => [1024],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
]
|
|
]
|
|
];
|
|
|
|
/*
|
|
* Add enabled OAuth2 providers to default data rules
|
|
*/
|
|
foreach ($providers as $index => $provider) {
|
|
if (!$provider['enabled']) {
|
|
continue;
|
|
}
|
|
|
|
$collections['projects']['attributes'][] = [
|
|
'$id' => 'usersOauth2'.\ucfirst($index).'Appid',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
];
|
|
|
|
$collections['projects']['attributes'][] = [
|
|
'$id' => 'usersOauth2'.\ucfirst($index).'Secret',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
];
|
|
}
|
|
|
|
foreach ($auth as $index => $method) {
|
|
$collections['projects']['attributes'][] = [
|
|
'$id' => $method['key'] ?? '',
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
];
|
|
}
|
|
|
|
return $collections; |