<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* ],
*
* Whenever possible prefer "foreign" before "relation" with the foreign keys.
- * "foreign" adds true foreign keys on the database level, while "relation" simulates this behaviour.
+ * "foreign" adds true foreign keys on the database level, while "relation" is just an indicator of a table relation without any consequences
*
* If you need to make any change, make sure to increment the DB_UPDATE_VERSION constant value below.
*
use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) {
- define('DB_UPDATE_VERSION', 1406);
+ define('DB_UPDATE_VERSION', 1421);
}
return [
"blocked_uid" => ["blocked", "uid"],
"uid_rel_network_poll" => ["uid", "rel", "network", "poll(64)", "archive"],
"uid_network_batch" => ["uid", "network", "batch(64)"],
+ "batch_contact-type" => ["batch(64)", "contact-type"],
"addr_uid" => ["addr(128)", "uid"],
"nurl_uid" => ["nurl(128)", "uid"],
"nick_uid" => ["nick(128)", "uid"],
"uid_network_self_lastupdate" => ["uid", "network", "self", "last-update"],
"uid_lastitem" => ["uid", "last-item"],
"baseurl" => ["baseurl(64)"],
+ "uid_contact-type" => ["uid", "contact-type"],
+ "uid_self_contact-type" => ["uid", "self", "contact-type"],
+ "self_network_uid" => ["self", "network", "uid"],
"gsid" => ["gsid"]
]
],
"gsid" => ["gsid"]
]
],
+ "application" => [
+ "comment" => "OAuth application",
+ "fields" => [
+ "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "generated index"],
+ "client_id" => ["type" => "varchar(64)", "not null" => "1", "comment" => ""],
+ "client_secret" => ["type" => "varchar(64)", "not null" => "1", "comment" => ""],
+ "name" => ["type" => "varchar(255)", "not null" => "1", "comment" => ""],
+ "redirect_uri" => ["type" => "varchar(255)", "not null" => "1", "comment" => ""],
+ "website" => ["type" => "varchar(255)", "comment" => ""],
+ "scopes" => ["type" => "varchar(255)", "comment" => ""],
+ "read" => ["type" => "boolean", "comment" => "Read scope"],
+ "write" => ["type" => "boolean", "comment" => "Write scope"],
+ "follow" => ["type" => "boolean", "comment" => "Follow scope"],
+ "push" => ["type" => "boolean", "comment" => "Push scope"],
+ ],
+ "indexes" => [
+ "PRIMARY" => ["id"],
+ "client_id" => ["UNIQUE", "client_id"]
+ ]
+ ],
+ "application-token" => [
+ "comment" => "OAuth user token",
+ "fields" => [
+ "application-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["application" => "id"], "comment" => ""],
+ "uid" => ["type" => "mediumint unsigned", "not null" => "1", "primary" => "1", "foreign" => ["user" => "uid"], "comment" => "Owner User id"],
+ "code" => ["type" => "varchar(64)", "not null" => "1", "comment" => ""],
+ "access_token" => ["type" => "varchar(64)", "not null" => "1", "comment" => ""],
+ "created_at" => ["type" => "datetime", "not null" => "1", "comment" => "creation time"],
+ "scopes" => ["type" => "varchar(255)", "comment" => ""],
+ "read" => ["type" => "boolean", "comment" => "Read scope"],
+ "write" => ["type" => "boolean", "comment" => "Write scope"],
+ "follow" => ["type" => "boolean", "comment" => "Follow scope"],
+ "push" => ["type" => "boolean", "comment" => "Push scope"],
+ ],
+ "indexes" => [
+ "PRIMARY" => ["application-id", "uid"],
+ "uid_id" => ["uid", "application-id"],
+ ]
+ ],
"attach" => [
"comment" => "file attachments",
"fields" => [
"from-photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "contact photo link of the sender"],
"from-url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "profile linke of the sender"],
"contact-id" => ["type" => "varchar(255)", "relation" => ["contact" => "id"], "comment" => "contact.id"],
+ "author-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the author of the mail"],
"convid" => ["type" => "int unsigned", "relation" => ["conv" => "id"], "comment" => "conv.id"],
"title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
"body" => ["type" => "mediumtext", "comment" => ""],
"replied" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
"unknown" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if sender not in the contact table this is 1"],
"uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+ "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the related mail"],
"parent-uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+ "parent-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the parent of the related mail"],
+ "thr-parent" => ["type" => "varchar(255)", "comment" => ""],
+ "thr-parent-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table that contains the thread parent uri"],
"created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time of the private message"],
],
"indexes" => [
"uri" => ["uri(64)"],
"parent-uri" => ["parent-uri(64)"],
"contactid" => ["contact-id(32)"],
+ "author-id" => ["author-id"],
+ "uri-id" => ["uri-id"],
+ "parent-uri-id" => ["parent-uri-id"],
+ "thr-parent-id" => ["thr-parent-id"],
]
],
"mailacct" => [
"mid" => ["mid"],
]
],
+ "notification" => [
+ "comment" => "notifications",
+ "fields" => [
+ "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+ "uid" => ["type" => "mediumint unsigned", "foreign" => ["user" => "uid"], "comment" => "Owner User id"],
+ "vid" => ["type" => "smallint unsigned", "foreign" => ["verb" => "id", "on delete" => "restrict"], "comment" => "Id of the verb table entry that contains the activity verbs"],
+ "type" => ["type" => "tinyint unsigned", "comment" => ""],
+ "actor-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id"], "comment" => "Link to the contact table with uid=0 of the actor that caused the notification"],
+ "target-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the related post"],
+ "parent-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the parent of the related post"],
+ "created" => ["type" => "datetime", "comment" => ""],
+ "seen" => ["type" => "boolean", "default" => "0", "comment" => ""],
+ ],
+ "indexes" => [
+ "PRIMARY" => ["id"],
+ "uid_vid_type_actor-id_target-uri-id" => ["UNIQUE", "uid", "vid", "type", "actor-id", "target-uri-id"],
+ "vid" => ["vid"],
+ "actor-id" => ["actor-id"],
+ "target-uri-id" => ["target-uri-id"],
+ "parent-uri-id" => ["parent-uri-id"],
+ "seen_uid" => ["seen", "uid"],
+ ]
+ ],
"notify" => [
"comment" => "notifications",
"fields" => [
"network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Network from where the item comes from"],
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the owner of this item"],
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the author of this item"],
- "causer-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
- "post-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Post type (personal note, bookmark, ...)"],
+ "causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
+ "post-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Post type (personal note, image, article, ...)"],
"vid" => ["type" => "smallint unsigned", "foreign" => ["verb" => "id", "on delete" => "restrict"], "comment" => "Id of the verb table entry that contains the activity verbs"],
"private" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "0=public, 1=private, 2=unlisted"],
"global" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
"preview-height" => ["type" => "smallint unsigned", "comment" => "Height of the preview picture"],
"preview-width" => ["type" => "smallint unsigned", "comment" => "Width of the preview picture"],
"description" => ["type" => "text", "comment" => ""],
+ "name" => ["type" => "varchar(255)", "comment" => "Name of the media"],
+ "author-url" => ["type" => "varbinary(255)", "comment" => "URL of the author of the media"],
+ "author-name" => ["type" => "varchar(255)", "comment" => "Name of the author of the media"],
+ "author-image" => ["type" => "varbinary(255)", "comment" => "Image of the author of the media"],
+ "publisher-url" => ["type" => "varbinary(255)", "comment" => "URL of the publisher of the media"],
+ "publisher-name" => ["type" => "varchar(255)", "comment" => "Name of the publisher of the media"],
+ "publisher-image" => ["type" => "varbinary(255)", "comment" => "Image of the publisher of the media"],
],
"indexes" => [
"PRIMARY" => ["id"],
"uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item owner"],
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item author"],
- "causer-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
+ "causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
"network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => ""],
"created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
"received" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
- "changed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date that something in the conversation changed, indicating clients should fetch the conversation again"],
+ "changed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date that something in the conversation changed, indicating clients should fetch the conversation again"],
"commented" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""]
],
"indexes" => [
"causer-id" => ["causer-id"],
"received" => ["received"],
"commented" => ["commented"],
- "changed" => ["changed"]
]
],
"post-user" => [
"network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Network from where the item comes from"],
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the owner of this item"],
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the author of this item"],
- "causer-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
- "post-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Post type (personal note, bookmark, ...)"],
+ "causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
+ "post-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Post type (personal note, image, article, ...)"],
+ "post-reason" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Reason why the post arrived at the user"],
"vid" => ["type" => "smallint unsigned", "foreign" => ["verb" => "id", "on delete" => "restrict"], "comment" => "Id of the verb table entry that contains the activity verbs"],
"private" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "0=public, 1=private, 2=unlisted"],
"global" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
"author-id_uid" => ["author-id", "uid"],
"author-id_received" => ["author-id", "received"],
"parent-uri-id_uid" => ["parent-uri-id", "uid"],
- "uid_hidden" => ["uid", "hidden"],
"uid_contactid" => ["uid", "contact-id"],
"uid_unseen_contactid" => ["uid", "unseen", "contact-id"],
"uid_unseen" => ["uid", "unseen"],
- "uid_unseen_wall" => ["uid", "unseen", "wall"],
+ "uid_hidden_uri-id" => ["uid", "hidden", "uri-id"],
],
],
"post-thread-user" => [
"uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item owner"],
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item author"],
- "causer-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
+ "causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
"network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => ""],
"created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
"received" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
"psid" => ["psid"],
"post-user-id" => ["post-user-id"],
"commented" => ["commented"],
- "received" => ["received"],
- "author-id_received" => ["author-id", "received"],
+ "uid_received" => ["uid", "received"],
"uid_pinned" => ["uid", "pinned"],
"uid_commented" => ["uid", "commented"],
- "mention_uid" => ["mention", "uid"],
+ "uid_starred" => ["uid", "starred"],
"uid_mention" => ["uid", "mention"],
]
],