mirror of
https://github.com/appwrite/appwrite
synced 2026-04-21 13:37:16 +00:00
Add project status attribute to platform collections and set default status in project creation
1966 lines
66 KiB
PHP
1966 lines
66 KiB
PHP
<?php
|
|
|
|
use Utopia\Config\Config;
|
|
use Utopia\Database\Database;
|
|
use Utopia\Database\Helpers\ID;
|
|
|
|
$providers = Config::getParam('oAuthProviders', []);
|
|
|
|
$platformCollections = [
|
|
'projects' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('projects'),
|
|
'name' => 'Projects',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('teamInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('teamId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('name'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('region'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('description'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('database'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('logo'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('url'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('version'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('legalName'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('legalCountry'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('legalState'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('legalCity'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('legalAddress'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('legalTaxId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'accessedAt',
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('services'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('apis'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('smtp'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json', 'encrypt'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('templates'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1_000_000, // TODO make sure size fits
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('auths'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('oAuthProviders'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => false,
|
|
'filters' => ['json', 'encrypt'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('platforms'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryPlatforms'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('webhooks'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryWebhooks'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('keys'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryKeys'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('devKeys'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryDevKeys'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('search'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('pingCount'),
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => 0,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('pingedAt'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('labels'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => [],
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => 'status',
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 100,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_search'),
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_name'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['name'],
|
|
'lengths' => [128],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_team'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['teamId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_pingCount'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['pingCount'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_pingedAt'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['pingedAt'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_database'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['database'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_region_accessed_at'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['region', 'accessedAt'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'schedules' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('schedules'),
|
|
'name' => 'schedules',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('resourceType'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 100,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceUpdatedAt'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('schedule'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 100,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('data'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 65535,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => new \stdClass(),
|
|
'array' => false,
|
|
'filters' => ['json', 'encrypt'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('active'),
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => ID::custom('region'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 10,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_region_resourceType_resourceUpdatedAt'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['region', 'resourceType', 'resourceUpdatedAt'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_region_resourceType_projectId_resourceId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['region', 'resourceType', 'projectId', 'resourceId'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_project_id_region'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectId', 'region'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_region_rt_active'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['region', 'resourceType', 'active'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'platforms' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('platforms'),
|
|
'name' => 'platforms',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('type'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('name'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('key'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('store'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('hostname'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_project'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'keys' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('keys'),
|
|
'name' => 'keys',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('resourceType'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('name'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('scopes'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('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' => ID::custom('expire'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('accessedAt'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('sdks'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_resource'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['resourceType', 'resourceInternalId'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_accessedAt'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['accessedAt'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'devKeys' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('devKeys'),
|
|
'name' => 'Dev keys',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => 0,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('name'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('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' => ID::custom('expire'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('accessedAt'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('sdks'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_project'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_accessedAt',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['accessedAt'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'webhooks' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('webhooks'),
|
|
'name' => 'webhooks',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('name'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('url'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('httpUser'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('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' => ID::custom('security'),
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('events'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('signatureKey'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('enabled'),
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => false,
|
|
'default' => true,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => ID::custom('logs'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('attempts'),
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => 0,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_project'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
]
|
|
],
|
|
],
|
|
|
|
'certificates' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('certificates'),
|
|
'name' => 'Certificates',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('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' => ID::custom('issueDate'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('renewDate'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('attempts'),
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('logs'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('updated'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_domain'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['domain'],
|
|
'lengths' => [255],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'realtime' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('realtime'),
|
|
'name' => 'Realtime Connections',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('container'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('timestamp'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('value'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [], //TODO: use json filter
|
|
]
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_timestamp'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['timestamp'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_DESC],
|
|
],
|
|
]
|
|
],
|
|
|
|
'rules' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('rules'),
|
|
'name' => 'Rules',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('domain'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('type'), // 'api', 'redirect', 'deployment' (site or function)
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 32,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('trigger'), // 'manual', 'deployment', '' (empty)
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 32,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('redirectUrl'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 2048,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('redirectStatusCode'),
|
|
'type' => Database::VAR_INTEGER,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('deploymentResourceType'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 32,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('deploymentId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('deploymentInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('deploymentResourceId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('deploymentResourceInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('deploymentVcsProviderBranch'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('status'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('certificateId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('search'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('owner'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '', // "Appwrite" or empty string
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('region'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('logs'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 1000000,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => '',
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_search'),
|
|
'type' => Database::INDEX_FULLTEXT,
|
|
'attributes' => ['search'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_domain'),
|
|
'type' => Database::INDEX_UNIQUE,
|
|
'attributes' => ['domain'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectInternalId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_type',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['type'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_trigger',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['trigger'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_deploymentResourceType',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentResourceType'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_deploymentResourceId',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentResourceId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_deploymentResourceInternalId',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentResourceInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_deploymentId',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_deploymentInternalId',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_deploymentVcsProviderBranch',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['deploymentVcsProviderBranch'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_owner'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['owner'],
|
|
'lengths' => [],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_piid_diid_drt'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId', 'deploymentInternalId', 'deploymentResourceType'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
[
|
|
'$id' => '_key_region_status_createdAt',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['region', 'status', '$createdAt'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'installations' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('installations'),
|
|
'name' => 'installations',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerInstallationId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('organization'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('provider'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('personal'),
|
|
'type' => Database::VAR_BOOLEAN,
|
|
'signed' => true,
|
|
'size' => 0,
|
|
'format' => '',
|
|
'filters' => [],
|
|
'required' => false,
|
|
'default' => false,
|
|
'array' => false,
|
|
],
|
|
[
|
|
'$id' => ID::custom('personalAccessToken'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('personalAccessTokenExpiry'),
|
|
'type' => Database::VAR_DATETIME,
|
|
'format' => '',
|
|
'size' => 0,
|
|
'signed' => false,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['datetime'],
|
|
],
|
|
[
|
|
'$id' => ID::custom('personalRefreshToken'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 256,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['encrypt'],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
|
|
[
|
|
'$id' => ID::custom('_key_projectInternalId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_providerInstallationId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['providerInstallationId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
],
|
|
],
|
|
|
|
'repositories' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('repositories'),
|
|
'name' => 'repositories',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('installationId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('installationInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerRepositoryId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('resourceType'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerPullRequestIds'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 128,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => true,
|
|
'filters' => [],
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_installationId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['installationId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_installationInternalId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['installationInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectInternalId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_providerRepositoryId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['providerRepositoryId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_resourceId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['resourceId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => '_key_resourceInternalId',
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['resourceInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_resourceType'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['resourceType'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_piid_riid_rt'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId', 'resourceInternalId', 'resourceType'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'vcsComments' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('vcsComments'),
|
|
'name' => 'vcsComments',
|
|
'attributes' => [
|
|
[
|
|
'$id' => ID::custom('installationId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('installationInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('projectInternalId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => [],
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerRepositoryId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerCommentId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerPullRequestId'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
[
|
|
'$id' => ID::custom('providerBranch'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => Database::LENGTH_KEY,
|
|
'signed' => true,
|
|
'required' => true,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => []
|
|
],
|
|
],
|
|
'indexes' => [
|
|
[
|
|
'$id' => ID::custom('_key_installationId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['installationId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_installationInternalId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['installationInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectInternalId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_projectId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_providerRepositoryId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['providerRepositoryId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_providerPullRequestId'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['providerPullRequestId'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_providerBranch'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['providerBranch'],
|
|
'lengths' => [Database::LENGTH_KEY],
|
|
'orders' => [Database::ORDER_ASC],
|
|
],
|
|
[
|
|
'$id' => ID::custom('_key_piid_prid_rt'),
|
|
'type' => Database::INDEX_KEY,
|
|
'attributes' => ['projectInternalId', 'providerRepositoryId'],
|
|
'lengths' => [],
|
|
'orders' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'vcsCommentLocks' => [
|
|
'$collection' => ID::custom(Database::METADATA),
|
|
'$id' => ID::custom('vcsCommentLocks'),
|
|
'name' => 'vcsCommentLocks',
|
|
'attributes' => [],
|
|
'indexes' => []
|
|
],
|
|
];
|
|
|
|
// Organization API keys subquery
|
|
$platformCollections['teams']['attributes'][] = [
|
|
'$id' => ID::custom('keys'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryOrganizationKeys'],
|
|
];
|
|
|
|
// Account API keys subquery
|
|
$platformCollections['users']['attributes'][] = [
|
|
'$id' => ID::custom('keys'),
|
|
'type' => Database::VAR_STRING,
|
|
'format' => '',
|
|
'size' => 16384,
|
|
'signed' => true,
|
|
'required' => false,
|
|
'default' => null,
|
|
'array' => false,
|
|
'filters' => ['subQueryAccountKeys'],
|
|
];
|
|
|
|
return $platformCollections;
|