2018-02-20 07:59:37 -05:00
-- ------------------------------------------
2023-10-05 13:06:21 -04:00
-- Friendica 2023.09-rc (Giant Rhubarb)
-- DB_UPDATE_VERSION 1535
2018-02-20 07:59:37 -05:00
-- ------------------------------------------
2020-05-22 01:06:55 -04:00
--
-- TABLE gserver
--
CREATE TABLE IF NOT EXISTS ` gserver ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` nurl ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2020-05-22 01:06:55 -04:00
` version ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` site_name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` info ` text COMMENT ' ' ,
` register_policy ` tinyint NOT NULL DEFAULT 0 COMMENT ' ' ,
` registered - users ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Number of registered users ' ,
2022-02-06 15:03:19 -05:00
` active - week - users ` int unsigned COMMENT ' Number of active users in the last week ' ,
` active - month - users ` int unsigned COMMENT ' Number of active users in the last month ' ,
` active - halfyear - users ` int unsigned COMMENT ' Number of active users in the last six month ' ,
` local - posts ` int unsigned COMMENT ' Number of local posts ' ,
` local - comments ` int unsigned COMMENT ' Number of local comments ' ,
2020-05-22 01:06:55 -04:00
` directory - type ` tinyint DEFAULT 0 COMMENT ' Type of directory service (Poco, Mastodon) ' ,
2022-09-04 03:54:01 -04:00
` poco ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` noscrape ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2020-05-22 01:06:55 -04:00
` network ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-01-09 14:18:22 -05:00
` protocol ` tinyint unsigned COMMENT ' The protocol of the server ' ,
2020-05-22 01:06:55 -04:00
` platform ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` relay - subscribe ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Has the server subscribed to the relay system ' ,
` relay - scope ` varchar ( 10 ) NOT NULL DEFAULT ' ' COMMENT ' The scope of messages that the server wants to get ' ,
` detection - method ` tinyint unsigned COMMENT ' Method that had been used to detect that server ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` last_poco_query ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2020-12-03 10:50:14 -05:00
` last_contact ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Last successful connection request ' ,
` last_failure ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Last failed connection request ' ,
2023-01-17 12:25:19 -05:00
` blocked ` boolean COMMENT ' Server is blocked ' ,
2020-07-19 06:04:50 -04:00
` failed ` boolean COMMENT ' Connection failed ' ,
2020-12-03 10:50:14 -05:00
` next_contact ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Next connection request ' ,
2020-05-22 01:06:55 -04:00
PRIMARY KEY ( ` id ` ) ,
2020-12-03 10:50:14 -05:00
UNIQUE INDEX ` nurl ` ( ` nurl ` ( 190 ) ) ,
2021-02-21 11:43:06 -05:00
INDEX ` next_contact ` ( ` next_contact ` ) ,
INDEX ` network ` ( ` network ` )
2020-05-22 01:06:55 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Global servers ' ;
2020-11-17 17:49:55 -05:00
--
-- TABLE user
--
CREATE TABLE IF NOT EXISTS ` user ` (
` uid ` mediumint unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2020-11-17 19:31:05 -05:00
` parent - uid ` mediumint unsigned COMMENT ' The parent user that has full control about this user ' ,
2020-11-17 17:49:55 -05:00
` guid ` varchar ( 64 ) NOT NULL DEFAULT ' ' COMMENT ' A unique identifier for this user ' ,
` username ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Name that this user is known by ' ,
` password ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' encrypted password ' ,
` legacy_password ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Is the password hash double-hashed? ' ,
` nickname ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' nick- and user name ' ,
` email ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' the users email address ' ,
` openid ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` timezone ` varchar ( 128 ) NOT NULL DEFAULT ' ' COMMENT ' PHP-legal timezone ' ,
` language ` varchar ( 32 ) NOT NULL DEFAULT ' en ' COMMENT ' default language ' ,
` register_date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' timestamp of registration ' ,
` login_date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' timestamp of last login ' ,
2022-11-30 17:34:50 -05:00
` last - activity ` date COMMENT ' Day of the last activity ' ,
2020-11-17 17:49:55 -05:00
` default - location ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Default for item.location ' ,
` allow_location ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' 1 allows to display the location ' ,
` theme ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' user theme preference ' ,
` pubkey ` text COMMENT ' RSA public key 4096 bit ' ,
` prvkey ` text COMMENT ' RSA private key 4096 bit ' ,
` spubkey ` text COMMENT ' ' ,
` sprvkey ` text COMMENT ' ' ,
` verified ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' user is verified through email ' ,
` blocked ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' 1 for user is blocked ' ,
` blockwall ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Prohibit contacts to post to the profile page of the user ' ,
2023-03-22 00:08:47 -04:00
` hidewall ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Hide profile details from unknown viewers ' ,
2020-11-17 17:49:55 -05:00
` blocktags ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Prohibit contacts to tag the post of this user ' ,
` unkmail ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Permit unknown people to send private mails to this user ' ,
` cntunkmail ` int unsigned NOT NULL DEFAULT 10 COMMENT ' ' ,
` notify - flags ` smallint unsigned NOT NULL DEFAULT 65535 COMMENT ' email notification options ' ,
` page - flags ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' page/profile type ' ,
` account - type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` prvnets ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` pwdreset ` varchar ( 255 ) COMMENT ' Password reset request token ' ,
` pwdreset_time ` datetime COMMENT ' Timestamp of the last password reset request ' ,
` maxreq ` int unsigned NOT NULL DEFAULT 10 COMMENT ' ' ,
2022-11-12 09:58:03 -05:00
` expire ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Delay in days before deleting user-related posts. Scope is controlled by pConfig. ' ,
2020-11-17 17:49:55 -05:00
` account_removed ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' if 1 the account is removed ' ,
` account_expired ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` account_expires_on ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' timestamp when account expires and will be deleted ' ,
` expire_notification_sent ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' timestamp of last warning of account expiration ' ,
` def_gid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` allow_cid ` mediumtext COMMENT ' default permission for this user ' ,
` allow_gid ` mediumtext COMMENT ' default permission for this user ' ,
` deny_cid ` mediumtext COMMENT ' default permission for this user ' ,
` deny_gid ` mediumtext COMMENT ' default permission for this user ' ,
` openidserver ` text COMMENT ' ' ,
PRIMARY KEY ( ` uid ` ) ,
INDEX ` nickname ` ( ` nickname ` ( 32 ) ) ,
INDEX ` parent - uid ` ( ` parent - uid ` ) ,
2021-02-21 08:14:17 -05:00
INDEX ` guid ` ( ` guid ` ) ,
2021-02-21 11:43:06 -05:00
INDEX ` email ` ( ` email ` ( 64 ) ) ,
2020-11-17 17:49:55 -05:00
FOREIGN KEY ( ` parent - uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' The local users ' ;
2023-07-09 15:56:09 -04:00
--
-- TABLE user-gserver
--
CREATE TABLE IF NOT EXISTS ` user - gserver ` (
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` gsid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Gserver id ' ,
` ignored ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' server accounts are ignored for the user ' ,
PRIMARY KEY ( ` uid ` , ` gsid ` ) ,
2023-08-21 08:07:10 -04:00
INDEX ` gsid ` ( ` gsid ` ) ,
2023-07-09 15:56:09 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' User settings about remote servers ' ;
2021-07-08 15:16:23 -04:00
--
-- TABLE item-uri
--
CREATE TABLE IF NOT EXISTS ` item - uri ` (
` id ` int unsigned NOT NULL auto_increment ,
2022-09-04 03:54:01 -04:00
` uri ` varbinary ( 383 ) NOT NULL COMMENT ' URI of an item ' ,
2021-07-08 15:16:23 -04:00
` guid ` varbinary ( 255 ) COMMENT ' A unique identifier for an item ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` uri ` ( ` uri ` ) ,
INDEX ` guid ` ( ` guid ` )
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' URI and GUID for items ' ;
2020-05-15 08:17:13 -04:00
--
-- TABLE contact
--
CREATE TABLE IF NOT EXISTS ` contact ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` updated ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of last contact update ' ,
` network ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' Network of the contact ' ,
` name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Name that this contact is known by ' ,
` nick ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Nick- and user name of the contact ' ,
` location ` varchar ( 255 ) DEFAULT ' ' COMMENT ' ' ,
` about ` text COMMENT ' ' ,
` keywords ` text COMMENT ' public keywords (interests) of the contact ' ,
2021-08-08 21:39:09 -04:00
` xmpp ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' XMPP address ' ,
` matrix ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Matrix address ' ,
2022-09-04 03:54:01 -04:00
` avatar ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-12-11 04:56:30 -05:00
` blurhash ` varbinary ( 255 ) COMMENT ' BlurHash representation of the avatar ' ,
2022-09-04 03:54:01 -04:00
` header ` varbinary ( 383 ) COMMENT ' Header picture ' ,
` url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` nurl ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-07-08 14:59:58 -04:00
` uri - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the contact url ' ,
2020-05-15 08:17:13 -04:00
` addr ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` alias ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2020-05-15 08:17:13 -04:00
` pubkey ` text COMMENT ' RSA public key 4096 bit ' ,
` prvkey ` text COMMENT ' RSA private key 4096 bit ' ,
2022-09-04 03:54:01 -04:00
` batch ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` notify ` varbinary ( 383 ) COMMENT ' ' ,
` poll ` varbinary ( 383 ) COMMENT ' ' ,
` subscribe ` varbinary ( 383 ) COMMENT ' ' ,
2020-05-15 08:17:13 -04:00
` last - update ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last try to update the contact info ' ,
2022-08-13 05:01:48 -04:00
` next - update ` datetime COMMENT ' Next connection request ' ,
2020-05-15 08:17:13 -04:00
` success_update ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last successful contact update ' ,
` failure_update ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last failed update ' ,
2020-07-19 06:04:50 -04:00
` failed ` boolean COMMENT ' Connection failed ' ,
2020-05-15 08:17:13 -04:00
` term - date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` last - item ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' date of the last post ' ,
2020-07-26 03:34:33 -04:00
` last - discovery ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' date of the last follower discovery ' ,
2022-08-13 05:01:48 -04:00
` local - data ` boolean COMMENT ' Is true when there are posts with this contact on the system ' ,
2020-05-15 08:17:13 -04:00
` blocked ` boolean NOT NULL DEFAULT ' 1 ' COMMENT ' Node-wide block status ' ,
` block_reason ` text COMMENT ' Node-wide block reason ' ,
` readonly ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' posts of the contact are readonly ' ,
2021-09-13 04:22:11 -04:00
` contact - type ` tinyint NOT NULL DEFAULT 0 COMMENT ' Person, organisation, news, community, relay ' ,
` manually - approve ` boolean COMMENT ' Contact requests have to be approved manually ' ,
2020-05-15 08:17:13 -04:00
` archive ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` unsearchable ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Contact prefers to not be searchable ' ,
` sensitive ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Contact posts sensitive content ' ,
2023-08-24 07:48:35 -04:00
` baseurl ` varbinary ( 383 ) DEFAULT ' ' COMMENT ' baseurl of the contact from the gserver record, can be missing ' ,
` gsid ` int unsigned COMMENT ' Global Server ID, can be missing ' ,
2021-09-13 04:22:11 -04:00
` bd ` date NOT NULL DEFAULT ' 0001-01-01 ' COMMENT ' ' ,
2020-05-15 08:17:13 -04:00
` reason ` text COMMENT ' ' ,
2021-09-13 04:22:11 -04:00
` self ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' 1 if the contact is the user him/her self ' ,
` remote_self ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` rel ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' The kind of the relation between the user and the contact ' ,
` protocol ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' Protocol of the contact ' ,
` subhub ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` hub - verify ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-09-13 04:22:11 -04:00
` rating ` tinyint NOT NULL DEFAULT 0 COMMENT ' Automatically detected feed poll frequency ' ,
` priority ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Feed poll priority ' ,
` attag ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` hidden ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` pending ` boolean NOT NULL DEFAULT ' 1 ' COMMENT ' Contact request is pending ' ,
` deleted ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Contact has been deleted ' ,
2020-05-15 08:17:13 -04:00
` info ` mediumtext COMMENT ' ' ,
` notify_new_posts ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` fetch_further_information ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
2020-06-06 16:43:23 -04:00
` ffi_keyword_denylist ` text COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` photo ` varbinary ( 383 ) DEFAULT ' ' COMMENT ' Link to the profile photo of the contact ' ,
` thumb ` varbinary ( 383 ) DEFAULT ' ' COMMENT ' Link to the profile photo (thumb size) ' ,
` micro ` varbinary ( 383 ) DEFAULT ' ' COMMENT ' Link to the profile photo (micro size) ' ,
2021-09-13 04:22:11 -04:00
` name - date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` uri - date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` avatar - date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` request ` varbinary ( 383 ) COMMENT ' ' ,
` confirm ` varbinary ( 383 ) COMMENT ' ' ,
` poco ` varbinary ( 383 ) COMMENT ' ' ,
2021-09-13 04:22:11 -04:00
` writable ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2023-05-30 09:13:48 -04:00
` forum ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' contact is a group. Deprecated, use \ ' contact - type \ ' = \ ' community \ ' and \ ' manually - approve \ ' = false instead ' ,
2021-09-13 04:22:11 -04:00
` prv ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' contact is a private group. Deprecated, use \ ' contact - type \ ' = \ ' community \ ' and \ ' manually - approve \ ' = true instead ' ,
` bdyear ` varchar ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` site - pubkey ` text COMMENT ' Deprecated ' ,
` gender ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' Deprecated ' ,
` duplex ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Deprecated ' ,
2022-09-04 03:54:01 -04:00
` issued - id ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' Deprecated ' ,
` dfrn - id ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' Deprecated ' ,
2021-09-13 04:22:11 -04:00
` aes_allow ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Deprecated ' ,
` ret - aes ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Deprecated ' ,
` usehub ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Deprecated ' ,
` closeness ` tinyint unsigned NOT NULL DEFAULT 99 COMMENT ' Deprecated ' ,
` profile - id ` int unsigned COMMENT ' Deprecated ' ,
2020-05-15 08:17:13 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid_name ` ( ` uid ` , ` name ` ( 190 ) ) ,
INDEX ` self_uid ` ( ` self ` , ` uid ` ) ,
2020-11-19 04:47:59 -05:00
INDEX ` alias_uid ` ( ` alias ` ( 128 ) , ` uid ` ) ,
2020-05-15 08:17:13 -04:00
INDEX ` pending_uid ` ( ` pending ` , ` uid ` ) ,
INDEX ` blocked_uid ` ( ` blocked ` , ` uid ` ) ,
INDEX ` uid_rel_network_poll ` ( ` uid ` , ` rel ` , ` network ` , ` poll ` ( 64 ) , ` archive ` ) ,
INDEX ` uid_network_batch ` ( ` uid ` , ` network ` , ` batch ` ( 64 ) ) ,
2021-03-06 11:52:36 -05:00
INDEX ` batch_contact - type ` ( ` batch ` ( 64 ) , ` contact - type ` ) ,
2020-11-19 04:47:59 -05:00
INDEX ` addr_uid ` ( ` addr ` ( 128 ) , ` uid ` ) ,
INDEX ` nurl_uid ` ( ` nurl ` ( 128 ) , ` uid ` ) ,
INDEX ` nick_uid ` ( ` nick ` ( 128 ) , ` uid ` ) ,
2020-08-18 06:50:18 -04:00
INDEX ` attag_uid ` ( ` attag ` ( 96 ) , ` uid ` ) ,
2020-07-19 06:04:50 -04:00
INDEX ` network_uid_lastupdate ` ( ` network ` , ` uid ` , ` last - update ` ) ,
2020-08-18 06:50:18 -04:00
INDEX ` uid_network_self_lastupdate ` ( ` uid ` , ` network ` , ` self ` , ` last - update ` ) ,
2022-08-13 05:01:48 -04:00
INDEX ` next - update ` ( ` next - update ` ) ,
INDEX ` local - data - next - update ` ( ` local - data ` , ` next - update ` ) ,
2020-07-31 13:58:25 -04:00
INDEX ` uid_lastitem ` ( ` uid ` , ` last - item ` ) ,
2021-02-21 11:43:06 -05:00
INDEX ` baseurl ` ( ` baseurl ` ( 64 ) ) ,
2021-03-10 08:25:37 -05:00
INDEX ` uid_contact - type ` ( ` uid ` , ` contact - type ` ) ,
INDEX ` uid_self_contact - type ` ( ` uid ` , ` self ` , ` contact - type ` ) ,
INDEX ` self_network_uid ` ( ` self ` , ` network ` , ` uid ` ) ,
2022-08-15 09:23:01 -04:00
INDEX ` gsid_uid_failed ` ( ` gsid ` , ` uid ` , ` failed ` ) ,
2021-07-08 14:59:58 -04:00
INDEX ` uri - id ` ( ` uri - id ` ) ,
2020-11-17 17:33:44 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-07-08 14:59:58 -04:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-05-22 01:00:55 -04:00
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2020-05-15 08:17:13 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' contact table ' ;
2020-08-24 16:09:03 -04:00
--
-- TABLE tag
--
CREATE TABLE IF NOT EXISTS ` tag ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' ' ,
` name ` varchar ( 96 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-04-23 20:20:06 -04:00
` type ` tinyint unsigned COMMENT ' Type of the tag (Unknown, General Collection, Follower Collection or Account) ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` type_name_url ` ( ` name ` , ` url ` ) ,
INDEX ` url ` ( ` url ` )
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' tags and mentions ' ;
2020-05-15 08:17:13 -04:00
--
-- TABLE permissionset
--
CREATE TABLE IF NOT EXISTS ` permissionset ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner id of this permission set ' ,
` allow_cid ` mediumtext COMMENT ' Access Control - list of allowed contact.id \ ' < 19 > < 78 > \ ' ' ,
2023-05-13 19:46:35 -04:00
` allow_gid ` mediumtext COMMENT ' Access Control - list of allowed circles ' ,
2020-05-15 08:17:13 -04:00
` deny_cid ` mediumtext COMMENT ' Access Control - list of denied contact.id ' ,
2023-05-13 19:46:35 -04:00
` deny_gid ` mediumtext COMMENT ' Access Control - list of denied circles ' ,
2020-05-15 08:17:13 -04:00
PRIMARY KEY ( ` id ` ) ,
2020-11-17 17:33:44 -05:00
INDEX ` uid_allow_cid_allow_gid_deny_cid_deny_gid ` ( ` uid ` , ` allow_cid ` ( 50 ) , ` allow_gid ` ( 30 ) , ` deny_cid ` ( 50 ) , ` deny_gid ` ( 30 ) ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2020-05-15 08:17:13 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
2020-11-19 19:17:32 -05:00
--
-- TABLE verb
--
CREATE TABLE IF NOT EXISTS ` verb ` (
` id ` smallint unsigned NOT NULL auto_increment ,
` name ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-02-21 08:14:17 -05:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` name ` ( ` name ` )
2020-11-19 19:17:32 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Activity Verbs ' ;
2019-08-20 03:39:13 -04:00
--
-- TABLE 2fa_app_specific_password
--
CREATE TABLE IF NOT EXISTS ` 2 fa_app_specific_password ` (
` id ` mediumint unsigned NOT NULL auto_increment COMMENT ' Password ID for revocation ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' User ID ' ,
` description ` varchar ( 255 ) COMMENT ' Description of the usage of the password ' ,
` hashed_password ` varchar ( 255 ) NOT NULL COMMENT ' Hashed password ' ,
` generated ` datetime NOT NULL COMMENT ' Datetime the password was generated ' ,
` last_used ` datetime COMMENT ' Datetime the password was last used ' ,
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` uid_description ` ( ` uid ` , ` description ` ( 190 ) ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2019-08-20 03:39:13 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Two-factor app-specific _password ' ;
2019-06-28 05:03:58 -04:00
--
-- TABLE 2fa_recovery_codes
--
CREATE TABLE IF NOT EXISTS ` 2 fa_recovery_codes ` (
` uid ` mediumint unsigned NOT NULL COMMENT ' User ID ' ,
` code ` varchar ( 50 ) NOT NULL COMMENT ' Recovery code string ' ,
` generated ` datetime NOT NULL COMMENT ' Datetime the code was generated ' ,
` used ` datetime COMMENT ' Datetime the code was used ' ,
2021-01-30 17:43:50 -05:00
PRIMARY KEY ( ` uid ` , ` code ` ) ,
2020-08-24 16:09:03 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2019-06-28 05:03:58 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Two-factor authentication recovery codes ' ;
2021-01-18 23:27:44 -05:00
--
-- TABLE 2fa_trusted_browser
--
CREATE TABLE IF NOT EXISTS ` 2 fa_trusted_browser ` (
2021-01-30 17:43:50 -05:00
` cookie_hash ` varchar ( 80 ) NOT NULL COMMENT ' Trusted cookie hash ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' User ID ' ,
` user_agent ` text COMMENT ' User agent string ' ,
2022-06-25 08:45:33 -04:00
` trusted ` boolean NOT NULL DEFAULT ' 1 ' COMMENT ' Whenever this browser should be trusted or not ' ,
2021-01-30 17:43:50 -05:00
` created ` datetime NOT NULL COMMENT ' Datetime the trusted browser was recorded ' ,
` last_used ` datetime COMMENT ' Datetime the trusted browser was last used ' ,
PRIMARY KEY ( ` cookie_hash ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2021-01-18 23:27:44 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Two-factor authentication trusted browsers ' ;
2022-11-30 00:59:27 -05:00
--
-- TABLE account-suggestion
--
CREATE TABLE IF NOT EXISTS ` account - suggestion ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the account url ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' User ID ' ,
` level ` smallint unsigned COMMENT ' level of closeness ' ,
` ignore ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' If set, this account will not be suggested again ' ,
PRIMARY KEY ( ` uid ` , ` uri - id ` ) ,
INDEX ` uri - id_uid ` ( ` uri - id ` , ` uid ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Account suggestion ' ;
2022-09-16 01:00:06 -04:00
--
-- TABLE account-user
--
CREATE TABLE IF NOT EXISTS ` account - user ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the account url ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' User ID ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` uri - id_uid ` ( ` uri - id ` , ` uid ` ) ,
INDEX ` uid_uri - id ` ( ` uid ` , ` uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Remote and local accounts ' ;
2018-10-07 16:36:15 -04:00
--
-- TABLE apcontact
--
CREATE TABLE IF NOT EXISTS ` apcontact ` (
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL COMMENT ' URL of the contact ' ,
2021-07-09 03:09:33 -04:00
` uri - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the apcontact url ' ,
2022-09-04 03:54:01 -04:00
` uuid ` varbinary ( 255 ) COMMENT ' ' ,
2018-10-07 16:36:15 -04:00
` type ` varchar ( 20 ) NOT NULL COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` following ` varbinary ( 383 ) COMMENT ' ' ,
` followers ` varbinary ( 383 ) COMMENT ' ' ,
` inbox ` varbinary ( 383 ) NOT NULL COMMENT ' ' ,
` outbox ` varbinary ( 383 ) COMMENT ' ' ,
` sharedinbox ` varbinary ( 383 ) COMMENT ' ' ,
` featured ` varbinary ( 383 ) COMMENT ' Address for the collection of featured posts ' ,
` featured - tags ` varbinary ( 383 ) COMMENT ' Address for the collection of featured tags ' ,
2019-01-14 01:36:08 -05:00
` manually - approve ` boolean COMMENT ' ' ,
2021-06-30 01:40:11 -04:00
` discoverable ` boolean COMMENT ' Mastodon extension: true if profile is published in their directory ' ,
2022-07-27 13:39:00 -04:00
` suspended ` boolean COMMENT ' Mastodon extension: true if profile is suspended ' ,
2018-10-07 16:36:15 -04:00
` nick ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` name ` varchar ( 255 ) COMMENT ' ' ,
` about ` text COMMENT ' ' ,
2021-08-10 19:49:09 -04:00
` xmpp ` varchar ( 255 ) COMMENT ' XMPP address ' ,
` matrix ` varchar ( 255 ) COMMENT ' Matrix address ' ,
2022-09-04 03:54:01 -04:00
` photo ` varbinary ( 383 ) COMMENT ' ' ,
` header ` varbinary ( 383 ) COMMENT ' Header picture ' ,
2018-10-07 16:36:15 -04:00
` addr ` varchar ( 255 ) COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` alias ` varbinary ( 383 ) COMMENT ' ' ,
2018-10-07 16:36:15 -04:00
` pubkey ` text COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` subscribe ` varbinary ( 383 ) COMMENT ' ' ,
` baseurl ` varbinary ( 383 ) COMMENT ' baseurl of the ap contact ' ,
2020-05-22 01:00:55 -04:00
` gsid ` int unsigned COMMENT ' Global Server ID ' ,
2019-05-02 09:05:31 -04:00
` generator ` varchar ( 255 ) COMMENT ' Name of the contact\ ' s system ' ,
2019-12-10 19:05:50 -05:00
` following_count ` int unsigned DEFAULT 0 COMMENT ' Number of following contacts ' ,
` followers_count ` int unsigned DEFAULT 0 COMMENT ' Number of followers ' ,
` statuses_count ` int unsigned DEFAULT 0 COMMENT ' Number of posts ' ,
2018-10-07 16:36:15 -04:00
` updated ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
PRIMARY KEY ( ` url ` ) ,
INDEX ` addr ` ( ` addr ` ( 32 ) ) ,
2018-11-16 15:21:33 -05:00
INDEX ` alias ` ( ` alias ` ( 190 ) ) ,
2020-05-22 01:00:55 -04:00
INDEX ` followers ` ( ` followers ` ( 190 ) ) ,
2020-07-19 06:04:50 -04:00
INDEX ` baseurl ` ( ` baseurl ` ( 190 ) ) ,
2020-11-24 01:26:26 -05:00
INDEX ` sharedinbox ` ( ` sharedinbox ` ( 190 ) ) ,
2020-05-22 01:00:55 -04:00
INDEX ` gsid ` ( ` gsid ` ) ,
2021-07-09 03:09:33 -04:00
UNIQUE INDEX ` uri - id ` ( ` uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-05-22 01:00:55 -04:00
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2018-10-07 16:36:15 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ActivityPub compatible contacts - used in the ActivityPub implementation ' ;
2021-05-09 18:23:21 -04:00
--
-- TABLE application
--
CREATE TABLE IF NOT EXISTS ` application ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' generated index ' ,
` client_id ` varchar ( 64 ) NOT NULL COMMENT ' ' ,
` client_secret ` varchar ( 64 ) NOT NULL COMMENT ' ' ,
` name ` varchar ( 255 ) NOT NULL COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` redirect_uri ` varbinary ( 383 ) NOT NULL COMMENT ' ' ,
` website ` varbinary ( 383 ) COMMENT ' ' ,
2021-05-09 18:23:21 -04:00
` scopes ` varchar ( 255 ) COMMENT ' ' ,
2021-05-13 10:58:55 -04:00
` read ` boolean COMMENT ' Read scope ' ,
` write ` boolean COMMENT ' Write scope ' ,
` follow ` boolean COMMENT ' Follow scope ' ,
2021-05-16 03:37:11 -04:00
` push ` boolean COMMENT ' Push scope ' ,
2021-05-09 18:23:21 -04:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` client_id ` ( ` client_id ` )
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' OAuth application ' ;
2022-06-06 17:38:59 -04:00
--
-- TABLE application-marker
--
CREATE TABLE IF NOT EXISTS ` application - marker ` (
` application - id ` int unsigned NOT NULL COMMENT ' ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' Owner User id ' ,
` timeline ` varchar ( 64 ) NOT NULL COMMENT ' Marker (home, notifications) ' ,
2022-09-04 03:54:01 -04:00
` last_read_id ` varbinary ( 383 ) COMMENT ' Marker id for the timeline ' ,
2022-06-06 17:38:59 -04:00
` version ` smallint unsigned COMMENT ' Version number ' ,
` updated_at ` datetime COMMENT ' creation time ' ,
PRIMARY KEY ( ` application - id ` , ` uid ` , ` timeline ` ) ,
INDEX ` uid_id ` ( ` uid ` ) ,
FOREIGN KEY ( ` application - id ` ) REFERENCES ` application ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Timeline marker ' ;
2021-05-11 02:19:23 -04:00
--
-- TABLE application-token
--
CREATE TABLE IF NOT EXISTS ` application - token ` (
` application - id ` int unsigned NOT NULL COMMENT ' ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' Owner User id ' ,
` code ` varchar ( 64 ) NOT NULL COMMENT ' ' ,
` access_token ` varchar ( 64 ) NOT NULL COMMENT ' ' ,
2021-05-13 10:58:55 -04:00
` created_at ` datetime NOT NULL COMMENT ' creation time ' ,
` scopes ` varchar ( 255 ) COMMENT ' ' ,
` read ` boolean COMMENT ' Read scope ' ,
` write ` boolean COMMENT ' Write scope ' ,
` follow ` boolean COMMENT ' Follow scope ' ,
2021-05-16 03:37:11 -04:00
` push ` boolean COMMENT ' Push scope ' ,
2021-05-11 02:19:23 -04:00
PRIMARY KEY ( ` application - id ` , ` uid ` ) ,
INDEX ` uid_id ` ( ` uid ` , ` application - id ` ) ,
FOREIGN KEY ( ` application - id ` ) REFERENCES ` application ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' OAuth user token ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE attach
--
CREATE TABLE IF NOT EXISTS ` attach ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' generated index ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` hash ` varchar ( 64 ) NOT NULL DEFAULT ' ' COMMENT ' hash ' ,
` filename ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' filename of original ' ,
` filetype ` varchar ( 64 ) NOT NULL DEFAULT ' ' COMMENT ' mimetype ' ,
` filesize ` int unsigned NOT NULL DEFAULT 0 COMMENT ' size in bytes ' ,
` data ` longblob NOT NULL COMMENT ' file data ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' creation time ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' last edit time ' ,
2019-10-28 16:59:55 -04:00
` allow_cid ` mediumtext COMMENT ' Access Control - list of allowed contact.id \ ' < 19 > < 78 > ' ,
2023-05-13 19:46:35 -04:00
` allow_gid ` mediumtext COMMENT ' Access Control - list of allowed circles ' ,
2019-10-28 16:59:55 -04:00
` deny_cid ` mediumtext COMMENT ' Access Control - list of denied contact.id ' ,
2023-05-13 19:46:35 -04:00
` deny_gid ` mediumtext COMMENT ' Access Control - list of denied circles ' ,
2019-01-03 16:51:36 -05:00
` backend - class ` tinytext COMMENT ' Storage backend class ' ,
` backend - ref ` text COMMENT ' Storage backend data reference ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' file attachments ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE cache
--
CREATE TABLE IF NOT EXISTS ` cache ` (
2018-02-28 23:48:28 -05:00
` k ` varbinary ( 255 ) NOT NULL COMMENT ' cache key ' ,
` v ` mediumtext COMMENT ' cached serialized value ' ,
` expires ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of cache expiration ' ,
` updated ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of cache insertion ' ,
2018-03-04 23:41:14 -05:00
PRIMARY KEY ( ` k ` ) ,
INDEX ` k_expires ` ( ` k ` , ` expires ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Stores temporary data ' ;
2018-02-20 07:59:37 -05:00
2023-02-04 14:52:24 -05:00
--
-- TABLE config
--
CREATE TABLE IF NOT EXISTS ` config ` (
2023-02-04 18:15:01 -05:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' ' ,
2023-02-04 14:52:24 -05:00
` cat ` varbinary ( 50 ) NOT NULL DEFAULT ' ' COMMENT ' The category of the entry ' ,
` k ` varbinary ( 50 ) NOT NULL DEFAULT ' ' COMMENT ' The key of the entry ' ,
` v ` mediumtext COMMENT ' ' ,
2023-02-04 18:15:01 -05:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` cat_k ` ( ` cat ` , ` k ` )
2023-02-04 14:52:24 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' main configuration storage ' ;
2020-03-10 18:04:03 -04:00
--
-- TABLE contact-relation
--
CREATE TABLE IF NOT EXISTS ` contact - relation ` (
` cid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' contact the related contact had interacted with ' ,
` relation - cid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' related contact who had interacted with the contact ' ,
2023-09-07 08:34:46 -04:00
` last - interaction ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last interaction by relation-cid on cid ' ,
2020-07-26 03:34:33 -04:00
` follow - updated ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last update of the contact relationship ' ,
2023-09-07 08:34:46 -04:00
` follows ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' if true, relation-cid follows cid ' ,
2023-08-30 15:17:42 -04:00
` score ` smallint unsigned COMMENT ' score for interactions of cid on relation-cid ' ,
` relation - score ` smallint unsigned COMMENT ' score for interactions of relation-cid on cid ' ,
` thread - score ` smallint unsigned COMMENT ' score for interactions of cid on threads of relation-cid ' ,
` relation - thread - score ` smallint unsigned COMMENT ' score for interactions of relation-cid on threads of cid ' ,
2020-03-10 18:04:03 -04:00
PRIMARY KEY ( ` cid ` , ` relation - cid ` ) ,
2020-07-26 03:34:33 -04:00
INDEX ` relation - cid ` ( ` relation - cid ` ) ,
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` relation - cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2020-03-10 18:04:03 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Contact relations ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE conv
--
CREATE TABLE IF NOT EXISTS ` conv ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-09-04 03:54:01 -04:00
` guid ` varbinary ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' A unique identifier for this conversation ' ,
2018-05-29 10:11:25 -04:00
` recips ` text COMMENT ' sender_handle;recipient_handle ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` creator ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' handle of creator ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' creation timestamp ' ,
` updated ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' edited timestamp ' ,
` subject ` text COMMENT ' subject of initial message ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' private messages ' ;
2018-02-20 07:59:37 -05:00
2021-07-28 18:22:00 -04:00
--
-- TABLE workerqueue
--
CREATE TABLE IF NOT EXISTS ` workerqueue ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' Auto incremented worker task id ' ,
` command ` varchar ( 100 ) COMMENT ' Task command ' ,
` parameter ` mediumtext COMMENT ' Task parameter ' ,
` priority ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Task priority ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Creation date ' ,
` pid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Process id of the worker ' ,
` executed ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Execution date ' ,
` next_try ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Next retrial date ' ,
` retrial ` tinyint NOT NULL DEFAULT 0 COMMENT ' Retrial counter ' ,
` done ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Marked 1 when the task was done - will be deleted later ' ,
PRIMARY KEY ( ` id ` ) ,
INDEX ` command ` ( ` command ` ) ,
INDEX ` done_command_parameter ` ( ` done ` , ` command ` , ` parameter ` ( 64 ) ) ,
INDEX ` done_executed ` ( ` done ` , ` executed ` ) ,
INDEX ` done_priority_retrial_created ` ( ` done ` , ` priority ` , ` retrial ` , ` created ` ) ,
INDEX ` done_priority_next_try ` ( ` done ` , ` priority ` , ` next_try ` ) ,
INDEX ` done_pid_next_try ` ( ` done ` , ` pid ` , ` next_try ` ) ,
INDEX ` done_pid_retrial ` ( ` done ` , ` pid ` , ` retrial ` ) ,
INDEX ` done_pid_priority_created ` ( ` done ` , ` pid ` , ` priority ` , ` created ` )
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Background tasks queue entries ' ;
2020-12-01 17:21:44 -05:00
--
-- TABLE delayed-post
--
CREATE TABLE IF NOT EXISTS ` delayed - post ` (
` id ` int unsigned NOT NULL auto_increment ,
2022-09-04 03:54:01 -04:00
` uri ` varbinary ( 383 ) COMMENT ' URI of the post that will be distributed later ' ,
2020-12-01 17:21:44 -05:00
` uid ` mediumint unsigned COMMENT ' Owner User id ' ,
` delayed ` datetime COMMENT ' delay time ' ,
2021-07-29 06:34:31 -04:00
` wid ` int unsigned COMMENT ' Workerqueue id ' ,
2020-12-01 17:21:44 -05:00
PRIMARY KEY ( ` id ` ) ,
2020-12-01 19:34:10 -05:00
UNIQUE INDEX ` uid_uri ` ( ` uid ` , ` uri ` ( 190 ) ) ,
2021-07-28 18:22:00 -04:00
INDEX ` wid ` ( ` wid ` ) ,
2021-07-29 06:34:31 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` wid ` ) REFERENCES ` workerqueue ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2020-12-02 09:55:57 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Posts that are about to be distributed at a later time ' ;
2020-12-01 17:21:44 -05:00
2022-12-31 07:19:34 -05:00
--
-- TABLE delivery-queue
--
CREATE TABLE IF NOT EXISTS ` delivery - queue ` (
2022-12-31 11:20:18 -05:00
` gsid ` int unsigned NOT NULL COMMENT ' Target server ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Delivered post ' ,
2022-12-31 07:19:34 -05:00
` created ` datetime COMMENT ' ' ,
` command ` varbinary ( 32 ) COMMENT ' ' ,
2022-12-31 11:20:18 -05:00
` cid ` int unsigned COMMENT ' Target contact ' ,
2022-12-31 07:19:34 -05:00
` uid ` mediumint unsigned COMMENT ' Delivering user ' ,
` failed ` tinyint DEFAULT 0 COMMENT ' Number of times the delivery has failed ' ,
PRIMARY KEY ( ` uri - id ` , ` gsid ` ) ,
INDEX ` gsid_created ` ( ` gsid ` , ` created ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
INDEX ` cid ` ( ` cid ` ) ,
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Delivery data for posts for the batch processing ' ;
2021-08-28 03:10:27 -04:00
--
-- TABLE diaspora-contact
--
CREATE TABLE IF NOT EXISTS ` diaspora - contact ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the contact URL ' ,
` addr ` varchar ( 255 ) COMMENT ' ' ,
` alias ` varchar ( 255 ) COMMENT ' ' ,
` nick ` varchar ( 255 ) COMMENT ' ' ,
` name ` varchar ( 255 ) COMMENT ' ' ,
` given - name ` varchar ( 255 ) COMMENT ' ' ,
` family - name ` varchar ( 255 ) COMMENT ' ' ,
` photo ` varchar ( 255 ) COMMENT ' ' ,
` photo - medium ` varchar ( 255 ) COMMENT ' ' ,
` photo - small ` varchar ( 255 ) COMMENT ' ' ,
` batch ` varchar ( 255 ) COMMENT ' ' ,
` notify ` varchar ( 255 ) COMMENT ' ' ,
` poll ` varchar ( 255 ) COMMENT ' ' ,
` subscribe ` varchar ( 255 ) COMMENT ' ' ,
` searchable ` boolean COMMENT ' ' ,
` pubkey ` text COMMENT ' ' ,
` gsid ` int unsigned COMMENT ' Global Server ID ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` updated ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2023-03-26 18:26:35 -04:00
` interacting_count ` int unsigned DEFAULT 0 COMMENT ' Number of contacts this contact interacts with ' ,
2021-08-28 03:10:27 -04:00
` interacted_count ` int unsigned DEFAULT 0 COMMENT ' Number of contacts that interacted with this contact ' ,
` post_count ` int unsigned DEFAULT 0 COMMENT ' Number of posts and comments ' ,
PRIMARY KEY ( ` uri - id ` ) ,
UNIQUE INDEX ` addr ` ( ` addr ` ) ,
INDEX ` alias ` ( ` alias ` ) ,
INDEX ` gsid ` ( ` gsid ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Diaspora compatible contacts - used in the Diaspora implementation ' ;
2018-10-15 17:42:55 -04:00
--
-- TABLE diaspora-interaction
--
CREATE TABLE IF NOT EXISTS ` diaspora - interaction ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` interaction ` mediumtext COMMENT ' The Diaspora interaction ' ,
2020-05-15 02:50:20 -04:00
PRIMARY KEY ( ` uri - id ` ) ,
2020-05-16 16:59:42 -04:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-10-15 17:42:55 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Signed Diaspora Interaction ' ;
2022-04-25 09:45:03 -04:00
--
-- TABLE endpoint
--
CREATE TABLE IF NOT EXISTS ` endpoint ` (
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL COMMENT ' URL of the contact ' ,
2022-04-25 09:45:03 -04:00
` type ` varchar ( 20 ) NOT NULL COMMENT ' ' ,
` owner - uri - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the apcontact url ' ,
PRIMARY KEY ( ` url ` ) ,
UNIQUE INDEX ` owner - uri - id_type ` ( ` owner - uri - id ` , ` type ` ) ,
FOREIGN KEY ( ` owner - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ActivityPub endpoints - used in the ActivityPub implementation ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE event
--
CREATE TABLE IF NOT EXISTS ` event ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-09-04 03:54:01 -04:00
` guid ` varbinary ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` cid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' contact_id (ID of the contact in contact table) ' ,
2022-09-04 03:54:01 -04:00
` uri ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-07-08 09:47:46 -04:00
` uri - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the event uri ' ,
2018-05-29 10:11:25 -04:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' creation time ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' last edit time ' ,
` start ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' event start time ' ,
` finish ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' event end time ' ,
` summary ` text COMMENT ' short description or title of the event ' ,
` desc ` text COMMENT ' event description ' ,
` location ` text COMMENT ' event location ' ,
` type ` varchar ( 20 ) NOT NULL DEFAULT ' ' COMMENT ' event or birthday ' ,
` nofinish ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' if event does have no end this is 1 ' ,
` ignore ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' 0 or 1 ' ,
2019-10-28 16:59:55 -04:00
` allow_cid ` mediumtext COMMENT ' Access Control - list of allowed contact.id \ ' < 19 > < 78 > \ ' ' ,
2023-05-13 19:46:35 -04:00
` allow_gid ` mediumtext COMMENT ' Access Control - list of allowed circles ' ,
2019-10-28 16:59:55 -04:00
` deny_cid ` mediumtext COMMENT ' Access Control - list of denied contact.id ' ,
2023-05-13 19:46:35 -04:00
` deny_gid ` mediumtext COMMENT ' Access Control - list of denied circles ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` uid_start ` ( ` uid ` , ` start ` ) ,
INDEX ` cid ` ( ` cid ` ) ,
2021-07-08 09:47:46 -04:00
INDEX ` uri - id ` ( ` uri - id ` ) ,
2020-11-17 17:33:44 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-07-08 09:47:46 -04:00
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Events ' ;
2018-02-20 07:59:37 -05:00
2022-08-01 03:06:30 -04:00
--
-- TABLE fetch-entry
--
CREATE TABLE IF NOT EXISTS ` fetch - entry ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) COMMENT ' url that awaiting to be fetched ' ,
2022-08-01 03:06:30 -04:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Creation date of the fetch request ' ,
` wid ` int unsigned COMMENT ' Workerqueue id ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` url ` ( ` url ` ) ,
INDEX ` created ` ( ` created ` ) ,
INDEX ` wid ` ( ` wid ` ) ,
FOREIGN KEY ( ` wid ` ) REFERENCES ` workerqueue ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE fsuggest
--
CREATE TABLE IF NOT EXISTS ` fsuggest ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
` cid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` request ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` photo ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-02-20 07:59:37 -05:00
` note ` text COMMENT ' ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` cid ` ( ` cid ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' friend suggestion stuff ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE group
--
CREATE TABLE IF NOT EXISTS ` group ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` visible ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' 1 indicates the member list is not private ' ,
2023-05-13 19:46:35 -04:00
` deleted ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' 1 indicates the circle has been deleted ' ,
2023-05-30 09:13:48 -04:00
` cid ` int unsigned COMMENT ' Contact id of group. When this field is filled then the members are synced automatically. ' ,
2023-05-13 19:46:35 -04:00
` name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' human readable name of circle ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` uid ` ( ` uid ` ) ,
2022-02-09 14:44:10 -05:00
INDEX ` cid ` ( ` cid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2023-05-13 19:46:35 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' privacy circles, circle info ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE group_member
--
CREATE TABLE IF NOT EXISTS ` group_member ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2023-05-13 19:46:35 -04:00
` gid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' group.id of the associated circle ' ,
` contact - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' contact.id of the member assigned to the associated circle ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` contactid ` ( ` contact - id ` ) ,
2020-08-24 16:09:03 -04:00
UNIQUE INDEX ` gid_contactid ` ( ` gid ` , ` contact - id ` ) ,
FOREIGN KEY ( ` gid ` ) REFERENCES ` group ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` contact - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2023-05-13 19:46:35 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' privacy circles, member info ' ;
2018-02-20 07:59:37 -05:00
2018-03-26 01:44:53 -04:00
--
-- TABLE gserver-tag
--
CREATE TABLE IF NOT EXISTS ` gserver - tag ` (
` gserver - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' The id of the gserver ' ,
` tag ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' Tag that the server has subscribed ' ,
PRIMARY KEY ( ` gserver - id ` , ` tag ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` tag ` ( ` tag ` ) ,
FOREIGN KEY ( ` gserver - id ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Tags that the server has subscribed ' ;
2018-03-26 01:44:53 -04:00
2018-02-20 07:59:37 -05:00
--
-- TABLE hook
--
CREATE TABLE IF NOT EXISTS ` hook ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` hook ` varbinary ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' name of hook ' ,
` file ` varbinary ( 200 ) NOT NULL DEFAULT ' ' COMMENT ' relative filename of hook handler ' ,
` function ` varbinary ( 200 ) NOT NULL DEFAULT ' ' COMMENT ' function name of hook handler ' ,
` priority ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
2021-02-21 08:14:17 -05:00
INDEX ` priority ` ( ` priority ` ) ,
2018-02-20 07:59:37 -05:00
UNIQUE INDEX ` hook_file_function ` ( ` hook ` , ` file ` , ` function ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' addon hook registry ' ;
2018-02-20 07:59:37 -05:00
2022-07-21 01:42:53 -04:00
--
-- TABLE inbox-entry
--
CREATE TABLE IF NOT EXISTS ` inbox - entry ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-09-04 03:54:01 -04:00
` activity - id ` varbinary ( 383 ) COMMENT ' id of the incoming activity ' ,
` object - id ` varbinary ( 383 ) COMMENT ' ' ,
` in - reply - to - id ` varbinary ( 383 ) COMMENT ' ' ,
` conversation ` varbinary ( 383 ) COMMENT ' ' ,
2022-07-21 01:42:53 -04:00
` type ` varchar ( 64 ) COMMENT ' Type of the activity ' ,
` object - type ` varchar ( 64 ) COMMENT ' Type of the object activity ' ,
` object - object - type ` varchar ( 64 ) COMMENT ' Type of the object\ ' s object activity ' ,
` received ` datetime COMMENT ' Receiving date ' ,
` activity ` mediumtext COMMENT ' The JSON activity ' ,
` signer ` varchar ( 255 ) COMMENT ' ' ,
2022-07-24 10:26:06 -04:00
` push ` boolean COMMENT ' Is the entry pushed or have pulled it? ' ,
` trust ` boolean COMMENT ' Do we trust this entry? ' ,
2022-07-21 03:05:38 -04:00
` wid ` int unsigned COMMENT ' Workerqueue id ' ,
2022-07-21 01:42:53 -04:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` activity - id ` ( ` activity - id ` ) ,
INDEX ` object - id ` ( ` object - id ` ) ,
2022-07-21 03:05:38 -04:00
INDEX ` received ` ( ` received ` ) ,
INDEX ` wid ` ( ` wid ` ) ,
FOREIGN KEY ( ` wid ` ) REFERENCES ` workerqueue ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2022-07-21 01:42:53 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Incoming activity ' ;
--
-- TABLE inbox-entry-receiver
--
CREATE TABLE IF NOT EXISTS ` inbox - entry - receiver ` (
` queue - id ` int unsigned NOT NULL COMMENT ' ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' User id ' ,
PRIMARY KEY ( ` queue - id ` , ` uid ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` queue - id ` ) REFERENCES ` inbox - entry ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Receiver for the incoming activity ' ;
2019-03-25 17:51:32 -04:00
--
-- TABLE inbox-status
--
CREATE TABLE IF NOT EXISTS ` inbox - status ` (
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL COMMENT ' URL of the inbox ' ,
2022-05-02 01:17:42 -04:00
` uri - id ` int unsigned COMMENT ' Item-uri id of inbox url ' ,
2022-12-31 18:42:00 -05:00
` gsid ` int unsigned COMMENT ' ID of the related server ' ,
2019-03-25 17:51:32 -04:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Creation date of this entry ' ,
` success ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last successful delivery ' ,
` failure ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of the last failed delivery ' ,
` previous ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Previous delivery date ' ,
` archive ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Is the inbox archived? ' ,
2019-03-26 17:38:15 -04:00
` shared ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Is it a shared inbox? ' ,
2022-05-02 01:17:42 -04:00
PRIMARY KEY ( ` url ` ) ,
INDEX ` uri - id ` ( ` uri - id ` ) ,
2022-12-31 18:42:00 -05:00
INDEX ` gsid ` ( ` gsid ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2019-03-25 17:51:32 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Status of ActivityPub inboxes ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE intro
--
CREATE TABLE IF NOT EXISTS ` intro ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
2021-10-17 16:19:02 -04:00
` fid ` int unsigned COMMENT ' deprecated ' ,
2018-02-20 07:59:37 -05:00
` contact - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
2021-10-17 16:19:02 -04:00
` suggest - cid ` int unsigned COMMENT ' Suggested contact ' ,
2018-02-20 07:59:37 -05:00
` knowyou ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2021-10-21 15:48:23 -04:00
` duplex ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' deprecated ' ,
2018-02-20 07:59:37 -05:00
` note ` text COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` hash ` varbinary ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-02-20 07:59:37 -05:00
` datetime ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2021-10-19 15:30:09 -04:00
` blocked ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' deprecated ' ,
2018-02-20 07:59:37 -05:00
` ignore ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` contact - id ` ( ` contact - id ` ) ,
2021-10-18 21:55:24 -04:00
INDEX ` suggest - cid ` ( ` suggest - cid ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` uid ` ( ` uid ` ) ,
2020-08-26 01:32:47 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-10-17 16:19:02 -04:00
FOREIGN KEY ( ` contact - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` suggest - cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
2018-02-20 07:59:37 -05:00
2022-12-29 10:54:08 -05:00
--
-- TABLE key-value
--
CREATE TABLE IF NOT EXISTS ` key - value ` (
2022-12-29 16:36:08 -05:00
` k ` varbinary ( 50 ) NOT NULL COMMENT ' ' ,
2022-12-29 10:54:08 -05:00
` v ` mediumtext COMMENT ' ' ,
2022-12-30 11:15:15 -05:00
` updated_at ` int unsigned NOT NULL COMMENT ' timestamp of the last update ' ,
2022-12-29 16:36:08 -05:00
PRIMARY KEY ( ` k ` )
2022-12-29 10:54:08 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' A key value storage ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE locks
--
CREATE TABLE IF NOT EXISTS ` locks ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` name ` varchar ( 128 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` locked ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` pid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Process ID ' ,
2018-07-15 14:36:20 -04:00
` expires ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of cache expiration ' ,
2018-07-07 11:59:22 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` name_expires ` ( ` name ` , ` expires ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE mail
--
CREATE TABLE IF NOT EXISTS ` mail ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
2022-09-04 03:54:01 -04:00
` guid ` varbinary ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' A unique identifier for this private message ' ,
2018-05-29 10:11:25 -04:00
` from - name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' name of the sender ' ,
2022-09-04 03:54:01 -04:00
` from - photo ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' contact photo link of the sender ' ,
2023-03-26 18:29:58 -04:00
` from - url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' profile link of the sender ' ,
2022-09-04 03:54:01 -04:00
` contact - id ` varbinary ( 255 ) COMMENT ' contact.id ' ,
2021-05-22 09:37:04 -04:00
` author - id ` int unsigned COMMENT ' Link to the contact table with uid=0 of the author of the mail ' ,
2020-11-19 01:26:30 -05:00
` convid ` int unsigned COMMENT ' conv.id ' ,
2018-02-20 07:59:37 -05:00
` title ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` body ` mediumtext COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` seen ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' if message visited it is 1 ' ,
2018-02-20 07:59:37 -05:00
` reply ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` replied ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` unknown ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' if sender not in the contact table this is 1 ' ,
2022-09-04 03:54:01 -04:00
` uri ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-05-22 09:37:04 -04:00
` uri - id ` int unsigned COMMENT ' Item-uri id of the related mail ' ,
2022-09-04 03:54:01 -04:00
` parent - uri ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-05-22 09:37:04 -04:00
` parent - uri - id ` int unsigned COMMENT ' Item-uri id of the parent of the related mail ' ,
2022-09-04 03:54:01 -04:00
` thr - parent ` varbinary ( 383 ) COMMENT ' ' ,
2021-05-22 09:37:04 -04:00
` thr - parent - id ` int unsigned COMMENT ' Id of the item-uri table that contains the thread parent uri ' ,
2018-05-29 10:11:25 -04:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' creation time of the private message ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid_seen ` ( ` uid ` , ` seen ` ) ,
INDEX ` convid ` ( ` convid ` ) ,
INDEX ` uri ` ( ` uri ` ( 64 ) ) ,
INDEX ` parent - uri ` ( ` parent - uri ` ( 64 ) ) ,
2020-08-24 16:09:03 -04:00
INDEX ` contactid ` ( ` contact - id ` ( 32 ) ) ,
2021-05-22 09:37:04 -04:00
INDEX ` author - id ` ( ` author - id ` ) ,
INDEX ` uri - id ` ( ` uri - id ` ) ,
INDEX ` parent - uri - id ` ( ` parent - uri - id ` ) ,
INDEX ` thr - parent - id ` ( ` thr - parent - id ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` author - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` parent - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` thr - parent - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' private messages ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE mailacct
--
CREATE TABLE IF NOT EXISTS ` mailacct ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
` server ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` port ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` ssltype ` varchar ( 16 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` mailbox ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` user ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` pass ` text COMMENT ' ' ,
` reply_to ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` action ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` movetofolder ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` pubmail ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` last_check ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Mail account data for fetching mails ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE manage
--
CREATE TABLE IF NOT EXISTS ` manage ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
` mid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
UNIQUE INDEX ` uid_mid ` ( ` uid ` , ` mid ` ) ,
INDEX ` mid ` ( ` mid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` mid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' table of accounts that can manage each other ' ;
2018-02-20 07:59:37 -05:00
2021-06-01 01:51:03 -04:00
--
-- TABLE notification
--
CREATE TABLE IF NOT EXISTS ` notification ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned COMMENT ' Owner User id ' ,
` vid ` smallint unsigned COMMENT ' Id of the verb table entry that contains the activity verbs ' ,
2022-06-05 11:02:03 -04:00
` type ` smallint unsigned COMMENT ' ' ,
2021-06-01 01:51:03 -04:00
` actor - id ` int unsigned COMMENT ' Link to the contact table with uid=0 of the actor that caused the notification ' ,
` target - uri - id ` int unsigned COMMENT ' Item-uri id of the related post ' ,
` parent - uri - id ` int unsigned COMMENT ' Item-uri id of the parent of the related post ' ,
` created ` datetime COMMENT ' ' ,
2021-12-28 15:38:18 -05:00
` seen ` boolean DEFAULT ' 0 ' COMMENT ' Seen on the desktop ' ,
` dismissed ` boolean DEFAULT ' 0 ' COMMENT ' Dismissed via the API ' ,
2021-06-01 01:51:03 -04:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` uid_vid_type_actor - id_target - uri - id ` ( ` uid ` , ` vid ` , ` type ` , ` actor - id ` , ` target - uri - id ` ) ,
INDEX ` vid ` ( ` vid ` ) ,
INDEX ` actor - id ` ( ` actor - id ` ) ,
INDEX ` target - uri - id ` ( ` target - uri - id ` ) ,
INDEX ` parent - uri - id ` ( ` parent - uri - id ` ) ,
INDEX ` seen_uid ` ( ` seen ` , ` uid ` ) ,
2022-08-15 09:23:01 -04:00
INDEX ` uid_type_parent - uri - id_actor - id ` ( ` uid ` , ` type ` , ` parent - uri - id ` , ` actor - id ` ) ,
2021-06-01 01:51:03 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` vid ` ) REFERENCES ` verb ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` actor - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` target - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` parent - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' notifications ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE notify
--
CREATE TABLE IF NOT EXISTS ` notify ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` type ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` photo ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-02-20 07:59:37 -05:00
` date ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` msg ` mediumtext COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
2022-09-04 03:54:01 -04:00
` link ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2021-02-16 17:04:03 -05:00
` iid ` int unsigned COMMENT ' ' ,
2020-11-19 01:26:30 -05:00
` parent ` int unsigned COMMENT ' ' ,
2020-05-05 11:47:35 -04:00
` uri - id ` int unsigned COMMENT ' Item-uri id of the related post ' ,
` parent - uri - id ` int unsigned COMMENT ' Item-uri id of the parent of the related post ' ,
2018-02-20 07:59:37 -05:00
` seen ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` verb ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` otype ` varchar ( 10 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` name_cache ` tinytext COMMENT ' Cached bbcode parsing of name ' ,
` msg_cache ` mediumtext COMMENT ' Cached bbcode parsing of msg ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` seen_uid_date ` ( ` seen ` , ` uid ` , ` date ` ) ,
INDEX ` uid_date ` ( ` uid ` , ` date ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` uid_type_link ` ( ` uid ` , ` type ` , ` link ` ( 190 ) ) ,
2020-11-19 01:26:30 -05:00
INDEX ` uri - id ` ( ` uri - id ` ) ,
INDEX ` parent - uri - id ` ( ` parent - uri - id ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` parent - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2022-02-23 02:10:57 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' [Deprecated] User notifications ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE notify-threads
--
CREATE TABLE IF NOT EXISTS ` notify - threads ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` notify - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
2021-02-16 17:04:03 -05:00
` master - parent - item ` int unsigned COMMENT ' Deprecated ' ,
2020-05-05 11:47:35 -04:00
` master - parent - uri - id ` int unsigned COMMENT ' Item-uri id of the parent of the related post ' ,
2018-02-20 07:59:37 -05:00
` parent - item ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` receiver - uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
2020-05-15 02:50:20 -04:00
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` master - parent - uri - id ` ( ` master - parent - uri - id ` ) ,
INDEX ` receiver - uid ` ( ` receiver - uid ` ) ,
2020-08-26 01:32:47 -04:00
INDEX ` notify - id ` ( ` notify - id ` ) ,
FOREIGN KEY ( ` notify - id ` ) REFERENCES ` notify ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-11-19 01:26:30 -05:00
FOREIGN KEY ( ` master - parent - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-08-24 16:09:03 -04:00
FOREIGN KEY ( ` receiver - uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE oembed
--
CREATE TABLE IF NOT EXISTS ` oembed ` (
2022-09-04 03:54:01 -04:00
` url ` varbinary ( 383 ) NOT NULL COMMENT ' page url ' ,
2018-05-29 10:11:25 -04:00
` maxwidth ` mediumint unsigned NOT NULL COMMENT ' Maximum width passed to Oembed ' ,
` content ` mediumtext COMMENT ' OEmbed data of the page ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of creation ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` url ` , ` maxwidth ` ) ,
INDEX ` created ` ( ` created ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' cache for OEmbed queries ' ;
2018-02-20 07:59:37 -05:00
2018-06-23 00:46:22 -04:00
--
-- TABLE openwebauth-token
--
CREATE TABLE IF NOT EXISTS ` openwebauth - token ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2020-08-26 01:32:47 -04:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id - currently unused ' ,
2018-06-23 00:46:22 -04:00
` type ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' Verify type ' ,
` token ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' A generated token ' ,
` meta ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of creation ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
2020-11-17 17:33:44 -05:00
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-23 00:46:22 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Store OpenWebAuth token to verify contacts ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE parsed_url
--
CREATE TABLE IF NOT EXISTS ` parsed_url ` (
2021-02-16 10:10:53 -05:00
` url_hash ` binary ( 64 ) NOT NULL COMMENT ' page url hash ' ,
2018-05-29 10:11:25 -04:00
` guessing ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' is the \ ' guessing \ ' mode active? ' ,
` oembed ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' is the data the result of oembed? ' ,
2021-02-16 10:10:53 -05:00
` url ` text NOT NULL COMMENT ' page url ' ,
2018-05-29 10:11:25 -04:00
` content ` mediumtext COMMENT ' page data ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of creation ' ,
2021-02-16 10:10:53 -05:00
` expires ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime of expiration ' ,
2021-02-19 01:59:45 -05:00
PRIMARY KEY ( ` url_hash ` , ` guessing ` , ` oembed ` ) ,
INDEX ` created ` ( ` created ` ) ,
INDEX ` expires ` ( ` expires ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' cache for \ ' parse_url \ ' queries ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE pconfig
--
CREATE TABLE IF NOT EXISTS ` pconfig ` (
2020-11-17 17:33:44 -05:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' Primary key ' ,
2018-02-20 07:59:37 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
2020-11-17 17:33:44 -05:00
` cat ` varchar ( 50 ) NOT NULL DEFAULT ' ' COMMENT ' Category ' ,
` k ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' Key ' ,
` v ` mediumtext COMMENT ' Value ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
UNIQUE INDEX ` uid_cat_k ` ( ` uid ` , ` cat ` , ` k ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' personal (per user) configuration storage ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE photo
--
CREATE TABLE IF NOT EXISTS ` photo ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
` contact - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' contact.id ' ,
` guid ` char ( 16 ) NOT NULL DEFAULT ' ' COMMENT ' A unique identifier for this photo ' ,
2018-02-20 07:59:37 -05:00
` resource - id ` char ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2020-12-26 13:51:36 -05:00
` hash ` char ( 32 ) COMMENT ' hash value of the photo ' ,
2018-05-29 10:11:25 -04:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' creation date ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' last edited date ' ,
2018-02-20 07:59:37 -05:00
` title ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` desc ` text COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` album ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' The name of the album to which the photo belongs ' ,
2021-10-11 13:21:29 -04:00
` photo - type ` tinyint unsigned COMMENT ' User avatar, user banner, contact avatar, contact banner or default ' ,
2018-02-20 07:59:37 -05:00
` filename ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` type ` varchar ( 30 ) NOT NULL DEFAULT ' image/jpeg ' ,
` height ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` width ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` datasize ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
2022-12-04 08:29:21 -05:00
` blurhash ` varbinary ( 255 ) COMMENT ' BlurHash representation of the photo ' ,
2018-02-20 07:59:37 -05:00
` data ` mediumblob NOT NULL COMMENT ' ' ,
` scale ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` profile ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2019-10-28 16:59:55 -04:00
` allow_cid ` mediumtext COMMENT ' Access Control - list of allowed contact.id \ ' < 19 > < 78 > \ ' ' ,
2023-05-13 19:46:35 -04:00
` allow_gid ` mediumtext COMMENT ' Access Control - list of allowed circles ' ,
2019-10-28 16:59:55 -04:00
` deny_cid ` mediumtext COMMENT ' Access Control - list of denied contact.id ' ,
2023-05-13 19:46:35 -04:00
` deny_gid ` mediumtext COMMENT ' Access Control - list of denied circles ' ,
2020-03-08 09:16:59 -04:00
` accessible ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Make photo publicly accessible, ignoring permissions ' ,
2018-11-21 13:13:36 -05:00
` backend - class ` tinytext COMMENT ' Storage backend class ' ,
` backend - ref ` text COMMENT ' Storage backend data reference ' ,
2019-03-25 17:51:32 -04:00
` updated ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` contactid ` ( ` contact - id ` ) ,
INDEX ` uid_contactid ` ( ` uid ` , ` contact - id ` ) ,
INDEX ` uid_profile ` ( ` uid ` , ` profile ` ) ,
INDEX ` uid_album_scale_created ` ( ` uid ` , ` album ` ( 32 ) , ` scale ` , ` created ` ) ,
INDEX ` uid_album_resource - id_created ` ( ` uid ` , ` album ` ( 32 ) , ` resource - id ` , ` created ` ) ,
2020-08-21 14:37:58 -04:00
INDEX ` resource - id ` ( ` resource - id ` ) ,
2021-10-11 10:21:10 -04:00
INDEX ` uid_photo - type ` ( ` uid ` , ` photo - type ` ) ,
2020-11-24 01:26:26 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
2020-08-21 14:37:58 -04:00
FOREIGN KEY ( ` contact - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' photo storage ' ;
2018-02-20 07:59:37 -05:00
2021-02-13 14:56:03 -05:00
--
-- TABLE post
--
CREATE TABLE IF NOT EXISTS ` post ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` parent - uri - id ` int unsigned COMMENT ' Id of the item-uri table that contains the parent uri ' ,
` thr - parent - id ` int unsigned COMMENT ' Id of the item-uri table that contains the thread parent uri ' ,
2021-02-14 04:43:27 -05:00
` external - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the external uri ' ,
2021-02-13 14:56:03 -05:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Creation timestamp. ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of last edit (default is created) ' ,
` received ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime ' ,
` gravity ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` network ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' Network from where the item comes from ' ,
` owner - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Link to the contact table with uid=0 of the owner of this item ' ,
` author - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Link to the contact table with uid=0 of the author of this item ' ,
2021-03-01 17:08:33 -05:00
` causer - id ` int unsigned COMMENT ' Link to the contact table with uid=0 of the contact that caused the item creation ' ,
2021-04-07 02:02:06 -04:00
` post - type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Post type (personal note, image, article, ...) ' ,
2021-02-13 14:56:03 -05:00
` vid ` smallint unsigned COMMENT ' Id of the verb table entry that contains the activity verbs ' ,
` private ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' 0=public, 1=private, 2=unlisted ' ,
` global ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` visible ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` deleted ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' item has been marked for deletion ' ,
PRIMARY KEY ( ` uri - id ` ) ,
INDEX ` parent - uri - id ` ( ` parent - uri - id ` ) ,
INDEX ` thr - parent - id ` ( ` thr - parent - id ` ) ,
2021-02-14 04:43:27 -05:00
INDEX ` external - id ` ( ` external - id ` ) ,
2021-02-13 14:56:03 -05:00
INDEX ` owner - id ` ( ` owner - id ` ) ,
INDEX ` author - id ` ( ` author - id ` ) ,
INDEX ` causer - id ` ( ` causer - id ` ) ,
INDEX ` vid ` ( ` vid ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` parent - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` thr - parent - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-14 04:43:27 -05:00
FOREIGN KEY ( ` external - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-13 14:56:03 -05:00
FOREIGN KEY ( ` owner - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` author - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` causer - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` vid ` ) REFERENCES ` verb ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Structure for all posts ' ;
2022-07-27 13:39:00 -04:00
--
-- TABLE post-activity
--
CREATE TABLE IF NOT EXISTS ` post - activity ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` activity ` mediumtext COMMENT ' Original activity ' ,
` received ` datetime COMMENT ' ' ,
PRIMARY KEY ( ` uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Original remote activity ' ;
2020-05-15 08:17:13 -04:00
--
-- TABLE post-category
--
CREATE TABLE IF NOT EXISTS ` post - category ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
` type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` tid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
PRIMARY KEY ( ` uri - id ` , ` uid ` , ` type ` , ` tid ` ) ,
2022-05-05 04:45:32 -04:00
INDEX ` tid ` ( ` tid ` ) ,
INDEX ` uid_uri - id ` ( ` uid ` , ` uri - id ` ) ,
2020-05-16 16:59:42 -04:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-11-17 17:33:44 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-05-16 16:59:42 -04:00
FOREIGN KEY ( ` tid ` ) REFERENCES ` tag ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2020-05-15 08:17:13 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' post relation to categories ' ;
2022-04-06 09:34:11 -04:00
--
-- TABLE post-collection
--
CREATE TABLE IF NOT EXISTS ` post - collection ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
2022-04-06 11:02:21 -04:00
` type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' 0 - Featured ' ,
2022-08-15 09:23:01 -04:00
` author - id ` int unsigned COMMENT ' Author of the featured post ' ,
2022-04-06 09:34:11 -04:00
PRIMARY KEY ( ` uri - id ` , ` type ` ) ,
INDEX ` type ` ( ` type ` ) ,
2022-08-15 09:23:01 -04:00
INDEX ` author - id ` ( ` author - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2022-08-16 00:18:29 -04:00
FOREIGN KEY ( ` author - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2022-04-06 09:34:11 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Collection of posts ' ;
2021-01-30 17:43:50 -05:00
--
-- TABLE post-content
--
CREATE TABLE IF NOT EXISTS ` post - content ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` title ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' item title ' ,
` content - warning ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` body ` mediumtext COMMENT ' item body content ' ,
` raw - body ` mediumtext COMMENT ' Body without embedded media links ' ,
2022-10-10 18:39:30 -04:00
` quote - uri - id ` int unsigned COMMENT ' Id of the item-uri table that contains the quoted uri ' ,
2021-01-30 17:43:50 -05:00
` location ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' text location where this item originated ' ,
` coord ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' longitude/latitude pair representing location where this item originated ' ,
` language ` text COMMENT ' Language information about this post ' ,
` app ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' application which generated this item ' ,
` rendered - hash ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` rendered - html ` mediumtext COMMENT ' item.body converted to html ' ,
` object - type ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' ActivityStreams object type ' ,
` object ` text COMMENT ' JSON encoded object structure unless it is an implied object (normal post) ' ,
` target - type ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' ActivityStreams target type if applicable (URI) ' ,
` target ` text COMMENT ' JSON encoded target structure if used ' ,
` resource - id ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type ' ,
2022-09-04 03:54:01 -04:00
` plink ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' permalink or URL to a displayable copy of the message at its source ' ,
2021-01-30 17:43:50 -05:00
PRIMARY KEY ( ` uri - id ` ) ,
INDEX ` plink ` ( ` plink ` ( 191 ) ) ,
2021-02-21 00:28:27 -05:00
INDEX ` resource - id ` ( ` resource - id ` ) ,
2021-01-30 17:43:50 -05:00
FULLTEXT INDEX ` title - content - warning - body ` ( ` title ` , ` content - warning ` , ` body ` ) ,
2022-10-10 18:39:30 -04:00
INDEX ` quote - uri - id ` ( ` quote - uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` quote - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2021-01-30 17:43:50 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Content for all posts ' ;
2022-05-02 01:17:42 -04:00
--
-- TABLE post-delivery
--
CREATE TABLE IF NOT EXISTS ` post - delivery ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` inbox - id ` int unsigned NOT NULL COMMENT ' Item-uri id of inbox url ' ,
` uid ` mediumint unsigned COMMENT ' Delivering user ' ,
` created ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` command ` varbinary ( 32 ) COMMENT ' ' ,
2022-05-12 02:54:58 -04:00
` failed ` tinyint DEFAULT 0 COMMENT ' Number of times the delivery has failed ' ,
2022-05-13 01:52:05 -04:00
` receivers ` mediumtext COMMENT ' JSON encoded array with the receiving contacts ' ,
2022-05-02 01:17:42 -04:00
PRIMARY KEY ( ` uri - id ` , ` inbox - id ` ) ,
INDEX ` inbox - id_created ` ( ` inbox - id ` , ` created ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` inbox - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2022-05-05 08:23:44 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Delivery data for posts for the batch processing ' ;
2022-05-02 01:17:42 -04:00
2020-05-15 08:17:13 -04:00
--
-- TABLE post-delivery-data
--
CREATE TABLE IF NOT EXISTS ` post - delivery - data ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` postopts ` text COMMENT ' External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery ' ,
` inform ` mediumtext COMMENT ' Additional receivers of the linked item ' ,
` queue_count ` mediumint NOT NULL DEFAULT 0 COMMENT ' Initial number of delivery recipients, used as item.delivery_queue_count ' ,
` queue_done ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of successful deliveries, used as item.delivery_queue_done ' ,
` queue_failed ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of unsuccessful deliveries, used as item.delivery_queue_failed ' ,
` activitypub ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of successful deliveries via ActivityPub ' ,
` dfrn ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of successful deliveries via DFRN ' ,
` legacy_dfrn ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of successful deliveries via legacy DFRN ' ,
` diaspora ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of successful deliveries via Diaspora ' ,
` ostatus ` mediumint NOT NULL DEFAULT 0 COMMENT ' Number of successful deliveries via OStatus ' ,
PRIMARY KEY ( ` uri - id ` ) ,
2020-05-16 16:59:42 -04:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2020-05-15 08:17:13 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Delivery data for items ' ;
2023-09-01 17:56:59 -04:00
--
-- TABLE post-engagement
--
CREATE TABLE IF NOT EXISTS ` post - engagement ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
2023-09-02 10:19:52 -04:00
` owner - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Item owner ' ,
2023-09-01 17:56:59 -04:00
` contact - type ` tinyint NOT NULL DEFAULT 0 COMMENT ' Person, organisation, news, community, relay ' ,
2023-09-02 11:52:53 -04:00
` media - type ` tinyint NOT NULL DEFAULT 0 COMMENT ' Type of media in a bit array (1 = image, 2 = video, 4 = audio ' ,
2023-09-03 01:23:49 -04:00
` language ` varbinary ( 128 ) COMMENT ' Language information about this post ' ,
2023-09-01 17:56:59 -04:00
` created ` datetime COMMENT ' ' ,
2023-09-17 15:28:38 -04:00
` restricted ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' If true, this post is either unlisted or not from a federated network ' ,
2023-09-01 17:56:59 -04:00
` comments ` mediumint unsigned COMMENT ' Number of comments ' ,
` activities ` mediumint unsigned COMMENT ' Number of activities (like, dislike, ...) ' ,
PRIMARY KEY ( ` uri - id ` ) ,
2023-09-02 10:19:52 -04:00
INDEX ` owner - id ` ( ` owner - id ` ) ,
2023-09-01 17:56:59 -04:00
INDEX ` created ` ( ` created ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2023-09-09 23:47:06 -04:00
FOREIGN KEY ( ` owner - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2023-09-01 17:56:59 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Engagement data per post ' ;
2022-05-15 16:21:56 -04:00
--
-- TABLE post-history
--
CREATE TABLE IF NOT EXISTS ` post - history ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of edit ' ,
` title ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' item title ' ,
` content - warning ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` body ` mediumtext COMMENT ' item body content ' ,
` raw - body ` mediumtext COMMENT ' Body without embedded media links ' ,
` location ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' text location where this item originated ' ,
` coord ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' longitude/latitude pair representing location where this item originated ' ,
` language ` text COMMENT ' Language information about this post ' ,
` app ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' application which generated this item ' ,
` rendered - hash ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` rendered - html ` mediumtext COMMENT ' item.body converted to html ' ,
` object - type ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' ActivityStreams object type ' ,
` object ` text COMMENT ' JSON encoded object structure unless it is an implied object (normal post) ' ,
` target - type ` varchar ( 100 ) NOT NULL DEFAULT ' ' COMMENT ' ActivityStreams target type if applicable (URI) ' ,
` target ` text COMMENT ' JSON encoded target structure if used ' ,
` resource - id ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type ' ,
2022-09-04 03:54:01 -04:00
` plink ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' permalink or URL to a displayable copy of the message at its source ' ,
2022-05-15 16:21:56 -04:00
PRIMARY KEY ( ` uri - id ` , ` edited ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Post history ' ;
2021-07-05 14:45:49 -04:00
--
-- TABLE post-link
--
CREATE TABLE IF NOT EXISTS ` post - link ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` url ` varbinary ( 511 ) NOT NULL COMMENT ' External URL ' ,
` mimetype ` varchar ( 60 ) COMMENT ' ' ,
2022-12-11 04:56:30 -05:00
` height ` smallint unsigned COMMENT ' Height of the media ' ,
` width ` smallint unsigned COMMENT ' Width of the media ' ,
` blurhash ` varbinary ( 255 ) COMMENT ' BlurHash representation of the link ' ,
2021-07-05 14:45:49 -04:00
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` uri - id - url ` ( ` uri - id ` , ` url ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Post related external links ' ;
2020-10-29 01:20:26 -04:00
--
-- TABLE post-media
--
CREATE TABLE IF NOT EXISTS ` post - media ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
2022-06-19 17:06:04 -04:00
` url ` varbinary ( 1024 ) NOT NULL COMMENT ' Media URL ' ,
2022-10-16 17:43:48 -04:00
` media - uri - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the activities uri-id ' ,
2020-10-29 01:20:26 -04:00
` type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Media type ' ,
` mimetype ` varchar ( 60 ) COMMENT ' ' ,
` height ` smallint unsigned COMMENT ' Height of the media ' ,
` width ` smallint unsigned COMMENT ' Width of the media ' ,
2022-06-18 20:31:59 -04:00
` size ` bigint unsigned COMMENT ' Media size ' ,
2022-12-04 08:29:21 -05:00
` blurhash ` varbinary ( 255 ) COMMENT ' BlurHash representation of the image ' ,
2022-06-19 17:06:04 -04:00
` preview ` varbinary ( 512 ) COMMENT ' Preview URL ' ,
2020-10-29 01:20:26 -04:00
` preview - height ` smallint unsigned COMMENT ' Height of the preview picture ' ,
` preview - width ` smallint unsigned COMMENT ' Width of the preview picture ' ,
` description ` text COMMENT ' ' ,
2021-04-26 06:00:05 -04:00
` name ` varchar ( 255 ) COMMENT ' Name of the media ' ,
2022-09-04 03:54:01 -04:00
` author - url ` varbinary ( 383 ) COMMENT ' URL of the author of the media ' ,
2021-04-26 06:00:05 -04:00
` author - name ` varchar ( 255 ) COMMENT ' Name of the author of the media ' ,
2022-09-04 03:54:01 -04:00
` author - image ` varbinary ( 383 ) COMMENT ' Image of the author of the media ' ,
` publisher - url ` varbinary ( 383 ) COMMENT ' URL of the publisher of the media ' ,
2021-04-26 06:00:05 -04:00
` publisher - name ` varchar ( 255 ) COMMENT ' Name of the publisher of the media ' ,
2022-09-04 03:54:01 -04:00
` publisher - image ` varbinary ( 383 ) COMMENT ' Image of the publisher of the media ' ,
2020-10-29 01:20:26 -04:00
PRIMARY KEY ( ` id ` ) ,
2022-06-19 04:48:47 -04:00
UNIQUE INDEX ` uri - id - url ` ( ` uri - id ` , ` url ` ( 512 ) ) ,
2022-05-05 04:40:50 -04:00
INDEX ` uri - id - id ` ( ` uri - id ` , ` id ` ) ,
2022-10-16 17:43:48 -04:00
INDEX ` media - uri - id ` ( ` media - uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` media - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2020-10-29 01:20:26 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Attached media ' ;
2022-04-20 02:28:02 -04:00
--
-- TABLE post-question
--
CREATE TABLE IF NOT EXISTS ` post - question ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` multiple ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Multiple choice ' ,
` voters ` int unsigned COMMENT ' Number of voters for this question ' ,
` end - time ` datetime DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Question end time ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` uri - id ` ( ` uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Question ' ;
--
-- TABLE post-question-option
--
CREATE TABLE IF NOT EXISTS ` post - question - option ` (
` id ` int unsigned NOT NULL COMMENT ' Id of the question ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` name ` varchar ( 255 ) COMMENT ' Name of the option ' ,
` replies ` int unsigned COMMENT ' Number of replies for this question option ' ,
PRIMARY KEY ( ` uri - id ` , ` id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Question option ' ;
2020-05-15 08:17:13 -04:00
--
-- TABLE post-tag
--
CREATE TABLE IF NOT EXISTS ` post - tag ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` tid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` cid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Contact id of the mentioned public contact ' ,
PRIMARY KEY ( ` uri - id ` , ` type ` , ` tid ` , ` cid ` ) ,
INDEX ` tid ` ( ` tid ` ) ,
INDEX ` cid ` ( ` cid ` ) ,
2020-05-16 16:59:42 -04:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` tid ` ) REFERENCES ` tag ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2020-05-15 08:17:13 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' post relation to tags ' ;
2021-02-04 00:51:25 -05:00
--
-- TABLE post-thread
--
CREATE TABLE IF NOT EXISTS ` post - thread ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
2022-07-23 02:52:43 -04:00
` conversation - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the conversation uri ' ,
2021-02-04 00:51:25 -05:00
` owner - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Item owner ' ,
` author - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Item author ' ,
2021-03-01 17:08:33 -05:00
` causer - id ` int unsigned COMMENT ' Link to the contact table with uid=0 of the contact that caused the item creation ' ,
2021-02-04 00:51:25 -05:00
` network ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` received ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2021-02-20 16:33:21 -05:00
` changed ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date that something in the conversation changed, indicating clients should fetch the conversation again ' ,
2021-02-04 00:51:25 -05:00
` commented ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
PRIMARY KEY ( ` uri - id ` ) ,
2022-07-23 02:52:43 -04:00
INDEX ` conversation - id ` ( ` conversation - id ` ) ,
2021-02-04 00:51:25 -05:00
INDEX ` owner - id ` ( ` owner - id ` ) ,
INDEX ` author - id ` ( ` author - id ` ) ,
INDEX ` causer - id ` ( ` causer - id ` ) ,
INDEX ` received ` ( ` received ` ) ,
INDEX ` commented ` ( ` commented ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2022-07-23 02:52:43 -04:00
FOREIGN KEY ( ` conversation - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-04 00:51:25 -05:00
FOREIGN KEY ( ` owner - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` author - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` causer - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Thread related data ' ;
2021-02-09 12:11:52 -05:00
--
-- TABLE post-user
--
CREATE TABLE IF NOT EXISTS ` post - user ` (
` id ` int unsigned NOT NULL auto_increment ,
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
2021-02-14 04:43:27 -05:00
` parent - uri - id ` int unsigned COMMENT ' Id of the item-uri table that contains the parent uri ' ,
` thr - parent - id ` int unsigned COMMENT ' Id of the item-uri table that contains the thread parent uri ' ,
` external - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the external uri ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Creation timestamp. ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of last edit (default is created) ' ,
` received ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' datetime ' ,
` gravity ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
` network ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' Network from where the item comes from ' ,
` owner - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Link to the contact table with uid=0 of the owner of this item ' ,
` author - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Link to the contact table with uid=0 of the author of this item ' ,
2021-03-01 17:08:33 -05:00
` causer - id ` int unsigned COMMENT ' Link to the contact table with uid=0 of the contact that caused the item creation ' ,
2021-04-07 02:02:06 -04:00
` post - type ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Post type (personal note, image, article, ...) ' ,
` post - reason ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Reason why the post arrived at the user ' ,
2021-02-14 04:43:27 -05:00
` vid ` smallint unsigned COMMENT ' Id of the verb table entry that contains the activity verbs ' ,
` private ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' 0=public, 1=private, 2=unlisted ' ,
` global ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` visible ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` deleted ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' item has been marked for deletion ' ,
2021-02-09 12:11:52 -05:00
` uid ` mediumint unsigned NOT NULL COMMENT ' Owner id which owns this copy of the item ' ,
` protocol ` tinyint unsigned COMMENT ' Protocol used to deliver the item for this user ' ,
` contact - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' contact.id ' ,
2021-02-13 14:56:03 -05:00
` event - id ` int unsigned COMMENT ' Used to link to the event.id ' ,
2021-02-09 12:11:52 -05:00
` unseen ` boolean NOT NULL DEFAULT ' 1 ' COMMENT ' post has not been seen ' ,
` hidden ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Marker to hide the post from the user ' ,
2022-12-13 18:19:19 -05:00
` notification - type ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
2021-02-13 14:56:03 -05:00
` wall ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' This item was posted to the wall of uid ' ,
2021-02-09 12:11:52 -05:00
` origin ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' item originated at this site ' ,
` psid ` int unsigned COMMENT ' ID of the permission set of this post ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` uid_uri - id ` ( ` uid ` , ` uri - id ` ) ,
INDEX ` uri - id ` ( ` uri - id ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` parent - uri - id ` ( ` parent - uri - id ` ) ,
2021-02-14 04:43:27 -05:00
INDEX ` thr - parent - id ` ( ` thr - parent - id ` ) ,
INDEX ` external - id ` ( ` external - id ` ) ,
INDEX ` owner - id ` ( ` owner - id ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` author - id ` ( ` author - id ` ) ,
2021-02-14 04:43:27 -05:00
INDEX ` causer - id ` ( ` causer - id ` ) ,
INDEX ` vid ` ( ` vid ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` contact - id ` ( ` contact - id ` ) ,
INDEX ` event - id ` ( ` event - id ` ) ,
INDEX ` psid ` ( ` psid ` ) ,
INDEX ` author - id_uid ` ( ` author - id ` , ` uid ` ) ,
INDEX ` author - id_received ` ( ` author - id ` , ` received ` ) ,
INDEX ` parent - uri - id_uid ` ( ` parent - uri - id ` , ` uid ` ) ,
2022-08-16 07:23:47 -04:00
INDEX ` uid_wall_received ` ( ` uid ` , ` wall ` , ` received ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` uid_contactid ` ( ` uid ` , ` contact - id ` ) ,
2021-02-14 04:43:27 -05:00
INDEX ` uid_unseen_contactid ` ( ` uid ` , ` unseen ` , ` contact - id ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` uid_unseen ` ( ` uid ` , ` unseen ` ) ,
2021-03-09 16:21:33 -05:00
INDEX ` uid_hidden_uri - id ` ( ` uid ` , ` hidden ` , ` uri - id ` ) ,
2021-02-09 12:11:52 -05:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-14 04:43:27 -05:00
FOREIGN KEY ( ` parent - uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` thr - parent - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` external - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` owner - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` author - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` causer - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` vid ` ) REFERENCES ` verb ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
2021-02-09 12:11:52 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` contact - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-13 14:56:03 -05:00
FOREIGN KEY ( ` event - id ` ) REFERENCES ` event ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-09 12:11:52 -05:00
FOREIGN KEY ( ` psid ` ) REFERENCES ` permissionset ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' User specific post data ' ;
2021-01-31 18:37:34 -05:00
--
-- TABLE post-thread-user
--
CREATE TABLE IF NOT EXISTS ` post - thread - user ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
2022-07-23 02:52:43 -04:00
` conversation - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the conversation uri ' ,
2021-02-14 04:43:27 -05:00
` owner - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Item owner ' ,
` author - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Item author ' ,
2021-03-01 17:08:33 -05:00
` causer - id ` int unsigned COMMENT ' Link to the contact table with uid=0 of the contact that caused the item creation ' ,
2021-02-14 04:43:27 -05:00
` network ` char ( 4 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` received ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` changed ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date that something in the conversation changed, indicating clients should fetch the conversation again ' ,
` commented ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2021-01-31 18:37:34 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner id which owns this copy of the item ' ,
2022-04-07 17:52:25 -04:00
` pinned ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' deprecated ' ,
2021-01-31 18:37:34 -05:00
` starred ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
` ignored ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Ignore updates for this thread ' ,
` wall ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' This item was posted to the wall of uid ' ,
2021-02-04 00:51:25 -05:00
` mention ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2021-01-31 18:37:34 -05:00
` pubmail ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' ' ,
2022-02-12 13:38:36 -05:00
` forum_mode ` tinyint unsigned NOT NULL DEFAULT 0 COMMENT ' Deprecated ' ,
2021-02-09 11:35:01 -05:00
` contact - id ` int unsigned NOT NULL DEFAULT 0 COMMENT ' contact.id ' ,
` unseen ` boolean NOT NULL DEFAULT ' 1 ' COMMENT ' post has not been seen ' ,
` hidden ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Marker to hide the post from the user ' ,
` origin ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' item originated at this site ' ,
` psid ` int unsigned COMMENT ' ID of the permission set of this post ' ,
` post - user - id ` int unsigned COMMENT ' Id of the post-user table ' ,
2021-01-31 18:37:34 -05:00
PRIMARY KEY ( ` uid ` , ` uri - id ` ) ,
INDEX ` uri - id ` ( ` uri - id ` ) ,
2022-07-23 02:52:43 -04:00
INDEX ` conversation - id ` ( ` conversation - id ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` owner - id ` ( ` owner - id ` ) ,
INDEX ` author - id ` ( ` author - id ` ) ,
INDEX ` causer - id ` ( ` causer - id ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
2021-02-09 11:35:01 -05:00
INDEX ` contact - id ` ( ` contact - id ` ) ,
INDEX ` psid ` ( ` psid ` ) ,
INDEX ` post - user - id ` ( ` post - user - id ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` commented ` ( ` commented ` ) ,
2023-09-16 00:20:38 -04:00
INDEX ` received ` ( ` received ` ) ,
2021-03-06 00:47:49 -05:00
INDEX ` uid_received ` ( ` uid ` , ` received ` ) ,
2021-07-08 13:32:41 -04:00
INDEX ` uid_wall_received ` ( ` uid ` , ` wall ` , ` received ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` uid_commented ` ( ` uid ` , ` commented ` ) ,
2021-03-06 00:47:49 -05:00
INDEX ` uid_starred ` ( ` uid ` , ` starred ` ) ,
2021-02-20 15:51:08 -05:00
INDEX ` uid_mention ` ( ` uid ` , ` mention ` ) ,
2021-01-31 18:37:34 -05:00
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2022-07-23 02:52:43 -04:00
FOREIGN KEY ( ` conversation - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-02-14 04:43:27 -05:00
FOREIGN KEY ( ` owner - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` author - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` causer - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
2021-02-09 11:35:01 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` contact - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` psid ` ) REFERENCES ` permissionset ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT ,
FOREIGN KEY ( ` post - user - id ` ) REFERENCES ` post - user ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2021-01-31 18:37:34 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Thread related data per user ' ;
2021-02-01 15:11:25 -05:00
--
-- TABLE post-user-notification
--
CREATE TABLE IF NOT EXISTS ` post - user - notification ` (
` uri - id ` int unsigned NOT NULL COMMENT ' Id of the item-uri table entry that contains the item uri ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' Owner id which owns this copy of the item ' ,
2022-06-05 07:41:08 -04:00
` notification - type ` smallint unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
2021-02-01 15:11:25 -05:00
PRIMARY KEY ( ` uid ` , ` uri - id ` ) ,
INDEX ` uri - id ` ( ` uri - id ` ) ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' User post notifications ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE process
--
CREATE TABLE IF NOT EXISTS ` process ` (
2021-11-07 12:04:02 -05:00
` pid ` int unsigned NOT NULL COMMENT ' The ID of the process ' ,
2023-03-12 03:02:46 -04:00
` hostname ` varchar ( 255 ) NOT NULL COMMENT ' The name of the host the process is ran on ' ,
2018-02-20 07:59:37 -05:00
` command ` varbinary ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
2021-11-07 11:10:47 -05:00
PRIMARY KEY ( ` pid ` , ` hostname ` ) ,
2018-02-20 07:59:37 -05:00
INDEX ` command ` ( ` command ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Currently running system processes ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE profile
--
CREATE TABLE IF NOT EXISTS ` profile ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner User id ' ,
2020-01-19 09:43:15 -05:00
` profile - name ` varchar ( 255 ) COMMENT ' Deprecated ' ,
` is - default ` boolean COMMENT ' Deprecated ' ,
2018-05-29 10:11:25 -04:00
` hide - friends ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' Hide friend list from viewers of this profile ' ,
2023-08-10 19:04:08 -04:00
` name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Unused in favor of user.username ' ,
2020-02-09 02:35:39 -05:00
` pdesc ` varchar ( 255 ) COMMENT ' Deprecated ' ,
2018-05-29 10:11:25 -04:00
` dob ` varchar ( 32 ) NOT NULL DEFAULT ' 0000-00-00 ' COMMENT ' Day of birth ' ,
2018-02-20 07:59:37 -05:00
` address ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` locality ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` region ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` postal - code ` varchar ( 32 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` country - name ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2020-01-19 09:43:15 -05:00
` hometown ` varchar ( 255 ) COMMENT ' Deprecated ' ,
` gender ` varchar ( 32 ) COMMENT ' Deprecated ' ,
` marital ` varchar ( 255 ) COMMENT ' Deprecated ' ,
` with ` text COMMENT ' Deprecated ' ,
` howlong ` datetime COMMENT ' Deprecated ' ,
` sexual ` varchar ( 255 ) COMMENT ' Deprecated ' ,
` politic ` varchar ( 255 ) COMMENT ' Deprecated ' ,
` religion ` varchar ( 255 ) COMMENT ' Deprecated ' ,
2018-02-20 07:59:37 -05:00
` pub_keywords ` text COMMENT ' ' ,
` prv_keywords ` text COMMENT ' ' ,
2020-01-19 09:43:15 -05:00
` likes ` text COMMENT ' Deprecated ' ,
` dislikes ` text COMMENT ' Deprecated ' ,
2020-02-09 02:35:39 -05:00
` about ` text COMMENT ' Profile description ' ,
2020-01-19 09:43:15 -05:00
` summary ` varchar ( 255 ) COMMENT ' Deprecated ' ,
` music ` text COMMENT ' Deprecated ' ,
` book ` text COMMENT ' Deprecated ' ,
` tv ` text COMMENT ' Deprecated ' ,
` film ` text COMMENT ' Deprecated ' ,
` interest ` text COMMENT ' Deprecated ' ,
` romance ` text COMMENT ' Deprecated ' ,
` work ` text COMMENT ' Deprecated ' ,
` education ` text COMMENT ' Deprecated ' ,
` contact ` text COMMENT ' Deprecated ' ,
2018-02-20 07:59:37 -05:00
` homepage ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2022-11-05 10:37:13 -04:00
` homepage_verified ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' was the homepage verified by a rel-me link back to the profile ' ,
2021-08-08 21:39:09 -04:00
` xmpp ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' XMPP address ' ,
` matrix ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Matrix address ' ,
2022-09-04 03:54:01 -04:00
` photo ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` thumb ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-05-29 10:11:25 -04:00
` publish ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' publish default profile in local directory ' ,
` net - publish ` boolean NOT NULL DEFAULT ' 0 ' COMMENT ' publish profile in global directory ' ,
2018-02-20 07:59:37 -05:00
PRIMARY KEY ( ` id ` ) ,
2019-01-14 01:36:08 -05:00
INDEX ` uid_is - default ` ( ` uid ` , ` is - default ` ) ,
2020-08-24 16:09:03 -04:00
FULLTEXT INDEX ` pub_keywords ` ( ` pub_keywords ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' user profiles data ' ;
2018-02-20 07:59:37 -05:00
2019-11-07 22:09:19 -05:00
--
-- TABLE profile_field
--
CREATE TABLE IF NOT EXISTS ` profile_field ` (
2020-03-02 15:31:16 -05:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' Owner user id ' ,
` order ` mediumint unsigned NOT NULL DEFAULT 1 COMMENT ' Field ordering per user ' ,
` psid ` int unsigned COMMENT ' ID of the permission set of this profile field - 0 = public ' ,
` label ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' Label of the field ' ,
` value ` text COMMENT ' Value of the field ' ,
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' creation time ' ,
` edited ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' last edit time ' ,
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
INDEX ` order ` ( ` order ` ) ,
2020-05-15 02:50:20 -04:00
INDEX ` psid ` ( ` psid ` ) ,
2020-08-24 16:09:03 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2020-05-16 16:59:42 -04:00
FOREIGN KEY ( ` psid ` ) REFERENCES ` permissionset ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE RESTRICT
2019-11-07 22:09:19 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Custom profile fields ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE push_subscriber
--
CREATE TABLE IF NOT EXISTS ` push_subscriber ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
2022-09-04 03:54:01 -04:00
` callback_url ` varbinary ( 383 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-02-20 07:59:37 -05:00
` topic ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` nickname ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-05-18 23:56:29 -04:00
` push ` tinyint NOT NULL DEFAULT 0 COMMENT ' Retrial counter ' ,
2018-05-17 19:35:24 -04:00
` last_update ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of last successful trial ' ,
` next_try ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Next retrial date ' ,
2018-05-18 08:50:57 -04:00
` renewed ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' Date of last subscription renewal ' ,
2018-02-20 07:59:37 -05:00
` secret ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-05-17 19:35:24 -04:00
PRIMARY KEY ( ` id ` ) ,
2020-08-24 16:09:03 -04:00
INDEX ` next_try ` ( ` next_try ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Used for OStatus: Contains feed subscribers ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE register
--
CREATE TABLE IF NOT EXISTS ` register ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-09-04 03:54:01 -04:00
` hash ` varbinary ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
2018-02-20 07:59:37 -05:00
` created ` datetime NOT NULL DEFAULT ' 0001-01-01 00:00:00 ' COMMENT ' ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
` password ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` language ` varchar ( 16 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` note ` text COMMENT ' ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' registrations requiring admin approval ' ;
2018-02-20 07:59:37 -05:00
2022-11-12 16:50:28 -05:00
--
-- TABLE report
--
CREATE TABLE IF NOT EXISTS ` report ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2022-11-14 18:27:46 -05:00
` uid ` mediumint unsigned COMMENT ' Reporting user ' ,
2022-12-24 03:03:37 -05:00
` reporter - id ` int unsigned COMMENT ' Reporting contact ' ,
2022-11-12 16:50:28 -05:00
` cid ` int unsigned NOT NULL COMMENT ' Reported contact ' ,
2023-07-11 03:43:53 -04:00
` gsid ` int unsigned COMMENT ' Reported contact server ' ,
2022-11-12 16:50:28 -05:00
` comment ` text COMMENT ' Report ' ,
2023-09-16 00:20:38 -04:00
` category - id ` int unsigned NOT NULL DEFAULT 1 COMMENT ' Report category, one of Entity Report::CATEGORY_* ' ,
2022-11-12 16:50:28 -05:00
` forward ` boolean COMMENT ' Forward the report to the remote server ' ,
2022-12-10 09:08:12 -05:00
` public - remarks ` text COMMENT ' Remarks shared with the reporter ' ,
` private - remarks ` text COMMENT ' Remarks shared with the moderation team ' ,
` last - editor - uid ` mediumint unsigned COMMENT ' Last editor user ' ,
` assigned - uid ` mediumint unsigned COMMENT ' Assigned moderator user ' ,
2023-09-16 00:20:38 -04:00
` status ` tinyint unsigned NOT NULL COMMENT ' Status of the report, one of Entity Report::STATUS_* ' ,
` resolution ` tinyint unsigned COMMENT ' Resolution of the report, one of Entity Report::RESOLUTION_* ' ,
2023-09-09 23:47:06 -04:00
` created ` datetime ( 6 ) NOT NULL DEFAULT ' 0001-01-01 00:00:00.000000 ' COMMENT ' ' ,
2022-12-10 09:08:12 -05:00
` edited ` datetime ( 6 ) COMMENT ' Last time the report has been edited ' ,
2022-11-12 16:50:28 -05:00
PRIMARY KEY ( ` id ` ) ,
INDEX ` uid ` ( ` uid ` ) ,
INDEX ` cid ` ( ` cid ` ) ,
2022-12-24 03:03:37 -05:00
INDEX ` reporter - id ` ( ` reporter - id ` ) ,
2022-12-10 09:08:12 -05:00
INDEX ` gsid ` ( ` gsid ` ) ,
2023-07-10 16:50:16 -04:00
INDEX ` last - editor - uid ` ( ` last - editor - uid ` ) ,
2022-12-10 09:08:12 -05:00
INDEX ` assigned - uid ` ( ` assigned - uid ` ) ,
INDEX ` status - resolution ` ( ` status ` , ` resolution ` ) ,
INDEX ` created ` ( ` created ` ) ,
INDEX ` edited ` ( ` edited ` ) ,
2022-11-12 16:50:28 -05:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2022-12-24 03:03:37 -05:00
FOREIGN KEY ( ` reporter - id ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2022-12-10 09:08:12 -05:00
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` gsid ` ) REFERENCES ` gserver ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` last - editor - uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` assigned - uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2022-11-12 16:50:28 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
--
-- TABLE report-post
--
CREATE TABLE IF NOT EXISTS ` report - post ` (
` rid ` int unsigned NOT NULL COMMENT ' Report id ' ,
` uri - id ` int unsigned NOT NULL COMMENT ' Uri-id of the reported post ' ,
2022-11-29 14:50:12 -05:00
` status ` tinyint unsigned COMMENT ' Status of the reported post ' ,
2022-11-12 16:50:28 -05:00
PRIMARY KEY ( ` rid ` , ` uri - id ` ) ,
INDEX ` uri - id ` ( ` uri - id ` ) ,
FOREIGN KEY ( ` rid ` ) REFERENCES ` report ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2022-12-10 09:08:12 -05:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Individual posts attached to a moderation report ' ;
--
-- TABLE report-rule
--
CREATE TABLE IF NOT EXISTS ` report - rule ` (
` rid ` int unsigned NOT NULL COMMENT ' Report id ' ,
` line - id ` int unsigned NOT NULL COMMENT ' Terms of service rule line number, may become invalid after a TOS change. ' ,
` text ` text NOT NULL COMMENT ' Terms of service rule text recorded at the time of the report ' ,
PRIMARY KEY ( ` rid ` , ` line - id ` ) ,
FOREIGN KEY ( ` rid ` ) REFERENCES ` report ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Terms of service rule lines relevant to a moderation report ' ;
2022-11-12 16:50:28 -05:00
2018-02-20 07:59:37 -05:00
--
-- TABLE search
--
CREATE TABLE IF NOT EXISTS ` search ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
` term ` varchar ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
PRIMARY KEY ( ` id ` ) ,
2021-02-21 08:14:17 -05:00
INDEX ` uid_term ` ( ` uid ` , ` term ` ( 64 ) ) ,
INDEX ` term ` ( ` term ` ( 64 ) ) ,
2020-08-24 16:09:03 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE session
--
CREATE TABLE IF NOT EXISTS ` session ` (
2018-05-29 10:11:25 -04:00
` id ` bigint unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` sid ` varbinary ( 255 ) NOT NULL DEFAULT ' ' COMMENT ' ' ,
` data ` text COMMENT ' ' ,
` expire ` int unsigned NOT NULL DEFAULT 0 COMMENT ' ' ,
PRIMARY KEY ( ` id ` ) ,
INDEX ` sid ` ( ` sid ` ( 64 ) ) ,
INDEX ` expire ` ( ` expire ` )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' web session storage ' ;
2018-02-20 07:59:37 -05:00
2020-04-23 02:19:44 -04:00
--
2020-05-15 08:17:13 -04:00
-- TABLE storage
2020-04-23 02:19:44 -04:00
--
2020-05-15 08:17:13 -04:00
CREATE TABLE IF NOT EXISTS ` storage ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' Auto incremented image data id ' ,
` data ` longblob NOT NULL COMMENT ' file data ' ,
PRIMARY KEY ( ` id ` )
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Data stored by Database storage backend ' ;
2020-04-23 02:19:44 -04:00
2021-08-14 20:30:41 -04:00
--
-- TABLE subscription
--
CREATE TABLE IF NOT EXISTS ` subscription ` (
` id ` int unsigned NOT NULL auto_increment COMMENT ' Auto incremented image data id ' ,
` application - id ` int unsigned NOT NULL COMMENT ' ' ,
` uid ` mediumint unsigned NOT NULL COMMENT ' Owner User id ' ,
` endpoint ` varchar ( 511 ) COMMENT ' Endpoint URL ' ,
` pubkey ` varchar ( 127 ) COMMENT ' User agent public key ' ,
` secret ` varchar ( 32 ) COMMENT ' Auth secret ' ,
` follow ` boolean COMMENT ' ' ,
` favourite ` boolean COMMENT ' ' ,
` reblog ` boolean COMMENT ' ' ,
` mention ` boolean COMMENT ' ' ,
` poll ` boolean COMMENT ' ' ,
` follow_request ` boolean COMMENT ' ' ,
` status ` boolean COMMENT ' ' ,
PRIMARY KEY ( ` id ` ) ,
UNIQUE INDEX ` application - id_uid ` ( ` application - id ` , ` uid ` ) ,
INDEX ` uid_application - id ` ( ` uid ` , ` application - id ` ) ,
FOREIGN KEY ( ` application - id ` ) REFERENCES ` application ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Push Subscription for the API ' ;
2018-02-20 07:59:37 -05:00
--
-- TABLE userd
--
CREATE TABLE IF NOT EXISTS ` userd ` (
2018-05-29 10:11:25 -04:00
` id ` int unsigned NOT NULL auto_increment COMMENT ' sequential ID ' ,
2018-02-20 07:59:37 -05:00
` username ` varchar ( 255 ) NOT NULL COMMENT ' ' ,
PRIMARY KEY ( ` id ` ) ,
INDEX ` username ` ( ` username ` ( 32 ) )
2018-06-02 01:03:23 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Deleted usernames ' ;
2018-02-20 07:59:37 -05:00
2018-08-25 09:48:00 -04:00
--
-- TABLE user-contact
--
CREATE TABLE IF NOT EXISTS ` user - contact ` (
` cid ` int unsigned NOT NULL DEFAULT 0 COMMENT ' Contact id of the linked public contact ' ,
` uid ` mediumint unsigned NOT NULL DEFAULT 0 COMMENT ' User id ' ,
2021-09-10 09:05:16 -04:00
` uri - id ` int unsigned COMMENT ' Id of the item-uri table entry that contains the contact url ' ,
2018-08-25 09:48:00 -04:00
` blocked ` boolean COMMENT ' Contact is completely blocked for this user ' ,
` ignored ` boolean COMMENT ' Posts from this contact are ignored ' ,
` collapsed ` boolean COMMENT ' Posts from this contact are collapsed ' ,
2021-11-10 07:05:07 -05:00
` hidden ` boolean COMMENT ' This contact is hidden from the others ' ,
2022-04-05 15:14:29 -04:00
` is - blocked ` boolean COMMENT ' User is blocked by this contact ' ,
2023-09-16 00:20:38 -04:00
` channel - frequency ` tinyint unsigned COMMENT ' Controls the frequency of the appearance of this contact in channels ' ,
2021-09-12 16:50:03 -04:00
` pending ` boolean COMMENT ' ' ,
2021-09-10 16:53:10 -04:00
` rel ` tinyint unsigned COMMENT ' The kind of the relation between the user and the contact ' ,
` info ` mediumtext COMMENT ' ' ,
` notify_new_posts ` boolean COMMENT ' ' ,
2023-07-26 01:27:55 -04:00
` remote_self ` tinyint unsigned COMMENT ' 0 => No mirroring, 1-2 => Mirror as own post, 3 => Mirror as reshare ' ,
2023-07-26 01:15:24 -04:00
` fetch_further_information ` tinyint unsigned COMMENT ' 0 => None, 1 => Fetch information, 3 => Fetch keywords, 2 => Fetch both ' ,
2021-09-10 16:53:10 -04:00
` ffi_keyword_denylist ` text COMMENT ' ' ,
2021-09-12 16:50:03 -04:00
` subhub ` boolean COMMENT ' ' ,
2022-09-04 03:54:01 -04:00
` hub - verify ` varbinary ( 383 ) COMMENT ' ' ,
2021-09-12 16:50:03 -04:00
` protocol ` char ( 4 ) COMMENT ' Protocol of the contact ' ,
2021-09-13 10:20:20 -04:00
` rating ` tinyint COMMENT ' Automatically detected feed poll frequency ' ,
` priority ` tinyint unsigned COMMENT ' Feed poll priority ' ,
2020-08-24 16:09:03 -04:00
PRIMARY KEY ( ` uid ` , ` cid ` ) ,
INDEX ` cid ` ( ` cid ` ) ,
2021-09-10 09:05:16 -04:00
UNIQUE INDEX ` uri - id_uid ` ( ` uri - id ` , ` uid ` ) ,
2020-08-24 16:09:03 -04:00
FOREIGN KEY ( ` cid ` ) REFERENCES ` contact ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
2021-09-10 09:05:16 -04:00
FOREIGN KEY ( ` uid ` ) REFERENCES ` user ` ( ` uid ` ) ON UPDATE RESTRICT ON DELETE CASCADE ,
FOREIGN KEY ( ` uri - id ` ) REFERENCES ` item - uri ` ( ` id ` ) ON UPDATE RESTRICT ON DELETE CASCADE
2018-08-25 09:48:00 -04:00
) DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' User specific public contact data ' ;
2022-08-06 13:06:55 -04:00
--
-- TABLE arrived-activity
--
CREATE TABLE IF NOT EXISTS ` arrived - activity ` (
2022-09-04 03:54:01 -04:00
` object - id ` varbinary ( 383 ) NOT NULL COMMENT ' object id of the incoming activity ' ,
2022-08-06 13:06:55 -04:00
` received ` datetime COMMENT ' Receiving date ' ,
PRIMARY KEY ( ` object - id ` )
) ENGINE = MEMORY DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Id of arrived activities ' ;
--
2022-08-10 05:28:18 -04:00
-- TABLE fetched-activity
2022-08-06 13:06:55 -04:00
--
2022-08-10 05:28:18 -04:00
CREATE TABLE IF NOT EXISTS ` fetched - activity ` (
2022-09-04 03:54:01 -04:00
` object - id ` varbinary ( 383 ) NOT NULL COMMENT ' object id of fetched activity ' ,
2022-08-06 13:06:55 -04:00
` received ` datetime COMMENT ' Receiving date ' ,
PRIMARY KEY ( ` object - id ` )
2022-08-10 05:28:18 -04:00
) ENGINE = MEMORY DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Id of fetched activities ' ;
2022-08-06 13:06:55 -04:00
2018-06-02 01:03:23 -04:00
--
-- TABLE worker-ipc
--
CREATE TABLE IF NOT EXISTS ` worker - ipc ` (
` key ` int NOT NULL COMMENT ' ' ,
` jobs ` boolean COMMENT ' Flag for outstanding jobs ' ,
PRIMARY KEY ( ` key ` )
) ENGINE = MEMORY DEFAULT COLLATE utf8mb4_general_ci COMMENT = ' Inter process communication between the frontend and the worker ' ;
2018-05-26 14:07:27 -04:00
2021-05-13 10:58:55 -04:00
--
-- VIEW application-view
--
DROP VIEW IF EXISTS ` application - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` application - view ` AS SELECT
2021-05-13 10:58:55 -04:00
` application ` . ` id ` AS ` id ` ,
` application - token ` . ` uid ` AS ` uid ` ,
` application ` . ` name ` AS ` name ` ,
` application ` . ` redirect_uri ` AS ` redirect_uri ` ,
` application ` . ` website ` AS ` website ` ,
` application ` . ` client_id ` AS ` client_id ` ,
` application ` . ` client_secret ` AS ` client_secret ` ,
` application - token ` . ` code ` AS ` code ` ,
` application - token ` . ` access_token ` AS ` access_token ` ,
` application - token ` . ` created_at ` AS ` created_at ` ,
` application - token ` . ` scopes ` AS ` scopes ` ,
` application - token ` . ` read ` AS ` read ` ,
` application - token ` . ` write ` AS ` write ` ,
2021-05-16 03:37:11 -04:00
` application - token ` . ` follow ` AS ` follow ` ,
` application - token ` . ` push ` AS ` push `
2021-05-13 11:26:17 -04:00
FROM ` application - token `
INNER JOIN ` application ` ON ` application - token ` . ` application - id ` = ` application ` . ` id ` ;
2021-05-13 10:58:55 -04:00
2023-07-22 06:49:42 -04:00
--
-- VIEW circle-member-view
--
DROP VIEW IF EXISTS ` circle - member - view ` ;
CREATE VIEW ` circle - member - view ` AS SELECT
` group_member ` . ` id ` AS ` id ` ,
` group ` . ` uid ` AS ` uid ` ,
` group_member ` . ` contact - id ` AS ` contact - id ` ,
` contact ` . ` uri - id ` AS ` contact - uri - id ` ,
` contact ` . ` url ` AS ` contact - link ` ,
` contact ` . ` addr ` AS ` contact - addr ` ,
` contact ` . ` name ` AS ` contact - name ` ,
` contact ` . ` nick ` AS ` contact - nick ` ,
` contact ` . ` thumb ` AS ` contact - avatar ` ,
` contact ` . ` network ` AS ` contact - network ` ,
` contact ` . ` blocked ` AS ` contact - blocked ` ,
` contact ` . ` hidden ` AS ` contact - hidden ` ,
` contact ` . ` readonly ` AS ` contact - readonly ` ,
` contact ` . ` archive ` AS ` contact - archive ` ,
` contact ` . ` pending ` AS ` contact - pending ` ,
` contact ` . ` self ` AS ` contact - self ` ,
` contact ` . ` rel ` AS ` contact - rel ` ,
` contact ` . ` contact - type ` AS ` contact - contact - type ` ,
` group_member ` . ` gid ` AS ` circle - id ` ,
` group ` . ` visible ` AS ` circle - visible ` ,
` group ` . ` deleted ` AS ` circle - deleted ` ,
` group ` . ` name ` AS ` circle - name `
FROM ` group_member `
INNER JOIN ` contact ` ON ` group_member ` . ` contact - id ` = ` contact ` . ` id `
INNER JOIN ` group ` ON ` group_member ` . ` gid ` = ` group ` . ` id ` ;
2021-01-14 17:51:44 -05:00
--
2021-02-22 14:47:08 -05:00
-- VIEW post-user-view
2021-01-14 17:51:44 -05:00
--
2021-02-22 14:47:08 -05:00
DROP VIEW IF EXISTS ` post - user - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` post - user - view ` AS SELECT
2021-02-14 17:05:00 -05:00
` post - user ` . ` id ` AS ` id ` ,
2021-02-13 14:56:03 -05:00
` post - user ` . ` id ` AS ` post - user - id ` ,
` post - user ` . ` uid ` AS ` uid ` ,
2023-05-29 02:48:15 -04:00
` post - thread - user ` . ` post - user - id ` AS ` parent ` ,
2021-02-13 14:56:03 -05:00
` item - uri ` . ` uri ` AS ` uri ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` uri - id ` AS ` uri - id ` ,
2021-02-13 14:56:03 -05:00
` parent - item - uri ` . ` uri ` AS ` parent - uri ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` parent - uri - id ` AS ` parent - uri - id ` ,
2021-02-13 14:56:03 -05:00
` thr - parent - item - uri ` . ` uri ` AS ` thr - parent ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` thr - parent - id ` AS ` thr - parent - id ` ,
2022-07-23 02:52:43 -04:00
` conversation - item - uri ` . ` uri ` AS ` conversation ` ,
` post - thread - user ` . ` conversation - id ` AS ` conversation - id ` ,
2022-10-10 18:39:30 -04:00
` quote - item - uri ` . ` uri ` AS ` quote - uri ` ,
` post - content ` . ` quote - uri - id ` AS ` quote - uri - id ` ,
2021-02-13 14:56:03 -05:00
` item - uri ` . ` guid ` AS ` guid ` ,
` post - user ` . ` wall ` AS ` wall ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` gravity ` AS ` gravity ` ,
` external - item - uri ` . ` uri ` AS ` extid ` ,
` post - user ` . ` external - id ` AS ` external - id ` ,
` post - user ` . ` created ` AS ` created ` ,
` post - user ` . ` edited ` AS ` edited ` ,
` post - thread - user ` . ` commented ` AS ` commented ` ,
` post - user ` . ` received ` AS ` received ` ,
` post - thread - user ` . ` changed ` AS ` changed ` ,
` post - user ` . ` post - type ` AS ` post - type ` ,
2021-04-07 02:02:06 -04:00
` post - user ` . ` post - reason ` AS ` post - reason ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` private ` AS ` private ` ,
2021-02-13 14:56:03 -05:00
` post - thread - user ` . ` pubmail ` AS ` pubmail ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` visible ` AS ` visible ` ,
2021-02-13 14:56:03 -05:00
` post - thread - user ` . ` starred ` AS ` starred ` ,
` post - user ` . ` unseen ` AS ` unseen ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` deleted ` AS ` deleted ` ,
2021-02-13 14:56:03 -05:00
` post - user ` . ` origin ` AS ` origin ` ,
2021-02-17 13:59:19 -05:00
` post - thread - user ` . ` origin ` AS ` parent - origin ` ,
2021-02-13 14:56:03 -05:00
` post - thread - user ` . ` mention ` AS ` mention ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` global ` AS ` global ` ,
2022-04-06 09:34:11 -04:00
EXISTS ( SELECT ` type ` FROM ` post - collection ` WHERE ` type ` = 0 AND ` uri - id ` = ` post - user ` . ` uri - id ` ) AS ` featured ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` network ` AS ` network ` ,
2022-07-31 11:54:35 -04:00
` post - user ` . ` protocol ` AS ` protocol ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` vid ` AS ` vid ` ,
2021-02-13 14:56:03 -05:00
` post - user ` . ` psid ` AS ` psid ` ,
2021-02-14 04:43:27 -05:00
IF ( ` post - user ` . ` vid ` IS NULL , ' ' , ` verb ` . ` name ` ) AS ` verb ` ,
2021-02-13 14:56:03 -05:00
` post - content ` . ` title ` AS ` title ` ,
` post - content ` . ` content - warning ` AS ` content - warning ` ,
` post - content ` . ` raw - body ` AS ` raw - body ` ,
2022-01-29 02:45:12 -05:00
IFNULL ( ` post - content ` . ` body ` , ' ' ) AS ` body ` ,
2021-02-13 14:56:03 -05:00
` post - content ` . ` rendered - hash ` AS ` rendered - hash ` ,
` post - content ` . ` rendered - html ` AS ` rendered - html ` ,
` post - content ` . ` language ` AS ` language ` ,
` post - content ` . ` plink ` AS ` plink ` ,
` post - content ` . ` location ` AS ` location ` ,
` post - content ` . ` coord ` AS ` coord ` ,
` post - content ` . ` app ` AS ` app ` ,
` post - content ` . ` object - type ` AS ` object - type ` ,
` post - content ` . ` object ` AS ` object ` ,
` post - content ` . ` target - type ` AS ` target - type ` ,
` post - content ` . ` target ` AS ` target ` ,
` post - content ` . ` resource - id ` AS ` resource - id ` ,
` post - user ` . ` contact - id ` AS ` contact - id ` ,
2022-06-10 14:49:03 -04:00
` contact ` . ` uri - id ` AS ` contact - uri - id ` ,
2021-02-13 14:56:03 -05:00
` contact ` . ` url ` AS ` contact - link ` ,
` contact ` . ` addr ` AS ` contact - addr ` ,
` contact ` . ` name ` AS ` contact - name ` ,
` contact ` . ` nick ` AS ` contact - nick ` ,
` contact ` . ` thumb ` AS ` contact - avatar ` ,
` contact ` . ` network ` AS ` contact - network ` ,
` contact ` . ` blocked ` AS ` contact - blocked ` ,
` contact ` . ` hidden ` AS ` contact - hidden ` ,
` contact ` . ` readonly ` AS ` contact - readonly ` ,
` contact ` . ` archive ` AS ` contact - archive ` ,
` contact ` . ` pending ` AS ` contact - pending ` ,
` contact ` . ` rel ` AS ` contact - rel ` ,
` contact ` . ` uid ` AS ` contact - uid ` ,
` contact ` . ` contact - type ` AS ` contact - contact - type ` ,
2021-02-14 04:43:27 -05:00
IF ( ` post - user ` . ` network ` IN ( ' apub ' , ' dfrn ' , ' dspr ' , ' stat ' ) , true , ` contact ` . ` writable ` ) AS ` writable ` ,
2021-02-13 14:56:03 -05:00
` contact ` . ` self ` AS ` self ` ,
` contact ` . ` id ` AS ` cid ` ,
` contact ` . ` alias ` AS ` alias ` ,
` contact ` . ` photo ` AS ` photo ` ,
` contact ` . ` name - date ` AS ` name - date ` ,
` contact ` . ` uri - date ` AS ` uri - date ` ,
` contact ` . ` avatar - date ` AS ` avatar - date ` ,
` contact ` . ` thumb ` AS ` thumb ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` author - id ` AS ` author - id ` ,
2022-06-10 14:49:03 -04:00
` author ` . ` uri - id ` AS ` author - uri - id ` ,
2021-02-13 14:56:03 -05:00
` author ` . ` url ` AS ` author - link ` ,
` author ` . ` addr ` AS ` author - addr ` ,
IF ( ` contact ` . ` url ` = ` author ` . ` url ` AND ` contact ` . ` name ` ! = ' ' , ` contact ` . ` name ` , ` author ` . ` name ` ) AS ` author - name ` ,
` author ` . ` nick ` AS ` author - nick ` ,
2023-06-18 13:34:19 -04:00
` author ` . ` alias ` AS ` author - alias ` ,
2021-02-13 14:56:03 -05:00
IF ( ` contact ` . ` url ` = ` author ` . ` url ` AND ` contact ` . ` thumb ` ! = ' ' , ` contact ` . ` thumb ` , ` author ` . ` thumb ` ) AS ` author - avatar ` ,
` author ` . ` network ` AS ` author - network ` ,
` author ` . ` blocked ` AS ` author - blocked ` ,
` author ` . ` hidden ` AS ` author - hidden ` ,
2022-04-29 03:30:13 -04:00
` author ` . ` updated ` AS ` author - updated ` ,
2022-04-29 03:47:24 -04:00
` author ` . ` gsid ` AS ` author - gsid ` ,
2023-08-24 07:48:35 -04:00
` author ` . ` baseurl ` AS ` author - baseurl ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` owner - id ` AS ` owner - id ` ,
2022-06-10 14:49:03 -04:00
` owner ` . ` uri - id ` AS ` owner - uri - id ` ,
2021-02-13 14:56:03 -05:00
` owner ` . ` url ` AS ` owner - link ` ,
` owner ` . ` addr ` AS ` owner - addr ` ,
IF ( ` contact ` . ` url ` = ` owner ` . ` url ` AND ` contact ` . ` name ` ! = ' ' , ` contact ` . ` name ` , ` owner ` . ` name ` ) AS ` owner - name ` ,
` owner ` . ` nick ` AS ` owner - nick ` ,
2023-06-18 13:34:19 -04:00
` owner ` . ` alias ` AS ` owner - alias ` ,
2021-02-13 14:56:03 -05:00
IF ( ` contact ` . ` url ` = ` owner ` . ` url ` AND ` contact ` . ` thumb ` ! = ' ' , ` contact ` . ` thumb ` , ` owner ` . ` thumb ` ) AS ` owner - avatar ` ,
` owner ` . ` network ` AS ` owner - network ` ,
` owner ` . ` blocked ` AS ` owner - blocked ` ,
` owner ` . ` hidden ` AS ` owner - hidden ` ,
2022-04-29 03:30:13 -04:00
` owner ` . ` updated ` AS ` owner - updated ` ,
2023-07-17 21:29:45 -04:00
` owner ` . ` gsid ` AS ` owner - gsid ` ,
2021-02-20 15:51:08 -05:00
` owner ` . ` contact - type ` AS ` owner - contact - type ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` causer - id ` AS ` causer - id ` ,
2022-06-10 14:49:03 -04:00
` causer ` . ` uri - id ` AS ` causer - uri - id ` ,
2021-02-13 14:56:03 -05:00
` causer ` . ` url ` AS ` causer - link ` ,
` causer ` . ` addr ` AS ` causer - addr ` ,
` causer ` . ` name ` AS ` causer - name ` ,
` causer ` . ` nick ` AS ` causer - nick ` ,
2023-06-23 17:27:34 -04:00
` causer ` . ` alias ` AS ` causer - alias ` ,
2021-02-13 14:56:03 -05:00
` causer ` . ` thumb ` AS ` causer - avatar ` ,
` causer ` . ` network ` AS ` causer - network ` ,
` causer ` . ` blocked ` AS ` causer - blocked ` ,
` causer ` . ` hidden ` AS ` causer - hidden ` ,
2023-07-17 21:29:45 -04:00
` causer ` . ` gsid ` AS ` causer - gsid ` ,
2021-02-13 14:56:03 -05:00
` causer ` . ` contact - type ` AS ` causer - contact - type ` ,
` post - delivery - data ` . ` postopts ` AS ` postopts ` ,
` post - delivery - data ` . ` inform ` AS ` inform ` ,
` post - delivery - data ` . ` queue_count ` AS ` delivery_queue_count ` ,
` post - delivery - data ` . ` queue_done ` AS ` delivery_queue_done ` ,
` post - delivery - data ` . ` queue_failed ` AS ` delivery_queue_failed ` ,
IF ( ` post - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` allow_cid ` ) AS ` allow_cid ` ,
IF ( ` post - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` allow_gid ` ) AS ` allow_gid ` ,
IF ( ` post - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` deny_cid ` ) AS ` deny_cid ` ,
IF ( ` post - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` deny_gid ` ) AS ` deny_gid ` ,
` post - user ` . ` event - id ` AS ` event - id ` ,
` event ` . ` created ` AS ` event - created ` ,
` event ` . ` edited ` AS ` event - edited ` ,
` event ` . ` start ` AS ` event - start ` ,
` event ` . ` finish ` AS ` event - finish ` ,
` event ` . ` summary ` AS ` event - summary ` ,
` event ` . ` desc ` AS ` event - desc ` ,
` event ` . ` location ` AS ` event - location ` ,
` event ` . ` type ` AS ` event - type ` ,
` event ` . ` nofinish ` AS ` event - nofinish ` ,
` event ` . ` ignore ` AS ` event - ignore ` ,
2022-04-20 02:28:02 -04:00
` post - question ` . ` id ` AS ` question - id ` ,
` post - question ` . ` multiple ` AS ` question - multiple ` ,
` post - question ` . ` voters ` AS ` question - voters ` ,
` post - question ` . ` end - time ` AS ` question - end - time ` ,
2022-05-16 13:06:58 -04:00
EXISTS ( SELECT ` uri - id ` FROM ` post - category ` WHERE ` post - category ` . ` uri - id ` = ` post - user ` . ` uri - id ` AND ` post - category ` . ` uid ` = ` post - user ` . ` uid ` ) AS ` has - categories ` ,
EXISTS ( SELECT ` id ` FROM ` post - media ` WHERE ` post - media ` . ` uri - id ` = ` post - user ` . ` uri - id ` ) AS ` has - media ` ,
2021-02-13 14:56:03 -05:00
` diaspora - interaction ` . ` interaction ` AS ` signed_text ` ,
` parent - item - uri ` . ` guid ` AS ` parent - guid ` ,
2023-05-29 02:48:15 -04:00
` post - thread - user ` . ` network ` AS ` parent - network ` ,
` post - thread - user ` . ` author - id ` AS ` parent - author - id ` ,
2021-02-14 04:43:27 -05:00
` parent - post - author ` . ` url ` AS ` parent - author - link ` ,
` parent - post - author ` . ` name ` AS ` parent - author - name ` ,
2021-11-22 02:28:02 -05:00
` parent - post - author ` . ` nick ` AS ` parent - author - nick ` ,
2022-11-08 16:48:42 -05:00
` parent - post - author ` . ` network ` AS ` parent - author - network `
2021-02-14 04:43:27 -05:00
FROM ` post - user `
2023-05-29 02:48:15 -04:00
INNER JOIN ` post - thread - user ` ON ` post - thread - user ` . ` uri - id ` = ` post - user ` . ` parent - uri - id ` AND ` post - thread - user ` . ` uid ` = ` post - user ` . ` uid `
2021-02-21 00:28:27 -05:00
STRAIGHT_JOIN ` contact ` ON ` contact ` . ` id ` = ` post - user ` . ` contact - id `
STRAIGHT_JOIN ` contact ` AS ` author ` ON ` author ` . ` id ` = ` post - user ` . ` author - id `
STRAIGHT_JOIN ` contact ` AS ` owner ` ON ` owner ` . ` id ` = ` post - user ` . ` owner - id `
2021-02-19 01:30:38 -05:00
LEFT JOIN ` contact ` AS ` causer ` ON ` causer ` . ` id ` = ` post - user ` . ` causer - id `
LEFT JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` post - user ` . ` uri - id `
LEFT JOIN ` item - uri ` AS ` thr - parent - item - uri ` ON ` thr - parent - item - uri ` . ` id ` = ` post - user ` . ` thr - parent - id `
LEFT JOIN ` item - uri ` AS ` parent - item - uri ` ON ` parent - item - uri ` . ` id ` = ` post - user ` . ` parent - uri - id `
2022-07-23 02:52:43 -04:00
LEFT JOIN ` item - uri ` AS ` conversation - item - uri ` ON ` conversation - item - uri ` . ` id ` = ` post - thread - user ` . ` conversation - id `
2021-02-14 04:43:27 -05:00
LEFT JOIN ` item - uri ` AS ` external - item - uri ` ON ` external - item - uri ` . ` id ` = ` post - user ` . ` external - id `
2021-02-19 01:30:38 -05:00
LEFT JOIN ` verb ` ON ` verb ` . ` id ` = ` post - user ` . ` vid `
2021-02-13 14:56:03 -05:00
LEFT JOIN ` event ` ON ` event ` . ` id ` = ` post - user ` . ` event - id `
2021-02-14 04:43:27 -05:00
LEFT JOIN ` diaspora - interaction ` ON ` diaspora - interaction ` . ` uri - id ` = ` post - user ` . ` uri - id `
LEFT JOIN ` post - content ` ON ` post - content ` . ` uri - id ` = ` post - user ` . ` uri - id `
2022-10-10 18:39:30 -04:00
LEFT JOIN ` item - uri ` AS ` quote - item - uri ` ON ` quote - item - uri ` . ` id ` = ` post - content ` . ` quote - uri - id `
2021-02-14 04:43:27 -05:00
LEFT JOIN ` post - delivery - data ` ON ` post - delivery - data ` . ` uri - id ` = ` post - user ` . ` uri - id ` AND ` post - user ` . ` origin `
2022-04-20 02:28:02 -04:00
LEFT JOIN ` post - question ` ON ` post - question ` . ` uri - id ` = ` post - user ` . ` uri - id `
2021-02-13 14:56:03 -05:00
LEFT JOIN ` permissionset ` ON ` permissionset ` . ` id ` = ` post - user ` . ` psid `
2023-05-29 02:48:15 -04:00
LEFT JOIN ` contact ` AS ` parent - post - author ` ON ` parent - post - author ` . ` id ` = ` post - thread - user ` . ` author - id ` ;
2021-02-13 14:56:03 -05:00
2021-01-18 02:10:04 -05:00
--
2021-02-22 14:47:08 -05:00
-- VIEW post-thread-user-view
2021-01-18 02:10:04 -05:00
--
2021-02-22 14:47:08 -05:00
DROP VIEW IF EXISTS ` post - thread - user - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` post - thread - user - view ` AS SELECT
2021-02-14 17:05:00 -05:00
` post - user ` . ` id ` AS ` id ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` id ` AS ` post - user - id ` ,
2021-02-04 00:51:25 -05:00
` post - thread - user ` . ` uid ` AS ` uid ` ,
2023-05-29 02:48:15 -04:00
` post - thread - user ` . ` post - user - id ` AS ` parent ` ,
2021-02-13 14:56:03 -05:00
` item - uri ` . ` uri ` AS ` uri ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` uri - id ` AS ` uri - id ` ,
2021-02-13 14:56:03 -05:00
` parent - item - uri ` . ` uri ` AS ` parent - uri ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` parent - uri - id ` AS ` parent - uri - id ` ,
2021-02-13 14:56:03 -05:00
` thr - parent - item - uri ` . ` uri ` AS ` thr - parent ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` thr - parent - id ` AS ` thr - parent - id ` ,
2022-07-23 02:52:43 -04:00
` conversation - item - uri ` . ` uri ` AS ` conversation ` ,
` post - thread - user ` . ` conversation - id ` AS ` conversation - id ` ,
2022-10-10 18:39:30 -04:00
` quote - item - uri ` . ` uri ` AS ` quote - uri ` ,
` post - content ` . ` quote - uri - id ` AS ` quote - uri - id ` ,
2021-02-13 14:56:03 -05:00
` item - uri ` . ` guid ` AS ` guid ` ,
2021-02-04 00:51:25 -05:00
` post - thread - user ` . ` wall ` AS ` wall ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` gravity ` AS ` gravity ` ,
` external - item - uri ` . ` uri ` AS ` extid ` ,
` post - user ` . ` external - id ` AS ` external - id ` ,
` post - thread - user ` . ` created ` AS ` created ` ,
` post - user ` . ` edited ` AS ` edited ` ,
` post - thread - user ` . ` commented ` AS ` commented ` ,
` post - thread - user ` . ` received ` AS ` received ` ,
` post - thread - user ` . ` changed ` AS ` changed ` ,
` post - user ` . ` post - type ` AS ` post - type ` ,
2021-04-07 02:02:06 -04:00
` post - user ` . ` post - reason ` AS ` post - reason ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` private ` AS ` private ` ,
2021-02-04 00:51:25 -05:00
` post - thread - user ` . ` pubmail ` AS ` pubmail ` ,
` post - thread - user ` . ` ignored ` AS ` ignored ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` visible ` AS ` visible ` ,
2021-02-04 00:51:25 -05:00
` post - thread - user ` . ` starred ` AS ` starred ` ,
2021-02-09 11:35:01 -05:00
` post - thread - user ` . ` unseen ` AS ` unseen ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` deleted ` AS ` deleted ` ,
2021-02-09 11:35:01 -05:00
` post - thread - user ` . ` origin ` AS ` origin ` ,
2021-02-13 14:56:03 -05:00
` post - thread - user ` . ` mention ` AS ` mention ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` global ` AS ` global ` ,
2022-04-06 09:34:11 -04:00
EXISTS ( SELECT ` type ` FROM ` post - collection ` WHERE ` type ` = 0 AND ` uri - id ` = ` post - thread - user ` . ` uri - id ` ) AS ` featured ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` network ` AS ` network ` ,
` post - user ` . ` vid ` AS ` vid ` ,
2021-02-09 11:35:01 -05:00
` post - thread - user ` . ` psid ` AS ` psid ` ,
2021-02-14 04:43:27 -05:00
IF ( ` post - user ` . ` vid ` IS NULL , ' ' , ` verb ` . ` name ` ) AS ` verb ` ,
2021-01-30 17:43:50 -05:00
` post - content ` . ` title ` AS ` title ` ,
` post - content ` . ` content - warning ` AS ` content - warning ` ,
` post - content ` . ` raw - body ` AS ` raw - body ` ,
` post - content ` . ` body ` AS ` body ` ,
` post - content ` . ` rendered - hash ` AS ` rendered - hash ` ,
` post - content ` . ` rendered - html ` AS ` rendered - html ` ,
` post - content ` . ` language ` AS ` language ` ,
` post - content ` . ` plink ` AS ` plink ` ,
` post - content ` . ` location ` AS ` location ` ,
` post - content ` . ` coord ` AS ` coord ` ,
` post - content ` . ` app ` AS ` app ` ,
` post - content ` . ` object - type ` AS ` object - type ` ,
` post - content ` . ` object ` AS ` object ` ,
` post - content ` . ` target - type ` AS ` target - type ` ,
` post - content ` . ` target ` AS ` target ` ,
` post - content ` . ` resource - id ` AS ` resource - id ` ,
2021-02-09 11:35:01 -05:00
` post - thread - user ` . ` contact - id ` AS ` contact - id ` ,
2022-06-10 14:49:03 -04:00
` contact ` . ` uri - id ` AS ` contact - uri - id ` ,
2021-01-18 02:10:04 -05:00
` contact ` . ` url ` AS ` contact - link ` ,
` contact ` . ` addr ` AS ` contact - addr ` ,
` contact ` . ` name ` AS ` contact - name ` ,
` contact ` . ` nick ` AS ` contact - nick ` ,
` contact ` . ` thumb ` AS ` contact - avatar ` ,
` contact ` . ` network ` AS ` contact - network ` ,
` contact ` . ` blocked ` AS ` contact - blocked ` ,
` contact ` . ` hidden ` AS ` contact - hidden ` ,
` contact ` . ` readonly ` AS ` contact - readonly ` ,
` contact ` . ` archive ` AS ` contact - archive ` ,
` contact ` . ` pending ` AS ` contact - pending ` ,
` contact ` . ` rel ` AS ` contact - rel ` ,
` contact ` . ` uid ` AS ` contact - uid ` ,
2023-07-17 21:29:45 -04:00
` contact ` . ` gsid ` AS ` contact - gsid ` ,
2021-01-18 02:10:04 -05:00
` contact ` . ` contact - type ` AS ` contact - contact - type ` ,
2021-02-14 04:43:27 -05:00
IF ( ` post - user ` . ` network ` IN ( ' apub ' , ' dfrn ' , ' dspr ' , ' stat ' ) , true , ` contact ` . ` writable ` ) AS ` writable ` ,
2021-01-18 02:10:04 -05:00
` contact ` . ` self ` AS ` self ` ,
` contact ` . ` id ` AS ` cid ` ,
` contact ` . ` alias ` AS ` alias ` ,
` contact ` . ` photo ` AS ` photo ` ,
` contact ` . ` name - date ` AS ` name - date ` ,
` contact ` . ` uri - date ` AS ` uri - date ` ,
` contact ` . ` avatar - date ` AS ` avatar - date ` ,
` contact ` . ` thumb ` AS ` thumb ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` author - id ` AS ` author - id ` ,
2022-06-10 14:49:03 -04:00
` author ` . ` uri - id ` AS ` author - uri - id ` ,
2021-01-18 02:10:04 -05:00
` author ` . ` url ` AS ` author - link ` ,
` author ` . ` addr ` AS ` author - addr ` ,
2021-01-19 02:23:01 -05:00
IF ( ` contact ` . ` url ` = ` author ` . ` url ` AND ` contact ` . ` name ` ! = ' ' , ` contact ` . ` name ` , ` author ` . ` name ` ) AS ` author - name ` ,
2021-01-18 02:10:04 -05:00
` author ` . ` nick ` AS ` author - nick ` ,
2023-06-18 13:34:19 -04:00
` author ` . ` alias ` AS ` author - alias ` ,
2021-01-19 02:23:01 -05:00
IF ( ` contact ` . ` url ` = ` author ` . ` url ` AND ` contact ` . ` thumb ` ! = ' ' , ` contact ` . ` thumb ` , ` author ` . ` thumb ` ) AS ` author - avatar ` ,
2021-01-18 02:10:04 -05:00
` author ` . ` network ` AS ` author - network ` ,
` author ` . ` blocked ` AS ` author - blocked ` ,
` author ` . ` hidden ` AS ` author - hidden ` ,
2022-04-29 03:30:13 -04:00
` author ` . ` updated ` AS ` author - updated ` ,
2022-04-29 03:47:24 -04:00
` author ` . ` gsid ` AS ` author - gsid ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` owner - id ` AS ` owner - id ` ,
2022-06-10 14:49:03 -04:00
` owner ` . ` uri - id ` AS ` owner - uri - id ` ,
2021-01-18 02:10:04 -05:00
` owner ` . ` url ` AS ` owner - link ` ,
` owner ` . ` addr ` AS ` owner - addr ` ,
2021-01-19 02:23:01 -05:00
IF ( ` contact ` . ` url ` = ` owner ` . ` url ` AND ` contact ` . ` name ` ! = ' ' , ` contact ` . ` name ` , ` owner ` . ` name ` ) AS ` owner - name ` ,
2021-01-18 02:10:04 -05:00
` owner ` . ` nick ` AS ` owner - nick ` ,
2023-06-18 13:34:19 -04:00
` owner ` . ` alias ` AS ` owner - alias ` ,
2021-01-19 02:23:01 -05:00
IF ( ` contact ` . ` url ` = ` owner ` . ` url ` AND ` contact ` . ` thumb ` ! = ' ' , ` contact ` . ` thumb ` , ` owner ` . ` thumb ` ) AS ` owner - avatar ` ,
2021-01-18 02:10:04 -05:00
` owner ` . ` network ` AS ` owner - network ` ,
` owner ` . ` blocked ` AS ` owner - blocked ` ,
` owner ` . ` hidden ` AS ` owner - hidden ` ,
2022-04-29 03:30:13 -04:00
` owner ` . ` updated ` AS ` owner - updated ` ,
2023-07-17 21:29:45 -04:00
` owner ` . ` gsid ` AS ` owner - gsid ` ,
2021-02-20 15:51:08 -05:00
` owner ` . ` contact - type ` AS ` owner - contact - type ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` causer - id ` AS ` causer - id ` ,
2022-06-10 14:49:03 -04:00
` causer ` . ` uri - id ` AS ` causer - uri - id ` ,
2021-01-18 02:10:04 -05:00
` causer ` . ` url ` AS ` causer - link ` ,
` causer ` . ` addr ` AS ` causer - addr ` ,
` causer ` . ` name ` AS ` causer - name ` ,
` causer ` . ` nick ` AS ` causer - nick ` ,
2023-06-23 17:27:34 -04:00
` causer ` . ` alias ` AS ` causer - alias ` ,
2021-01-18 02:10:04 -05:00
` causer ` . ` thumb ` AS ` causer - avatar ` ,
` causer ` . ` network ` AS ` causer - network ` ,
` causer ` . ` blocked ` AS ` causer - blocked ` ,
` causer ` . ` hidden ` AS ` causer - hidden ` ,
2023-07-17 21:29:45 -04:00
` causer ` . ` gsid ` AS ` causer - gsid ` ,
2021-01-18 02:10:04 -05:00
` causer ` . ` contact - type ` AS ` causer - contact - type ` ,
` post - delivery - data ` . ` postopts ` AS ` postopts ` ,
` post - delivery - data ` . ` inform ` AS ` inform ` ,
` post - delivery - data ` . ` queue_count ` AS ` delivery_queue_count ` ,
` post - delivery - data ` . ` queue_done ` AS ` delivery_queue_done ` ,
` post - delivery - data ` . ` queue_failed ` AS ` delivery_queue_failed ` ,
2021-02-09 11:35:01 -05:00
IF ( ` post - thread - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` allow_cid ` ) AS ` allow_cid ` ,
IF ( ` post - thread - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` allow_gid ` ) AS ` allow_gid ` ,
IF ( ` post - thread - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` deny_cid ` ) AS ` deny_cid ` ,
IF ( ` post - thread - user ` . ` psid ` IS NULL , ' ' , ` permissionset ` . ` deny_gid ` ) AS ` deny_gid ` ,
2021-02-13 14:56:03 -05:00
` post - user ` . ` event - id ` AS ` event - id ` ,
2021-01-18 02:10:04 -05:00
` event ` . ` created ` AS ` event - created ` ,
` event ` . ` edited ` AS ` event - edited ` ,
` event ` . ` start ` AS ` event - start ` ,
` event ` . ` finish ` AS ` event - finish ` ,
` event ` . ` summary ` AS ` event - summary ` ,
` event ` . ` desc ` AS ` event - desc ` ,
` event ` . ` location ` AS ` event - location ` ,
` event ` . ` type ` AS ` event - type ` ,
` event ` . ` nofinish ` AS ` event - nofinish ` ,
` event ` . ` ignore ` AS ` event - ignore ` ,
2022-04-20 02:28:02 -04:00
` post - question ` . ` id ` AS ` question - id ` ,
` post - question ` . ` multiple ` AS ` question - multiple ` ,
` post - question ` . ` voters ` AS ` question - voters ` ,
` post - question ` . ` end - time ` AS ` question - end - time ` ,
2022-05-16 13:06:58 -04:00
EXISTS ( SELECT ` uri - id ` FROM ` post - category ` WHERE ` post - category ` . ` uri - id ` = ` post - thread - user ` . ` uri - id ` AND ` post - category ` . ` uid ` = ` post - thread - user ` . ` uid ` ) AS ` has - categories ` ,
EXISTS ( SELECT ` id ` FROM ` post - media ` WHERE ` post - media ` . ` uri - id ` = ` post - thread - user ` . ` uri - id ` ) AS ` has - media ` ,
2021-01-18 02:10:04 -05:00
` diaspora - interaction ` . ` interaction ` AS ` signed_text ` ,
2021-02-13 14:56:03 -05:00
` parent - item - uri ` . ` guid ` AS ` parent - guid ` ,
2023-05-29 02:48:15 -04:00
` post - thread - user ` . ` network ` AS ` parent - network ` ,
` post - thread - user ` . ` author - id ` AS ` parent - author - id ` ,
` author ` . ` url ` AS ` parent - author - link ` ,
` author ` . ` name ` AS ` parent - author - name ` ,
` author ` . ` nick ` AS ` parent - author - nick ` ,
` author ` . ` network ` AS ` parent - author - network `
2021-02-14 04:43:27 -05:00
FROM ` post - thread - user `
INNER JOIN ` post - user ` ON ` post - user ` . ` id ` = ` post - thread - user ` . ` post - user - id `
2021-02-21 00:28:27 -05:00
STRAIGHT_JOIN ` contact ` ON ` contact ` . ` id ` = ` post - thread - user ` . ` contact - id `
STRAIGHT_JOIN ` contact ` AS ` author ` ON ` author ` . ` id ` = ` post - thread - user ` . ` author - id `
STRAIGHT_JOIN ` contact ` AS ` owner ` ON ` owner ` . ` id ` = ` post - thread - user ` . ` owner - id `
2021-02-19 01:30:38 -05:00
LEFT JOIN ` contact ` AS ` causer ` ON ` causer ` . ` id ` = ` post - thread - user ` . ` causer - id `
LEFT JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` post - thread - user ` . ` uri - id `
LEFT JOIN ` item - uri ` AS ` thr - parent - item - uri ` ON ` thr - parent - item - uri ` . ` id ` = ` post - user ` . ` thr - parent - id `
LEFT JOIN ` item - uri ` AS ` parent - item - uri ` ON ` parent - item - uri ` . ` id ` = ` post - user ` . ` parent - uri - id `
2022-07-23 02:52:43 -04:00
LEFT JOIN ` item - uri ` AS ` conversation - item - uri ` ON ` conversation - item - uri ` . ` id ` = ` post - thread - user ` . ` conversation - id `
2021-02-14 04:43:27 -05:00
LEFT JOIN ` item - uri ` AS ` external - item - uri ` ON ` external - item - uri ` . ` id ` = ` post - user ` . ` external - id `
2021-02-19 01:30:38 -05:00
LEFT JOIN ` verb ` ON ` verb ` . ` id ` = ` post - user ` . ` vid `
2021-02-13 14:56:03 -05:00
LEFT JOIN ` event ` ON ` event ` . ` id ` = ` post - user ` . ` event - id `
2021-02-14 04:43:27 -05:00
LEFT JOIN ` diaspora - interaction ` ON ` diaspora - interaction ` . ` uri - id ` = ` post - thread - user ` . ` uri - id `
LEFT JOIN ` post - content ` ON ` post - content ` . ` uri - id ` = ` post - thread - user ` . ` uri - id `
2022-10-10 18:39:30 -04:00
LEFT JOIN ` item - uri ` AS ` quote - item - uri ` ON ` quote - item - uri ` . ` id ` = ` post - content ` . ` quote - uri - id `
2021-02-14 04:43:27 -05:00
LEFT JOIN ` post - delivery - data ` ON ` post - delivery - data ` . ` uri - id ` = ` post - thread - user ` . ` uri - id ` AND ` post - thread - user ` . ` origin `
2022-04-20 02:28:02 -04:00
LEFT JOIN ` post - question ` ON ` post - question ` . ` uri - id ` = ` post - thread - user ` . ` uri - id `
2023-05-29 02:48:15 -04:00
LEFT JOIN ` permissionset ` ON ` permissionset ` . ` id ` = ` post - thread - user ` . ` psid ` ;
2021-01-14 17:51:44 -05:00
2021-03-06 00:47:49 -05:00
--
-- VIEW post-view
--
DROP VIEW IF EXISTS ` post - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` post - view ` AS SELECT
2021-03-06 00:47:49 -05:00
` item - uri ` . ` uri ` AS ` uri ` ,
` post ` . ` uri - id ` AS ` uri - id ` ,
` parent - item - uri ` . ` uri ` AS ` parent - uri ` ,
` post ` . ` parent - uri - id ` AS ` parent - uri - id ` ,
` thr - parent - item - uri ` . ` uri ` AS ` thr - parent ` ,
` post ` . ` thr - parent - id ` AS ` thr - parent - id ` ,
2022-07-23 02:52:43 -04:00
` conversation - item - uri ` . ` uri ` AS ` conversation ` ,
` post - thread ` . ` conversation - id ` AS ` conversation - id ` ,
2022-10-10 18:39:30 -04:00
` quote - item - uri ` . ` uri ` AS ` quote - uri ` ,
` post - content ` . ` quote - uri - id ` AS ` quote - uri - id ` ,
2021-03-06 00:47:49 -05:00
` item - uri ` . ` guid ` AS ` guid ` ,
` post ` . ` gravity ` AS ` gravity ` ,
` external - item - uri ` . ` uri ` AS ` extid ` ,
` post ` . ` external - id ` AS ` external - id ` ,
` post ` . ` created ` AS ` created ` ,
` post ` . ` edited ` AS ` edited ` ,
` post - thread ` . ` commented ` AS ` commented ` ,
` post ` . ` received ` AS ` received ` ,
` post - thread ` . ` changed ` AS ` changed ` ,
` post ` . ` post - type ` AS ` post - type ` ,
` post ` . ` private ` AS ` private ` ,
` post ` . ` visible ` AS ` visible ` ,
` post ` . ` deleted ` AS ` deleted ` ,
` post ` . ` global ` AS ` global ` ,
2022-04-06 09:34:11 -04:00
EXISTS ( SELECT ` type ` FROM ` post - collection ` WHERE ` type ` = 0 AND ` uri - id ` = ` post ` . ` uri - id ` ) AS ` featured ` ,
2021-03-06 00:47:49 -05:00
` post ` . ` network ` AS ` network ` ,
` post ` . ` vid ` AS ` vid ` ,
IF ( ` post ` . ` vid ` IS NULL , ' ' , ` verb ` . ` name ` ) AS ` verb ` ,
` post - content ` . ` title ` AS ` title ` ,
` post - content ` . ` content - warning ` AS ` content - warning ` ,
` post - content ` . ` raw - body ` AS ` raw - body ` ,
` post - content ` . ` body ` AS ` body ` ,
` post - content ` . ` rendered - hash ` AS ` rendered - hash ` ,
` post - content ` . ` rendered - html ` AS ` rendered - html ` ,
` post - content ` . ` language ` AS ` language ` ,
` post - content ` . ` plink ` AS ` plink ` ,
` post - content ` . ` location ` AS ` location ` ,
` post - content ` . ` coord ` AS ` coord ` ,
` post - content ` . ` app ` AS ` app ` ,
` post - content ` . ` object - type ` AS ` object - type ` ,
` post - content ` . ` object ` AS ` object ` ,
` post - content ` . ` target - type ` AS ` target - type ` ,
` post - content ` . ` target ` AS ` target ` ,
` post - content ` . ` resource - id ` AS ` resource - id ` ,
2021-06-12 11:19:56 -04:00
` post ` . ` author - id ` AS ` contact - id ` ,
2022-06-10 14:49:03 -04:00
` author ` . ` uri - id ` AS ` contact - uri - id ` ,
2021-06-12 11:19:56 -04:00
` author ` . ` url ` AS ` contact - link ` ,
` author ` . ` addr ` AS ` contact - addr ` ,
` author ` . ` name ` AS ` contact - name ` ,
` author ` . ` nick ` AS ` contact - nick ` ,
` author ` . ` thumb ` AS ` contact - avatar ` ,
` author ` . ` network ` AS ` contact - network ` ,
` author ` . ` blocked ` AS ` contact - blocked ` ,
` author ` . ` hidden ` AS ` contact - hidden ` ,
` author ` . ` readonly ` AS ` contact - readonly ` ,
` author ` . ` archive ` AS ` contact - archive ` ,
` author ` . ` pending ` AS ` contact - pending ` ,
` author ` . ` rel ` AS ` contact - rel ` ,
` author ` . ` uid ` AS ` contact - uid ` ,
` author ` . ` contact - type ` AS ` contact - contact - type ` ,
IF ( ` post ` . ` network ` IN ( ' apub ' , ' dfrn ' , ' dspr ' , ' stat ' ) , true , ` author ` . ` writable ` ) AS ` writable ` ,
false AS ` self ` ,
` author ` . ` id ` AS ` cid ` ,
` author ` . ` alias ` AS ` alias ` ,
` author ` . ` photo ` AS ` photo ` ,
` author ` . ` name - date ` AS ` name - date ` ,
` author ` . ` uri - date ` AS ` uri - date ` ,
` author ` . ` avatar - date ` AS ` avatar - date ` ,
` author ` . ` thumb ` AS ` thumb ` ,
2021-03-06 00:47:49 -05:00
` post ` . ` author - id ` AS ` author - id ` ,
2022-06-10 14:49:03 -04:00
` author ` . ` uri - id ` AS ` author - uri - id ` ,
2021-03-06 00:47:49 -05:00
` author ` . ` url ` AS ` author - link ` ,
` author ` . ` addr ` AS ` author - addr ` ,
` author ` . ` name ` AS ` author - name ` ,
` author ` . ` nick ` AS ` author - nick ` ,
2023-06-18 13:34:19 -04:00
` author ` . ` alias ` AS ` author - alias ` ,
2021-03-06 00:47:49 -05:00
` author ` . ` thumb ` AS ` author - avatar ` ,
` author ` . ` network ` AS ` author - network ` ,
` author ` . ` blocked ` AS ` author - blocked ` ,
` author ` . ` hidden ` AS ` author - hidden ` ,
2022-04-29 03:30:13 -04:00
` author ` . ` updated ` AS ` author - updated ` ,
2022-04-29 03:47:24 -04:00
` author ` . ` gsid ` AS ` author - gsid ` ,
2021-03-06 00:47:49 -05:00
` post ` . ` owner - id ` AS ` owner - id ` ,
2022-06-10 14:49:03 -04:00
` owner ` . ` uri - id ` AS ` owner - uri - id ` ,
2021-03-06 00:47:49 -05:00
` owner ` . ` url ` AS ` owner - link ` ,
` owner ` . ` addr ` AS ` owner - addr ` ,
` owner ` . ` name ` AS ` owner - name ` ,
` owner ` . ` nick ` AS ` owner - nick ` ,
2023-06-18 13:34:19 -04:00
` owner ` . ` alias ` AS ` owner - alias ` ,
2021-03-06 00:47:49 -05:00
` owner ` . ` thumb ` AS ` owner - avatar ` ,
` owner ` . ` network ` AS ` owner - network ` ,
` owner ` . ` blocked ` AS ` owner - blocked ` ,
` owner ` . ` hidden ` AS ` owner - hidden ` ,
2022-04-29 03:30:13 -04:00
` owner ` . ` updated ` AS ` owner - updated ` ,
2021-03-06 00:47:49 -05:00
` owner ` . ` contact - type ` AS ` owner - contact - type ` ,
2023-07-17 21:29:45 -04:00
` owner ` . ` gsid ` AS ` owner - gsid ` ,
2021-03-06 00:47:49 -05:00
` post ` . ` causer - id ` AS ` causer - id ` ,
2022-06-10 14:49:03 -04:00
` causer ` . ` uri - id ` AS ` causer - uri - id ` ,
2021-03-06 00:47:49 -05:00
` causer ` . ` url ` AS ` causer - link ` ,
` causer ` . ` addr ` AS ` causer - addr ` ,
` causer ` . ` name ` AS ` causer - name ` ,
` causer ` . ` nick ` AS ` causer - nick ` ,
2023-06-23 17:27:34 -04:00
` causer ` . ` alias ` AS ` causer - alias ` ,
2021-03-06 00:47:49 -05:00
` causer ` . ` thumb ` AS ` causer - avatar ` ,
` causer ` . ` network ` AS ` causer - network ` ,
` causer ` . ` blocked ` AS ` causer - blocked ` ,
` causer ` . ` hidden ` AS ` causer - hidden ` ,
` causer ` . ` contact - type ` AS ` causer - contact - type ` ,
2023-07-17 21:29:45 -04:00
` causer ` . ` gsid ` AS ` causer - gsid ` ,
2022-04-20 02:28:02 -04:00
` post - question ` . ` id ` AS ` question - id ` ,
` post - question ` . ` multiple ` AS ` question - multiple ` ,
` post - question ` . ` voters ` AS ` question - voters ` ,
` post - question ` . ` end - time ` AS ` question - end - time ` ,
2022-05-16 13:06:58 -04:00
0 AS ` has - categories ` ,
EXISTS ( SELECT ` id ` FROM ` post - media ` WHERE ` post - media ` . ` uri - id ` = ` post ` . ` uri - id ` ) AS ` has - media ` ,
2021-03-06 00:47:49 -05:00
` diaspora - interaction ` . ` interaction ` AS ` signed_text ` ,
` parent - item - uri ` . ` guid ` AS ` parent - guid ` ,
2023-05-29 02:48:15 -04:00
` post - thread ` . ` network ` AS ` parent - network ` ,
` post - thread ` . ` author - id ` AS ` parent - author - id ` ,
2021-03-06 00:47:49 -05:00
` parent - post - author ` . ` url ` AS ` parent - author - link ` ,
` parent - post - author ` . ` name ` AS ` parent - author - name ` ,
2023-05-29 02:48:15 -04:00
` parent - post - author ` . ` nick ` AS ` parent - author - nick ` ,
2022-11-08 16:48:42 -05:00
` parent - post - author ` . ` network ` AS ` parent - author - network `
2021-03-06 00:47:49 -05:00
FROM ` post `
STRAIGHT_JOIN ` post - thread ` ON ` post - thread ` . ` uri - id ` = ` post ` . ` parent - uri - id `
STRAIGHT_JOIN ` contact ` AS ` author ` ON ` author ` . ` id ` = ` post ` . ` author - id `
STRAIGHT_JOIN ` contact ` AS ` owner ` ON ` owner ` . ` id ` = ` post ` . ` owner - id `
LEFT JOIN ` contact ` AS ` causer ` ON ` causer ` . ` id ` = ` post ` . ` causer - id `
LEFT JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` post ` . ` uri - id `
LEFT JOIN ` item - uri ` AS ` thr - parent - item - uri ` ON ` thr - parent - item - uri ` . ` id ` = ` post ` . ` thr - parent - id `
LEFT JOIN ` item - uri ` AS ` parent - item - uri ` ON ` parent - item - uri ` . ` id ` = ` post ` . ` parent - uri - id `
2022-07-23 02:52:43 -04:00
LEFT JOIN ` item - uri ` AS ` conversation - item - uri ` ON ` conversation - item - uri ` . ` id ` = ` post - thread ` . ` conversation - id `
2021-03-06 00:47:49 -05:00
LEFT JOIN ` item - uri ` AS ` external - item - uri ` ON ` external - item - uri ` . ` id ` = ` post ` . ` external - id `
LEFT JOIN ` verb ` ON ` verb ` . ` id ` = ` post ` . ` vid `
LEFT JOIN ` diaspora - interaction ` ON ` diaspora - interaction ` . ` uri - id ` = ` post ` . ` uri - id `
LEFT JOIN ` post - content ` ON ` post - content ` . ` uri - id ` = ` post ` . ` uri - id `
2022-10-10 18:39:30 -04:00
LEFT JOIN ` item - uri ` AS ` quote - item - uri ` ON ` quote - item - uri ` . ` id ` = ` post - content ` . ` quote - uri - id `
2022-04-20 02:28:02 -04:00
LEFT JOIN ` post - question ` ON ` post - question ` . ` uri - id ` = ` post ` . ` uri - id `
2023-05-29 02:48:15 -04:00
LEFT JOIN ` contact ` AS ` parent - post - author ` ON ` parent - post - author ` . ` id ` = ` post - thread ` . ` author - id ` ;
2021-03-06 00:47:49 -05:00
--
-- VIEW post-thread-view
--
DROP VIEW IF EXISTS ` post - thread - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` post - thread - view ` AS SELECT
2021-03-06 00:47:49 -05:00
` item - uri ` . ` uri ` AS ` uri ` ,
` post - thread ` . ` uri - id ` AS ` uri - id ` ,
` parent - item - uri ` . ` uri ` AS ` parent - uri ` ,
` post ` . ` parent - uri - id ` AS ` parent - uri - id ` ,
` thr - parent - item - uri ` . ` uri ` AS ` thr - parent ` ,
` post ` . ` thr - parent - id ` AS ` thr - parent - id ` ,
2022-07-23 02:52:43 -04:00
` conversation - item - uri ` . ` uri ` AS ` conversation ` ,
` post - thread ` . ` conversation - id ` AS ` conversation - id ` ,
2022-10-10 18:39:30 -04:00
` quote - item - uri ` . ` uri ` AS ` quote - uri ` ,
` post - content ` . ` quote - uri - id ` AS ` quote - uri - id ` ,
2021-03-06 00:47:49 -05:00
` item - uri ` . ` guid ` AS ` guid ` ,
` post ` . ` gravity ` AS ` gravity ` ,
` external - item - uri ` . ` uri ` AS ` extid ` ,
` post ` . ` external - id ` AS ` external - id ` ,
` post - thread ` . ` created ` AS ` created ` ,
` post ` . ` edited ` AS ` edited ` ,
` post - thread ` . ` commented ` AS ` commented ` ,
` post - thread ` . ` received ` AS ` received ` ,
` post - thread ` . ` changed ` AS ` changed ` ,
` post ` . ` post - type ` AS ` post - type ` ,
` post ` . ` private ` AS ` private ` ,
` post ` . ` visible ` AS ` visible ` ,
` post ` . ` deleted ` AS ` deleted ` ,
` post ` . ` global ` AS ` global ` ,
2022-04-06 09:34:11 -04:00
EXISTS ( SELECT ` type ` FROM ` post - collection ` WHERE ` type ` = 0 AND ` uri - id ` = ` post - thread ` . ` uri - id ` ) AS ` featured ` ,
2021-03-06 00:47:49 -05:00
` post - thread ` . ` network ` AS ` network ` ,
` post ` . ` vid ` AS ` vid ` ,
IF ( ` post ` . ` vid ` IS NULL , ' ' , ` verb ` . ` name ` ) AS ` verb ` ,
` post - content ` . ` title ` AS ` title ` ,
` post - content ` . ` content - warning ` AS ` content - warning ` ,
` post - content ` . ` raw - body ` AS ` raw - body ` ,
` post - content ` . ` body ` AS ` body ` ,
` post - content ` . ` rendered - hash ` AS ` rendered - hash ` ,
` post - content ` . ` rendered - html ` AS ` rendered - html ` ,
` post - content ` . ` language ` AS ` language ` ,
` post - content ` . ` plink ` AS ` plink ` ,
` post - content ` . ` location ` AS ` location ` ,
` post - content ` . ` coord ` AS ` coord ` ,
` post - content ` . ` app ` AS ` app ` ,
` post - content ` . ` object - type ` AS ` object - type ` ,
` post - content ` . ` object ` AS ` object ` ,
` post - content ` . ` target - type ` AS ` target - type ` ,
` post - content ` . ` target ` AS ` target ` ,
` post - content ` . ` resource - id ` AS ` resource - id ` ,
2021-06-12 11:19:56 -04:00
` post - thread ` . ` author - id ` AS ` contact - id ` ,
2022-06-10 14:49:03 -04:00
` author ` . ` uri - id ` AS ` contact - uri - id ` ,
2021-06-12 11:19:56 -04:00
` author ` . ` url ` AS ` contact - link ` ,
` author ` . ` addr ` AS ` contact - addr ` ,
` author ` . ` name ` AS ` contact - name ` ,
` author ` . ` nick ` AS ` contact - nick ` ,
` author ` . ` thumb ` AS ` contact - avatar ` ,
` author ` . ` network ` AS ` contact - network ` ,
` author ` . ` blocked ` AS ` contact - blocked ` ,
` author ` . ` hidden ` AS ` contact - hidden ` ,
` author ` . ` readonly ` AS ` contact - readonly ` ,
` author ` . ` archive ` AS ` contact - archive ` ,
` author ` . ` pending ` AS ` contact - pending ` ,
` author ` . ` rel ` AS ` contact - rel ` ,
` author ` . ` uid ` AS ` contact - uid ` ,
` author ` . ` contact - type ` AS ` contact - contact - type ` ,
IF ( ` post ` . ` network ` IN ( ' apub ' , ' dfrn ' , ' dspr ' , ' stat ' ) , true , ` author ` . ` writable ` ) AS ` writable ` ,
false AS ` self ` ,
` author ` . ` id ` AS ` cid ` ,
` author ` . ` alias ` AS ` alias ` ,
` author ` . ` photo ` AS ` photo ` ,
` author ` . ` name - date ` AS ` name - date ` ,
` author ` . ` uri - date ` AS ` uri - date ` ,
` author ` . ` avatar - date ` AS ` avatar - date ` ,
` author ` . ` thumb ` AS ` thumb ` ,
2021-03-06 00:47:49 -05:00
` post - thread ` . ` author - id ` AS ` author - id ` ,
2022-06-10 14:49:03 -04:00
` author ` . ` uri - id ` AS ` author - uri - id ` ,
2021-03-06 00:47:49 -05:00
` author ` . ` url ` AS ` author - link ` ,
` author ` . ` addr ` AS ` author - addr ` ,
` author ` . ` name ` AS ` author - name ` ,
` author ` . ` nick ` AS ` author - nick ` ,
2023-06-18 13:34:19 -04:00
` author ` . ` alias ` AS ` author - alias ` ,
2021-03-06 00:47:49 -05:00
` author ` . ` thumb ` AS ` author - avatar ` ,
` author ` . ` network ` AS ` author - network ` ,
` author ` . ` blocked ` AS ` author - blocked ` ,
` author ` . ` hidden ` AS ` author - hidden ` ,
2022-04-29 03:30:13 -04:00
` author ` . ` updated ` AS ` author - updated ` ,
2022-04-29 03:47:24 -04:00
` author ` . ` gsid ` AS ` author - gsid ` ,
2021-03-06 00:47:49 -05:00
` post - thread ` . ` owner - id ` AS ` owner - id ` ,
2022-06-10 14:49:03 -04:00
` owner ` . ` uri - id ` AS ` owner - uri - id ` ,
2021-03-06 00:47:49 -05:00
` owner ` . ` url ` AS ` owner - link ` ,
` owner ` . ` addr ` AS ` owner - addr ` ,
` owner ` . ` name ` AS ` owner - name ` ,
` owner ` . ` nick ` AS ` owner - nick ` ,
2023-06-18 13:34:19 -04:00
` owner ` . ` alias ` AS ` owner - alias ` ,
2021-03-06 00:47:49 -05:00
` owner ` . ` thumb ` AS ` owner - avatar ` ,
` owner ` . ` network ` AS ` owner - network ` ,
` owner ` . ` blocked ` AS ` owner - blocked ` ,
` owner ` . ` hidden ` AS ` owner - hidden ` ,
2022-04-29 03:30:13 -04:00
` owner ` . ` updated ` AS ` owner - updated ` ,
2023-07-17 21:29:45 -04:00
` owner ` . ` gsid ` AS ` owner - gsid ` ,
2021-03-06 00:47:49 -05:00
` owner ` . ` contact - type ` AS ` owner - contact - type ` ,
` post - thread ` . ` causer - id ` AS ` causer - id ` ,
2022-06-10 14:49:03 -04:00
` causer ` . ` uri - id ` AS ` causer - uri - id ` ,
2021-03-06 00:47:49 -05:00
` causer ` . ` url ` AS ` causer - link ` ,
` causer ` . ` addr ` AS ` causer - addr ` ,
` causer ` . ` name ` AS ` causer - name ` ,
` causer ` . ` nick ` AS ` causer - nick ` ,
2023-06-23 17:27:34 -04:00
` causer ` . ` alias ` AS ` causer - alias ` ,
2021-03-06 00:47:49 -05:00
` causer ` . ` thumb ` AS ` causer - avatar ` ,
` causer ` . ` network ` AS ` causer - network ` ,
` causer ` . ` blocked ` AS ` causer - blocked ` ,
` causer ` . ` hidden ` AS ` causer - hidden ` ,
2023-07-17 21:29:45 -04:00
` causer ` . ` gsid ` AS ` causer - gsid ` ,
2021-03-06 00:47:49 -05:00
` causer ` . ` contact - type ` AS ` causer - contact - type ` ,
2022-04-20 02:28:02 -04:00
` post - question ` . ` id ` AS ` question - id ` ,
` post - question ` . ` multiple ` AS ` question - multiple ` ,
` post - question ` . ` voters ` AS ` question - voters ` ,
` post - question ` . ` end - time ` AS ` question - end - time ` ,
2022-05-16 13:06:58 -04:00
0 AS ` has - categories ` ,
EXISTS ( SELECT ` id ` FROM ` post - media ` WHERE ` post - media ` . ` uri - id ` = ` post - thread ` . ` uri - id ` ) AS ` has - media ` ,
2022-11-28 04:30:41 -05:00
( SELECT COUNT ( * ) FROM ` post ` WHERE ` parent - uri - id ` = ` post - thread ` . ` uri - id ` AND ` gravity ` = 6 ) AS ` total - comments ` ,
2022-11-28 15:19:57 -05:00
( SELECT COUNT ( DISTINCT ( ` author - id ` ) ) FROM ` post ` WHERE ` parent - uri - id ` = ` post - thread ` . ` uri - id ` AND ` gravity ` = 6 ) AS ` total - actors ` ,
2021-03-06 00:47:49 -05:00
` diaspora - interaction ` . ` interaction ` AS ` signed_text ` ,
` parent - item - uri ` . ` guid ` AS ` parent - guid ` ,
2023-05-29 02:48:15 -04:00
` post - thread ` . ` network ` AS ` parent - network ` ,
` post - thread ` . ` author - id ` AS ` parent - author - id ` ,
` author ` . ` url ` AS ` parent - author - link ` ,
` author ` . ` name ` AS ` parent - author - name ` ,
` author ` . ` nick ` AS ` parent - author - nick ` ,
` author ` . ` network ` AS ` parent - author - network `
2021-03-06 00:47:49 -05:00
FROM ` post - thread `
INNER JOIN ` post ` ON ` post ` . ` uri - id ` = ` post - thread ` . ` uri - id `
STRAIGHT_JOIN ` contact ` AS ` author ` ON ` author ` . ` id ` = ` post - thread ` . ` author - id `
STRAIGHT_JOIN ` contact ` AS ` owner ` ON ` owner ` . ` id ` = ` post - thread ` . ` owner - id `
LEFT JOIN ` contact ` AS ` causer ` ON ` causer ` . ` id ` = ` post - thread ` . ` causer - id `
LEFT JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` post - thread ` . ` uri - id `
LEFT JOIN ` item - uri ` AS ` thr - parent - item - uri ` ON ` thr - parent - item - uri ` . ` id ` = ` post ` . ` thr - parent - id `
LEFT JOIN ` item - uri ` AS ` parent - item - uri ` ON ` parent - item - uri ` . ` id ` = ` post ` . ` parent - uri - id `
2022-07-23 02:52:43 -04:00
LEFT JOIN ` item - uri ` AS ` conversation - item - uri ` ON ` conversation - item - uri ` . ` id ` = ` post - thread ` . ` conversation - id `
2021-03-06 00:47:49 -05:00
LEFT JOIN ` item - uri ` AS ` external - item - uri ` ON ` external - item - uri ` . ` id ` = ` post ` . ` external - id `
LEFT JOIN ` verb ` ON ` verb ` . ` id ` = ` post ` . ` vid `
LEFT JOIN ` diaspora - interaction ` ON ` diaspora - interaction ` . ` uri - id ` = ` post - thread ` . ` uri - id `
LEFT JOIN ` post - content ` ON ` post - content ` . ` uri - id ` = ` post - thread ` . ` uri - id `
2022-10-10 18:39:30 -04:00
LEFT JOIN ` item - uri ` AS ` quote - item - uri ` ON ` quote - item - uri ` . ` id ` = ` post - content ` . ` quote - uri - id `
2023-05-29 02:48:15 -04:00
LEFT JOIN ` post - question ` ON ` post - question ` . ` uri - id ` = ` post - thread ` . ` uri - id ` ;
2021-03-06 00:47:49 -05:00
2020-05-04 11:23:45 -04:00
--
-- VIEW category-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` category - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` category - view ` AS SELECT
2020-05-04 11:23:45 -04:00
` post - category ` . ` uri - id ` AS ` uri - id ` ,
` post - category ` . ` uid ` AS ` uid ` ,
` post - category ` . ` type ` AS ` type ` ,
` post - category ` . ` tid ` AS ` tid ` ,
` tag ` . ` name ` AS ` name ` ,
` tag ` . ` url ` AS ` url `
FROM ` post - category `
LEFT JOIN ` tag ` ON ` post - category ` . ` tid ` = ` tag ` . ` id ` ;
2022-04-07 17:52:25 -04:00
--
-- VIEW collection-view
--
DROP VIEW IF EXISTS ` collection - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` collection - view ` AS SELECT
2022-04-07 17:52:25 -04:00
` post - collection ` . ` uri - id ` AS ` uri - id ` ,
` post - collection ` . ` type ` AS ` type ` ,
2022-08-15 09:23:01 -04:00
` post - collection ` . ` author - id ` AS ` cid ` ,
2022-04-07 17:52:25 -04:00
` post ` . ` received ` AS ` received ` ,
2022-04-29 06:13:23 -04:00
` post ` . ` created ` AS ` created ` ,
` post - thread ` . ` commented ` AS ` commented ` ,
2022-06-04 02:11:32 -04:00
` post ` . ` private ` AS ` private ` ,
` post ` . ` visible ` AS ` visible ` ,
` post ` . ` deleted ` AS ` deleted ` ,
2022-04-29 06:13:23 -04:00
` post ` . ` thr - parent - id ` AS ` thr - parent - id ` ,
2022-08-15 09:23:01 -04:00
` post - collection ` . ` author - id ` AS ` author - id ` ,
2022-04-29 06:13:23 -04:00
` post ` . ` gravity ` AS ` gravity `
2022-04-07 17:52:25 -04:00
FROM ` post - collection `
2022-04-29 06:13:23 -04:00
INNER JOIN ` post ` ON ` post - collection ` . ` uri - id ` = ` post ` . ` uri - id `
INNER JOIN ` post - thread ` ON ` post - thread ` . ` uri - id ` = ` post ` . ` parent - uri - id ` ;
2022-04-07 17:52:25 -04:00
2022-11-29 13:45:30 -05:00
--
-- VIEW media-view
--
DROP VIEW IF EXISTS ` media - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` media - view ` AS SELECT
2022-11-29 13:45:30 -05:00
` post - media ` . ` uri - id ` AS ` uri - id ` ,
` post - media ` . ` type ` AS ` type ` ,
` post ` . ` received ` AS ` received ` ,
` post ` . ` created ` AS ` created ` ,
` post ` . ` private ` AS ` private ` ,
` post ` . ` visible ` AS ` visible ` ,
` post ` . ` deleted ` AS ` deleted ` ,
` post ` . ` thr - parent - id ` AS ` thr - parent - id ` ,
` post ` . ` author - id ` AS ` author - id ` ,
` post ` . ` gravity ` AS ` gravity `
FROM ` post - media `
INNER JOIN ` post ` ON ` post - media ` . ` uri - id ` = ` post ` . ` uri - id ` ;
2020-04-23 02:19:44 -04:00
--
-- VIEW tag-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` tag - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` tag - view ` AS SELECT
2020-04-23 02:19:44 -04:00
` post - tag ` . ` uri - id ` AS ` uri - id ` ,
` post - tag ` . ` type ` AS ` type ` ,
` post - tag ` . ` tid ` AS ` tid ` ,
` post - tag ` . ` cid ` AS ` cid ` ,
CASE ` cid ` WHEN 0 THEN ` tag ` . ` name ` ELSE ` contact ` . ` name ` END AS ` name ` ,
2022-04-23 07:39:19 -04:00
CASE ` cid ` WHEN 0 THEN ` tag ` . ` url ` ELSE ` contact ` . ` url ` END AS ` url ` ,
CASE ` cid ` WHEN 0 THEN ` tag ` . ` type ` ELSE 1 END AS ` tag - type `
2020-04-23 02:19:44 -04:00
FROM ` post - tag `
LEFT JOIN ` tag ` ON ` post - tag ` . ` tid ` = ` tag ` . ` id `
LEFT JOIN ` contact ` ON ` post - tag ` . ` cid ` = ` contact ` . ` id ` ;
2020-08-15 07:31:34 -04:00
--
-- VIEW network-item-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` network - item - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` network - item - view ` AS SELECT
2021-02-14 04:43:27 -05:00
` post - user ` . ` uri - id ` AS ` uri - id ` ,
2023-05-29 02:48:15 -04:00
` post - thread - user ` . ` post - user - id ` AS ` parent ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` received ` AS ` received ` ,
` post - thread - user ` . ` commented ` AS ` commented ` ,
` post - user ` . ` created ` AS ` created ` ,
` post - user ` . ` uid ` AS ` uid ` ,
` post - thread - user ` . ` starred ` AS ` starred ` ,
` post - thread - user ` . ` mention ` AS ` mention ` ,
` post - user ` . ` network ` AS ` network ` ,
` post - user ` . ` unseen ` AS ` unseen ` ,
` post - user ` . ` gravity ` AS ` gravity ` ,
` post - user ` . ` contact - id ` AS ` contact - id ` ,
2020-10-05 12:50:38 -04:00
` ownercontact ` . ` contact - type ` AS ` contact - type `
2021-02-14 04:43:27 -05:00
FROM ` post - user `
2023-07-17 21:29:45 -04:00
INNER JOIN ` post - thread - user ` ON ` post - thread - user ` . ` uri - id ` = ` post - user ` . ` parent - uri - id ` AND ` post - thread - user ` . ` uid ` = ` post - user ` . ` uid `
2023-07-10 16:50:16 -04:00
STRAIGHT_JOIN ` contact ` ON ` contact ` . ` id ` = ` post - thread - user ` . ` contact - id `
STRAIGHT_JOIN ` contact ` AS ` authorcontact ` ON ` authorcontact ` . ` id ` = ` post - thread - user ` . ` author - id `
STRAIGHT_JOIN ` contact ` AS ` ownercontact ` ON ` ownercontact ` . ` id ` = ` post - thread - user ` . ` owner - id `
2021-02-14 04:43:27 -05:00
WHERE ` post - user ` . ` visible ` AND NOT ` post - user ` . ` deleted `
2020-08-19 15:10:30 -04:00
AND ( NOT ` contact ` . ` readonly ` AND NOT ` contact ` . ` blocked ` AND NOT ` contact ` . ` pending ` )
2021-01-31 18:37:34 -05:00
AND ( ` post - user ` . ` hidden ` IS NULL OR NOT ` post - user ` . ` hidden ` )
2023-07-10 16:50:16 -04:00
AND NOT ` authorcontact ` . ` blocked ` AND NOT ` ownercontact ` . ` blocked `
2023-08-24 08:57:25 -04:00
AND NOT EXISTS ( SELECT ` cid ` FROM ` user - contact ` WHERE ` uid ` = ` post - thread - user ` . ` uid ` AND ` cid ` IN ( ` authorcontact ` . ` id ` , ` ownercontact ` . ` id ` ) AND ( ` blocked ` OR ` ignored ` ) )
AND NOT EXISTS ( SELECT ` gsid ` FROM ` user - gserver ` WHERE ` uid ` = ` post - thread - user ` . ` uid ` AND ` gsid ` IN ( ` authorcontact ` . ` gsid ` , ` ownercontact ` . ` gsid ` ) AND ` ignored ` ) ;
2020-08-15 07:31:34 -04:00
2020-08-15 08:06:18 -04:00
--
-- VIEW network-thread-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` network - thread - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` network - thread - view ` AS SELECT
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` uri - id ` AS ` uri - id ` ,
2023-05-29 02:48:15 -04:00
` post - thread - user ` . ` post - user - id ` AS ` parent ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` received ` AS ` received ` ,
` post - thread - user ` . ` commented ` AS ` commented ` ,
` post - thread - user ` . ` created ` AS ` created ` ,
2021-02-04 00:51:25 -05:00
` post - thread - user ` . ` uid ` AS ` uid ` ,
` post - thread - user ` . ` starred ` AS ` starred ` ,
` post - thread - user ` . ` mention ` AS ` mention ` ,
2021-02-14 04:43:27 -05:00
` post - thread - user ` . ` network ` AS ` network ` ,
2021-02-09 11:35:01 -05:00
` post - thread - user ` . ` contact - id ` AS ` contact - id ` ,
2020-10-05 12:50:38 -04:00
` ownercontact ` . ` contact - type ` AS ` contact - type `
2021-02-14 04:43:27 -05:00
FROM ` post - thread - user `
INNER JOIN ` post - user ` ON ` post - user ` . ` id ` = ` post - thread - user ` . ` post - user - id `
2021-02-09 11:35:01 -05:00
STRAIGHT_JOIN ` contact ` ON ` contact ` . ` id ` = ` post - thread - user ` . ` contact - id `
2023-07-10 16:50:16 -04:00
STRAIGHT_JOIN ` contact ` AS ` authorcontact ` ON ` authorcontact ` . ` id ` = ` post - thread - user ` . ` author - id `
STRAIGHT_JOIN ` contact ` AS ` ownercontact ` ON ` ownercontact ` . ` id ` = ` post - thread - user ` . ` owner - id `
2021-02-14 04:43:27 -05:00
WHERE ` post - user ` . ` visible ` AND NOT ` post - user ` . ` deleted `
2020-08-19 15:10:30 -04:00
AND ( NOT ` contact ` . ` readonly ` AND NOT ` contact ` . ` blocked ` AND NOT ` contact ` . ` pending ` )
2021-02-09 11:35:01 -05:00
AND ( ` post - thread - user ` . ` hidden ` IS NULL OR NOT ` post - thread - user ` . ` hidden ` )
2023-07-10 16:50:16 -04:00
AND NOT ` authorcontact ` . ` blocked ` AND NOT ` ownercontact ` . ` blocked `
2023-08-24 08:57:25 -04:00
AND NOT EXISTS ( SELECT ` cid ` FROM ` user - contact ` WHERE ` uid ` = ` post - thread - user ` . ` uid ` AND ` cid ` IN ( ` authorcontact ` . ` id ` , ` ownercontact ` . ` id ` ) AND ( ` blocked ` OR ` ignored ` ) )
AND NOT EXISTS ( SELECT ` gsid ` FROM ` user - gserver ` WHERE ` uid ` = ` post - thread - user ` . ` uid ` AND ` gsid ` IN ( ` authorcontact ` . ` gsid ` , ` ownercontact ` . ` gsid ` ) AND ` ignored ` ) ;
2020-08-15 08:06:18 -04:00
2020-04-24 09:43:07 -04:00
--
-- VIEW owner-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` owner - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` owner - view ` AS SELECT
2020-04-24 09:43:07 -04:00
` contact ` . ` id ` AS ` id ` ,
` contact ` . ` uid ` AS ` uid ` ,
` contact ` . ` created ` AS ` created ` ,
` contact ` . ` updated ` AS ` updated ` ,
` contact ` . ` self ` AS ` self ` ,
` contact ` . ` remote_self ` AS ` remote_self ` ,
` contact ` . ` rel ` AS ` rel ` ,
` contact ` . ` network ` AS ` network ` ,
` contact ` . ` protocol ` AS ` protocol ` ,
` contact ` . ` name ` AS ` name ` ,
` contact ` . ` nick ` AS ` nick ` ,
` contact ` . ` location ` AS ` location ` ,
` contact ` . ` about ` AS ` about ` ,
` contact ` . ` keywords ` AS ` keywords ` ,
2020-04-28 15:46:59 -04:00
` contact ` . ` xmpp ` AS ` xmpp ` ,
2021-08-08 21:39:09 -04:00
` contact ` . ` matrix ` AS ` matrix ` ,
2020-04-24 09:43:07 -04:00
` contact ` . ` attag ` AS ` attag ` ,
` contact ` . ` avatar ` AS ` avatar ` ,
` contact ` . ` photo ` AS ` photo ` ,
` contact ` . ` thumb ` AS ` thumb ` ,
` contact ` . ` micro ` AS ` micro ` ,
2021-06-17 07:23:32 -04:00
` contact ` . ` header ` AS ` header ` ,
2020-04-24 09:43:07 -04:00
` contact ` . ` url ` AS ` url ` ,
` contact ` . ` nurl ` AS ` nurl ` ,
2021-07-10 08:58:48 -04:00
` contact ` . ` uri - id ` AS ` uri - id ` ,
2020-04-24 09:43:07 -04:00
` contact ` . ` addr ` AS ` addr ` ,
` contact ` . ` alias ` AS ` alias ` ,
` contact ` . ` pubkey ` AS ` pubkey ` ,
` contact ` . ` prvkey ` AS ` prvkey ` ,
` contact ` . ` batch ` AS ` batch ` ,
` contact ` . ` request ` AS ` request ` ,
` contact ` . ` notify ` AS ` notify ` ,
` contact ` . ` poll ` AS ` poll ` ,
` contact ` . ` confirm ` AS ` confirm ` ,
` contact ` . ` poco ` AS ` poco ` ,
` contact ` . ` subhub ` AS ` subhub ` ,
` contact ` . ` hub - verify ` AS ` hub - verify ` ,
` contact ` . ` last - update ` AS ` last - update ` ,
` contact ` . ` success_update ` AS ` success_update ` ,
` contact ` . ` failure_update ` AS ` failure_update ` ,
` contact ` . ` name - date ` AS ` name - date ` ,
` contact ` . ` uri - date ` AS ` uri - date ` ,
` contact ` . ` avatar - date ` AS ` avatar - date ` ,
` contact ` . ` avatar - date ` AS ` picdate ` ,
` contact ` . ` term - date ` AS ` term - date ` ,
` contact ` . ` last - item ` AS ` last - item ` ,
` contact ` . ` priority ` AS ` priority ` ,
2020-11-08 02:23:28 -05:00
` user ` . ` blocked ` AS ` blocked ` ,
2020-04-24 09:43:07 -04:00
` contact ` . ` block_reason ` AS ` block_reason ` ,
` contact ` . ` readonly ` AS ` readonly ` ,
` contact ` . ` writable ` AS ` writable ` ,
` contact ` . ` forum ` AS ` forum ` ,
` contact ` . ` prv ` AS ` prv ` ,
` contact ` . ` contact - type ` AS ` contact - type ` ,
2020-09-01 23:18:04 -04:00
` contact ` . ` manually - approve ` AS ` manually - approve ` ,
2020-04-24 09:43:07 -04:00
` contact ` . ` hidden ` AS ` hidden ` ,
` contact ` . ` archive ` AS ` archive ` ,
` contact ` . ` pending ` AS ` pending ` ,
` contact ` . ` deleted ` AS ` deleted ` ,
` contact ` . ` unsearchable ` AS ` unsearchable ` ,
` contact ` . ` sensitive ` AS ` sensitive ` ,
` contact ` . ` baseurl ` AS ` baseurl ` ,
` contact ` . ` reason ` AS ` reason ` ,
` contact ` . ` info ` AS ` info ` ,
` contact ` . ` bdyear ` AS ` bdyear ` ,
` contact ` . ` bd ` AS ` bd ` ,
2020-04-28 15:46:59 -04:00
` contact ` . ` notify_new_posts ` AS ` notify_new_posts ` ,
` contact ` . ` fetch_further_information ` AS ` fetch_further_information ` ,
2020-06-06 16:43:23 -04:00
` contact ` . ` ffi_keyword_denylist ` AS ` ffi_keyword_denylist ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` parent - uid ` AS ` parent - uid ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` guid ` AS ` guid ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` nickname ` AS ` nickname ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` email ` AS ` email ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` openid ` AS ` openid ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` timezone ` AS ` timezone ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` language ` AS ` language ` ,
` user ` . ` register_date ` AS ` register_date ` ,
` user ` . ` login_date ` AS ` login_date ` ,
2022-12-04 02:17:26 -05:00
` user ` . ` last - activity ` AS ` last - activity ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` default - location ` AS ` default - location ` ,
` user ` . ` allow_location ` AS ` allow_location ` ,
` user ` . ` theme ` AS ` theme ` ,
` user ` . ` pubkey ` AS ` upubkey ` ,
` user ` . ` prvkey ` AS ` uprvkey ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` sprvkey ` AS ` sprvkey ` ,
` user ` . ` spubkey ` AS ` spubkey ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` verified ` AS ` verified ` ,
` user ` . ` blockwall ` AS ` blockwall ` ,
` user ` . ` hidewall ` AS ` hidewall ` ,
` user ` . ` blocktags ` AS ` blocktags ` ,
` user ` . ` unkmail ` AS ` unkmail ` ,
` user ` . ` cntunkmail ` AS ` cntunkmail ` ,
` user ` . ` notify - flags ` AS ` notify - flags ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` page - flags ` AS ` page - flags ` ,
` user ` . ` account - type ` AS ` account - type ` ,
` user ` . ` prvnets ` AS ` prvnets ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` maxreq ` AS ` maxreq ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` expire ` AS ` expire ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` account_removed ` AS ` account_removed ` ,
2020-04-24 09:43:07 -04:00
` user ` . ` account_expired ` AS ` account_expired ` ,
` user ` . ` account_expires_on ` AS ` account_expires_on ` ,
2020-04-28 15:46:59 -04:00
` user ` . ` expire_notification_sent ` AS ` expire_notification_sent ` ,
` user ` . ` def_gid ` AS ` def_gid ` ,
` user ` . ` allow_cid ` AS ` allow_cid ` ,
` user ` . ` allow_gid ` AS ` allow_gid ` ,
` user ` . ` deny_cid ` AS ` deny_cid ` ,
` user ` . ` deny_gid ` AS ` deny_gid ` ,
` user ` . ` openidserver ` AS ` openidserver ` ,
2020-04-24 09:43:07 -04:00
` profile ` . ` publish ` AS ` publish ` ,
` profile ` . ` net - publish ` AS ` net - publish ` ,
` profile ` . ` hide - friends ` AS ` hide - friends ` ,
` profile ` . ` prv_keywords ` AS ` prv_keywords ` ,
` profile ` . ` pub_keywords ` AS ` pub_keywords ` ,
` profile ` . ` address ` AS ` address ` ,
` profile ` . ` locality ` AS ` locality ` ,
` profile ` . ` region ` AS ` region ` ,
` profile ` . ` postal - code ` AS ` postal - code ` ,
` profile ` . ` country - name ` AS ` country - name ` ,
` profile ` . ` homepage ` AS ` homepage ` ,
2022-11-05 10:37:13 -04:00
` profile ` . ` homepage_verified ` AS ` homepage_verified ` ,
2020-04-24 09:43:07 -04:00
` profile ` . ` dob ` AS ` dob `
FROM ` user `
INNER JOIN ` contact ` ON ` contact ` . ` uid ` = ` user ` . ` uid ` AND ` contact ` . ` self `
INNER JOIN ` profile ` ON ` profile ` . ` uid ` = ` user ` . ` uid ` ;
2021-07-10 17:55:03 -04:00
--
-- VIEW account-view
--
DROP VIEW IF EXISTS ` account - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` account - view ` AS SELECT
2021-07-10 17:55:03 -04:00
` contact ` . ` id ` AS ` id ` ,
` contact ` . ` url ` AS ` url ` ,
` contact ` . ` nurl ` AS ` nurl ` ,
` contact ` . ` uri - id ` AS ` uri - id ` ,
2021-10-04 02:13:52 -04:00
` item - uri ` . ` guid ` AS ` guid ` ,
2021-07-10 17:55:03 -04:00
` contact ` . ` addr ` AS ` addr ` ,
` contact ` . ` alias ` AS ` alias ` ,
` contact ` . ` name ` AS ` name ` ,
` contact ` . ` nick ` AS ` nick ` ,
` contact ` . ` about ` AS ` about ` ,
` contact ` . ` keywords ` AS ` keywords ` ,
` contact ` . ` xmpp ` AS ` xmpp ` ,
2021-08-08 21:39:09 -04:00
` contact ` . ` matrix ` AS ` matrix ` ,
2021-07-10 17:55:03 -04:00
` contact ` . ` avatar ` AS ` avatar ` ,
` contact ` . ` photo ` AS ` photo ` ,
` contact ` . ` thumb ` AS ` thumb ` ,
` contact ` . ` micro ` AS ` micro ` ,
` contact ` . ` header ` AS ` header ` ,
` contact ` . ` created ` AS ` created ` ,
` contact ` . ` updated ` AS ` updated ` ,
` contact ` . ` network ` AS ` network ` ,
` contact ` . ` protocol ` AS ` protocol ` ,
` contact ` . ` location ` AS ` location ` ,
` contact ` . ` attag ` AS ` attag ` ,
` contact ` . ` pubkey ` AS ` pubkey ` ,
` contact ` . ` prvkey ` AS ` prvkey ` ,
` contact ` . ` subscribe ` AS ` subscribe ` ,
` contact ` . ` last - update ` AS ` last - update ` ,
` contact ` . ` success_update ` AS ` success_update ` ,
` contact ` . ` failure_update ` AS ` failure_update ` ,
` contact ` . ` failed ` AS ` failed ` ,
` contact ` . ` last - item ` AS ` last - item ` ,
` contact ` . ` last - discovery ` AS ` last - discovery ` ,
` contact ` . ` contact - type ` AS ` contact - type ` ,
` contact ` . ` manually - approve ` AS ` manually - approve ` ,
` contact ` . ` unsearchable ` AS ` unsearchable ` ,
` contact ` . ` sensitive ` AS ` sensitive ` ,
` contact ` . ` baseurl ` AS ` baseurl ` ,
` contact ` . ` gsid ` AS ` gsid ` ,
` contact ` . ` info ` AS ` info ` ,
` contact ` . ` bdyear ` AS ` bdyear ` ,
` contact ` . ` bd ` AS ` bd ` ,
` contact ` . ` poco ` AS ` poco ` ,
` contact ` . ` name - date ` AS ` name - date ` ,
` contact ` . ` uri - date ` AS ` uri - date ` ,
` contact ` . ` avatar - date ` AS ` avatar - date ` ,
` contact ` . ` term - date ` AS ` term - date ` ,
` contact ` . ` hidden ` AS ` global - ignored ` ,
` contact ` . ` blocked ` AS ` global - blocked ` ,
` contact ` . ` hidden ` AS ` hidden ` ,
` contact ` . ` archive ` AS ` archive ` ,
` contact ` . ` deleted ` AS ` deleted ` ,
` contact ` . ` blocked ` AS ` blocked ` ,
` contact ` . ` notify ` AS ` dfrn - notify ` ,
` contact ` . ` poll ` AS ` dfrn - poll ` ,
2021-09-15 00:36:01 -04:00
` item - uri ` . ` guid ` AS ` diaspora - guid ` ,
` diaspora - contact ` . ` batch ` AS ` diaspora - batch ` ,
` diaspora - contact ` . ` notify ` AS ` diaspora - notify ` ,
` diaspora - contact ` . ` poll ` AS ` diaspora - poll ` ,
` diaspora - contact ` . ` alias ` AS ` diaspora - alias ` ,
2021-07-10 17:55:03 -04:00
` apcontact ` . ` uuid ` AS ` ap - uuid ` ,
` apcontact ` . ` type ` AS ` ap - type ` ,
` apcontact ` . ` following ` AS ` ap - following ` ,
` apcontact ` . ` followers ` AS ` ap - followers ` ,
` apcontact ` . ` inbox ` AS ` ap - inbox ` ,
` apcontact ` . ` outbox ` AS ` ap - outbox ` ,
` apcontact ` . ` sharedinbox ` AS ` ap - sharedinbox ` ,
` apcontact ` . ` generator ` AS ` ap - generator ` ,
` apcontact ` . ` following_count ` AS ` ap - following_count ` ,
` apcontact ` . ` followers_count ` AS ` ap - followers_count ` ,
2022-03-24 07:30:32 -04:00
` apcontact ` . ` statuses_count ` AS ` ap - statuses_count ` ,
` gserver ` . ` site_name ` AS ` site_name ` ,
` gserver ` . ` platform ` AS ` platform ` ,
2023-03-28 01:33:14 -04:00
` gserver ` . ` version ` AS ` version ` ,
` gserver ` . ` blocked ` AS ` server - blocked ` ,
` gserver ` . ` failed ` AS ` server - failed `
2021-07-10 17:55:03 -04:00
FROM ` contact `
2021-10-04 02:13:52 -04:00
LEFT JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` contact ` . ` uri - id `
2021-07-10 17:55:03 -04:00
LEFT JOIN ` apcontact ` ON ` apcontact ` . ` uri - id ` = ` contact ` . ` uri - id `
2021-09-15 00:36:01 -04:00
LEFT JOIN ` diaspora - contact ` ON ` diaspora - contact ` . ` uri - id ` = contact . ` uri - id `
2022-03-24 07:30:32 -04:00
LEFT JOIN ` gserver ` ON ` gserver ` . ` id ` = contact . ` gsid `
2021-07-10 17:55:03 -04:00
WHERE ` contact ` . ` uid ` = 0 ;
--
-- VIEW account-user-view
--
DROP VIEW IF EXISTS ` account - user - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` account - user - view ` AS SELECT
2021-07-10 17:55:03 -04:00
` ucontact ` . ` id ` AS ` id ` ,
2021-07-10 23:06:46 -04:00
` contact ` . ` id ` AS ` pid ` ,
2021-07-10 17:55:03 -04:00
` ucontact ` . ` uid ` AS ` uid ` ,
` contact ` . ` url ` AS ` url ` ,
` contact ` . ` nurl ` AS ` nurl ` ,
` contact ` . ` uri - id ` AS ` uri - id ` ,
2021-10-04 02:13:52 -04:00
` item - uri ` . ` guid ` AS ` guid ` ,
2021-07-10 17:55:03 -04:00
` contact ` . ` addr ` AS ` addr ` ,
` contact ` . ` alias ` AS ` alias ` ,
` contact ` . ` name ` AS ` name ` ,
` contact ` . ` nick ` AS ` nick ` ,
` contact ` . ` about ` AS ` about ` ,
` contact ` . ` keywords ` AS ` keywords ` ,
` contact ` . ` xmpp ` AS ` xmpp ` ,
2021-08-08 21:39:09 -04:00
` contact ` . ` matrix ` AS ` matrix ` ,
2021-07-10 17:55:03 -04:00
` contact ` . ` avatar ` AS ` avatar ` ,
` contact ` . ` photo ` AS ` photo ` ,
` contact ` . ` thumb ` AS ` thumb ` ,
` contact ` . ` micro ` AS ` micro ` ,
` contact ` . ` header ` AS ` header ` ,
` contact ` . ` created ` AS ` created ` ,
` contact ` . ` updated ` AS ` updated ` ,
` ucontact ` . ` self ` AS ` self ` ,
` ucontact ` . ` remote_self ` AS ` remote_self ` ,
` ucontact ` . ` rel ` AS ` rel ` ,
` contact ` . ` network ` AS ` network ` ,
` ucontact ` . ` protocol ` AS ` protocol ` ,
` contact ` . ` location ` AS ` location ` ,
2021-09-13 04:22:11 -04:00
` ucontact ` . ` attag ` AS ` attag ` ,
2021-07-10 17:55:03 -04:00
` contact ` . ` pubkey ` AS ` pubkey ` ,
` contact ` . ` prvkey ` AS ` prvkey ` ,
` contact ` . ` subscribe ` AS ` subscribe ` ,
` contact ` . ` last - update ` AS ` last - update ` ,
` contact ` . ` success_update ` AS ` success_update ` ,
` contact ` . ` failure_update ` AS ` failure_update ` ,
` contact ` . ` failed ` AS ` failed ` ,
` contact ` . ` last - item ` AS ` last - item ` ,
` contact ` . ` last - discovery ` AS ` last - discovery ` ,
` contact ` . ` contact - type ` AS ` contact - type ` ,
` contact ` . ` manually - approve ` AS ` manually - approve ` ,
` contact ` . ` unsearchable ` AS ` unsearchable ` ,
` contact ` . ` sensitive ` AS ` sensitive ` ,
` contact ` . ` baseurl ` AS ` baseurl ` ,
` contact ` . ` gsid ` AS ` gsid ` ,
2021-09-13 04:22:11 -04:00
` ucontact ` . ` info ` AS ` info ` ,
2021-07-10 17:55:03 -04:00
` contact ` . ` bdyear ` AS ` bdyear ` ,
` contact ` . ` bd ` AS ` bd ` ,
` contact ` . ` poco ` AS ` poco ` ,
` contact ` . ` name - date ` AS ` name - date ` ,
` contact ` . ` uri - date ` AS ` uri - date ` ,
` contact ` . ` avatar - date ` AS ` avatar - date ` ,
` contact ` . ` term - date ` AS ` term - date ` ,
` contact ` . ` hidden ` AS ` global - ignored ` ,
` contact ` . ` blocked ` AS ` global - blocked ` ,
` ucontact ` . ` hidden ` AS ` hidden ` ,
` ucontact ` . ` archive ` AS ` archive ` ,
` ucontact ` . ` pending ` AS ` pending ` ,
` ucontact ` . ` deleted ` AS ` deleted ` ,
` ucontact ` . ` notify_new_posts ` AS ` notify_new_posts ` ,
` ucontact ` . ` fetch_further_information ` AS ` fetch_further_information ` ,
` ucontact ` . ` ffi_keyword_denylist ` AS ` ffi_keyword_denylist ` ,
` ucontact ` . ` rating ` AS ` rating ` ,
` ucontact ` . ` readonly ` AS ` readonly ` ,
` ucontact ` . ` blocked ` AS ` blocked ` ,
` ucontact ` . ` block_reason ` AS ` block_reason ` ,
` ucontact ` . ` subhub ` AS ` subhub ` ,
` ucontact ` . ` hub - verify ` AS ` hub - verify ` ,
` ucontact ` . ` reason ` AS ` reason ` ,
` contact ` . ` notify ` AS ` dfrn - notify ` ,
` contact ` . ` poll ` AS ` dfrn - poll ` ,
2021-09-15 00:36:01 -04:00
` item - uri ` . ` guid ` AS ` diaspora - guid ` ,
` diaspora - contact ` . ` batch ` AS ` diaspora - batch ` ,
` diaspora - contact ` . ` notify ` AS ` diaspora - notify ` ,
` diaspora - contact ` . ` poll ` AS ` diaspora - poll ` ,
` diaspora - contact ` . ` alias ` AS ` diaspora - alias ` ,
` diaspora - contact ` . ` interacting_count ` AS ` diaspora - interacting_count ` ,
` diaspora - contact ` . ` interacted_count ` AS ` diaspora - interacted_count ` ,
` diaspora - contact ` . ` post_count ` AS ` diaspora - post_count ` ,
2021-07-10 17:55:03 -04:00
` apcontact ` . ` uuid ` AS ` ap - uuid ` ,
` apcontact ` . ` type ` AS ` ap - type ` ,
` apcontact ` . ` following ` AS ` ap - following ` ,
` apcontact ` . ` followers ` AS ` ap - followers ` ,
` apcontact ` . ` inbox ` AS ` ap - inbox ` ,
` apcontact ` . ` outbox ` AS ` ap - outbox ` ,
` apcontact ` . ` sharedinbox ` AS ` ap - sharedinbox ` ,
` apcontact ` . ` generator ` AS ` ap - generator ` ,
` apcontact ` . ` following_count ` AS ` ap - following_count ` ,
` apcontact ` . ` followers_count ` AS ` ap - followers_count ` ,
2022-03-24 07:30:32 -04:00
` apcontact ` . ` statuses_count ` AS ` ap - statuses_count ` ,
` gserver ` . ` site_name ` AS ` site_name ` ,
` gserver ` . ` platform ` AS ` platform ` ,
2023-03-28 01:33:14 -04:00
` gserver ` . ` version ` AS ` version ` ,
` gserver ` . ` blocked ` AS ` server - blocked ` ,
` gserver ` . ` failed ` AS ` server - failed `
2021-07-10 17:55:03 -04:00
FROM ` contact ` AS ` ucontact `
INNER JOIN ` contact ` ON ` contact ` . ` uri - id ` = ` ucontact ` . ` uri - id ` AND ` contact ` . ` uid ` = 0
2021-10-04 02:13:52 -04:00
LEFT JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` ucontact ` . ` uri - id `
2021-07-10 17:55:03 -04:00
LEFT JOIN ` apcontact ` ON ` apcontact ` . ` uri - id ` = ` ucontact ` . ` uri - id `
2021-09-15 00:36:01 -04:00
LEFT JOIN ` diaspora - contact ` ON ` diaspora - contact ` . ` uri - id ` = ` ucontact ` . ` uri - id `
2022-03-24 07:30:32 -04:00
LEFT JOIN ` gserver ` ON ` gserver ` . ` id ` = contact . ` gsid ` ;
2021-07-10 17:55:03 -04:00
2020-04-24 11:44:41 -04:00
--
-- VIEW pending-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` pending - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` pending - view ` AS SELECT
2020-04-24 11:44:41 -04:00
` register ` . ` id ` AS ` id ` ,
` register ` . ` hash ` AS ` hash ` ,
` register ` . ` created ` AS ` created ` ,
` register ` . ` uid ` AS ` uid ` ,
` register ` . ` password ` AS ` password ` ,
` register ` . ` language ` AS ` language ` ,
` register ` . ` note ` AS ` note ` ,
` contact ` . ` self ` AS ` self ` ,
` contact ` . ` name ` AS ` name ` ,
` contact ` . ` url ` AS ` url ` ,
` contact ` . ` micro ` AS ` micro ` ,
` user ` . ` email ` AS ` email ` ,
` contact ` . ` nick ` AS ` nick `
FROM ` register `
INNER JOIN ` contact ` ON ` register ` . ` uid ` = ` contact ` . ` uid `
INNER JOIN ` user ` ON ` register ` . ` uid ` = ` user ` . ` uid ` ;
2020-05-04 11:23:45 -04:00
--
-- VIEW tag-search-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` tag - search - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` tag - search - view ` AS SELECT
2020-05-04 11:23:45 -04:00
` post - tag ` . ` uri - id ` AS ` uri - id ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` uid ` AS ` uid ` ,
2021-02-15 01:14:53 -05:00
` post - user ` . ` id ` AS ` iid ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` private ` AS ` private ` ,
` post - user ` . ` wall ` AS ` wall ` ,
` post - user ` . ` origin ` AS ` origin ` ,
2021-02-22 14:47:08 -05:00
` post - user ` . ` global ` AS ` global ` ,
2021-02-14 04:43:27 -05:00
` post - user ` . ` gravity ` AS ` gravity ` ,
` post - user ` . ` received ` AS ` received ` ,
2021-02-22 14:47:08 -05:00
` post - user ` . ` network ` AS ` network ` ,
2021-03-11 14:59:42 -05:00
` post - user ` . ` author - id ` AS ` author - id ` ,
2020-05-04 11:23:45 -04:00
` tag ` . ` name ` AS ` name `
FROM ` post - tag `
INNER JOIN ` tag ` ON ` tag ` . ` id ` = ` post - tag ` . ` tid `
2021-02-14 04:43:27 -05:00
STRAIGHT_JOIN ` post - user ` ON ` post - user ` . ` uri - id ` = ` post - tag ` . ` uri - id `
2020-05-04 11:23:45 -04:00
WHERE ` post - tag ` . ` type ` = 1 ;
2020-04-28 15:46:59 -04:00
--
-- VIEW workerqueue-view
--
2020-12-02 03:50:45 -05:00
DROP VIEW IF EXISTS ` workerqueue - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` workerqueue - view ` AS SELECT
2020-04-28 15:46:59 -04:00
` process ` . ` pid ` AS ` pid ` ,
` workerqueue ` . ` priority ` AS ` priority `
FROM ` process `
INNER JOIN ` workerqueue ` ON ` workerqueue ` . ` pid ` = ` process ` . ` pid `
WHERE NOT ` workerqueue ` . ` done ` ;
2021-10-17 17:10:10 -04:00
--
-- VIEW profile_field-view
--
DROP VIEW IF EXISTS ` profile_field - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` profile_field - view ` AS SELECT
2021-10-18 21:55:24 -04:00
` profile_field ` . ` id ` AS ` id ` ,
` profile_field ` . ` uid ` AS ` uid ` ,
` profile_field ` . ` label ` AS ` label ` ,
` profile_field ` . ` value ` AS ` value ` ,
` profile_field ` . ` order ` AS ` order ` ,
` profile_field ` . ` psid ` AS ` psid ` ,
` permissionset ` . ` allow_cid ` AS ` allow_cid ` ,
` permissionset ` . ` allow_gid ` AS ` allow_gid ` ,
` permissionset ` . ` deny_cid ` AS ` deny_cid ` ,
` permissionset ` . ` deny_gid ` AS ` deny_gid ` ,
` profile_field ` . ` created ` AS ` created ` ,
` profile_field ` . ` edited ` AS ` edited `
FROM ` profile_field `
INNER JOIN ` permissionset ` ON ` permissionset ` . ` id ` = ` profile_field ` . ` psid ` ;
2021-08-28 03:10:27 -04:00
--
-- VIEW diaspora-contact-view
--
DROP VIEW IF EXISTS ` diaspora - contact - view ` ;
2023-02-21 15:01:57 -05:00
CREATE VIEW ` diaspora - contact - view ` AS SELECT
2021-08-28 03:10:27 -04:00
` diaspora - contact ` . ` uri - id ` AS ` uri - id ` ,
` item - uri ` . ` uri ` AS ` url ` ,
` item - uri ` . ` guid ` AS ` guid ` ,
` diaspora - contact ` . ` addr ` AS ` addr ` ,
` diaspora - contact ` . ` alias ` AS ` alias ` ,
` diaspora - contact ` . ` nick ` AS ` nick ` ,
` diaspora - contact ` . ` name ` AS ` name ` ,
` diaspora - contact ` . ` given - name ` AS ` given - name ` ,
` diaspora - contact ` . ` family - name ` AS ` family - name ` ,
` diaspora - contact ` . ` photo ` AS ` photo ` ,
` diaspora - contact ` . ` photo - medium ` AS ` photo - medium ` ,
` diaspora - contact ` . ` photo - small ` AS ` photo - small ` ,
` diaspora - contact ` . ` batch ` AS ` batch ` ,
` diaspora - contact ` . ` notify ` AS ` notify ` ,
` diaspora - contact ` . ` poll ` AS ` poll ` ,
` diaspora - contact ` . ` subscribe ` AS ` subscribe ` ,
` diaspora - contact ` . ` searchable ` AS ` searchable ` ,
` diaspora - contact ` . ` pubkey ` AS ` pubkey ` ,
` gserver ` . ` url ` AS ` baseurl ` ,
` diaspora - contact ` . ` gsid ` AS ` gsid ` ,
` diaspora - contact ` . ` created ` AS ` created ` ,
` diaspora - contact ` . ` updated ` AS ` updated ` ,
` diaspora - contact ` . ` interacting_count ` AS ` interacting_count ` ,
` diaspora - contact ` . ` interacted_count ` AS ` interacted_count ` ,
` diaspora - contact ` . ` post_count ` AS ` post_count `
FROM ` diaspora - contact `
INNER JOIN ` item - uri ` ON ` item - uri ` . ` id ` = ` diaspora - contact ` . ` uri - id `
LEFT JOIN ` gserver ` ON ` gserver ` . ` id ` = ` diaspora - contact ` . ` gsid ` ;