]> git.mxchange.org Git - friendica.git/commitdiff
The uri-id is now in all contact tables
authorMichael <heluecht@pirati.ca>
Fri, 9 Jul 2021 07:09:33 +0000 (07:09 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 9 Jul 2021 07:09:33 +0000 (07:09 +0000)
database.sql
doc/database/db_apcontact.md
doc/database/db_fcontact.md
src/Model/APContact.php
src/Model/Contact.php
src/Model/FContact.php
static/dbstructure.config.php

index ca248875bf5793a239deb4986489fb6dbc0421fd..5ee4ef053d3ea77eb682ab1743f0ca62798162c2 100644 (file)
@@ -335,6 +335,7 @@ CREATE TABLE IF NOT EXISTS `addon` (
 --
 CREATE TABLE IF NOT EXISTS `apcontact` (
        `url` varbinary(255) NOT NULL COMMENT 'URL of the contact',
+       `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the apcontact url',
        `uuid` varchar(255) COMMENT '',
        `type` varchar(20) NOT NULL COMMENT '',
        `following` varchar(255) COMMENT '',
@@ -367,6 +368,8 @@ CREATE TABLE IF NOT EXISTS `apcontact` (
         INDEX `baseurl` (`baseurl`(190)),
         INDEX `sharedinbox` (`sharedinbox`(190)),
         INDEX `gsid` (`gsid`),
+        UNIQUE INDEX `uri-id` (`uri-id`),
+       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='ActivityPub compatible contacts - used in the ActivityPub implementation';
 
@@ -598,6 +601,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
        `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
        `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'unique id',
        `url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
+       `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the fcontact url',
        `name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
        `photo` varchar(255) NOT NULL DEFAULT '' COMMENT '',
        `request` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@@ -614,7 +618,9 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
        `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
         PRIMARY KEY(`id`),
         INDEX `addr` (`addr`(32)),
-        UNIQUE INDEX `url` (`url`(190))
+        UNIQUE INDEX `url` (`url`(190)),
+        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='Diaspora compatible contacts - used in the Diaspora implementation';
 
 --
index ede71d1d0c8f2e1f43da4b853b8d926ba8087d6d..5abf60f10f5a06b49c40cf8022250fbb8a0e886e 100644 (file)
@@ -9,6 +9,7 @@ Fields
 | Field            | Description                                                         | Type           | Null | Key | Default             | Extra |
 | ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
 | url              | URL of the contact                                                  | varbinary(255) | NO   | PRI | NULL                |       |
+| uri-id           | Id of the item-uri table entry that contains the apcontact url      | int unsigned   | YES  |     | NULL                |       |
 | uuid             |                                                                     | varchar(255)   | YES  |     | NULL                |       |
 | type             |                                                                     | varchar(20)    | NO   |     | NULL                |       |
 | following        |                                                                     | varchar(255)   | YES  |     | NULL                |       |
@@ -47,12 +48,14 @@ Indexes
 | baseurl     | baseurl(190)     |
 | sharedinbox | sharedinbox(190) |
 | gsid        | gsid             |
+| uri-id      | UNIQUE, uri-id   |
 
 Foreign Keys
 ------------
 
 | Field | Target Table | Target Field |
 |-------|--------------|--------------|
+| uri-id | [item-uri](help/database/db_item-uri) | id |
 | gsid | [gserver](help/database/db_gserver) | id |
 
 Return to [database documentation](help/database)
index 43a073f619e8f26396bb6d8de6b59c2ce0e467cd..51cfac7641bca0ce3694022ef1f53310a80c4ba8 100644 (file)
@@ -6,25 +6,26 @@ Diaspora compatible contacts - used in the Diaspora implementation
 Fields
 ------
 
-| Field    | Description   | Type             | Null | Key | Default             | Extra          |
-| -------- | ------------- | ---------------- | ---- | --- | ------------------- | -------------- |
-| id       | sequential ID | int unsigned     | NO   | PRI | NULL                | auto_increment |
-| guid     | unique id     | varchar(255)     | NO   |     |                     |                |
-| url      |               | varchar(255)     | NO   |     |                     |                |
-| name     |               | varchar(255)     | NO   |     |                     |                |
-| photo    |               | varchar(255)     | NO   |     |                     |                |
-| request  |               | varchar(255)     | NO   |     |                     |                |
-| nick     |               | varchar(255)     | NO   |     |                     |                |
-| addr     |               | varchar(255)     | NO   |     |                     |                |
-| batch    |               | varchar(255)     | NO   |     |                     |                |
-| notify   |               | varchar(255)     | NO   |     |                     |                |
-| poll     |               | varchar(255)     | NO   |     |                     |                |
-| confirm  |               | varchar(255)     | NO   |     |                     |                |
-| priority |               | tinyint unsigned | NO   |     | 0                   |                |
-| network  |               | char(4)          | NO   |     |                     |                |
-| alias    |               | varchar(255)     | NO   |     |                     |                |
-| pubkey   |               | text             | YES  |     | NULL                |                |
-| updated  |               | datetime         | NO   |     | 0001-01-01 00:00:00 |                |
+| Field    | Description                                                   | Type             | Null | Key | Default             | Extra          |
+| -------- | ------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
+| id       | sequential ID                                                 | int unsigned     | NO   | PRI | NULL                | auto_increment |
+| guid     | unique id                                                     | varchar(255)     | NO   |     |                     |                |
+| url      |                                                               | varchar(255)     | NO   |     |                     |                |
+| uri-id   | Id of the item-uri table entry that contains the fcontact url | int unsigned     | YES  |     | NULL                |                |
+| name     |                                                               | varchar(255)     | NO   |     |                     |                |
+| photo    |                                                               | varchar(255)     | NO   |     |                     |                |
+| request  |                                                               | varchar(255)     | NO   |     |                     |                |
+| nick     |                                                               | varchar(255)     | NO   |     |                     |                |
+| addr     |                                                               | varchar(255)     | NO   |     |                     |                |
+| batch    |                                                               | varchar(255)     | NO   |     |                     |                |
+| notify   |                                                               | varchar(255)     | NO   |     |                     |                |
+| poll     |                                                               | varchar(255)     | NO   |     |                     |                |
+| confirm  |                                                               | varchar(255)     | NO   |     |                     |                |
+| priority |                                                               | tinyint unsigned | NO   |     | 0                   |                |
+| network  |                                                               | char(4)          | NO   |     |                     |                |
+| alias    |                                                               | varchar(255)     | NO   |     |                     |                |
+| pubkey   |                                                               | text             | YES  |     | NULL                |                |
+| updated  |                                                               | datetime         | NO   |     | 0001-01-01 00:00:00 |                |
 
 Indexes
 ------------
@@ -34,6 +35,13 @@ Indexes
 | PRIMARY | id               |
 | addr    | addr(32)         |
 | url     | UNIQUE, url(190) |
+| uri-id  | UNIQUE, uri-id   |
 
+Foreign Keys
+------------
+
+| Field | Target Table | Target Field |
+|-------|--------------|--------------|
+| uri-id | [item-uri](help/database/db_item-uri) | id |
 
 Return to [database documentation](help/database)
index fd9026defb3df6e473e7c65e62ab170b85e64285..5c60ebae59397bcc290a67743b168ebc8b243b02 100644 (file)
@@ -349,6 +349,12 @@ class APContact
                        $apcontact['alias'] = null;
                }
 
+               if (empty($apcontact['uuid'])) {
+                       $apcontact['uri-id'] = ItemURI::getIdByURI($apcontact['url']);
+               } else {
+                       $apcontact['uri-id'] = ItemURI::insert(['uri' => $apcontact['uri'], 'guid' => $apcontact['uuid']]);
+               }
+
                $apcontact['updated'] = DateTimeFormat::utcNow();
 
                // We delete the old entry when the URL is changed
index ecebe79b9976ad878945548b86341c6f357548aa..30158c5b4f7b627a474c268875ee16bb9f53238c 100644 (file)
@@ -185,11 +185,7 @@ class Contact
                        $fields['gsid'] = GServer::getID($fields['baseurl'], true);
                }
 
-               if (!empty($fields['url']) && !empty($fields['guid'])) {
-                       $fields['uri-id'] = ItemURI::insert(['uri' => $fields['url'], 'guid' => $fields['guid']]);
-               } elseif (!empty($fields['url'])) {
-                       $fields['uri-id'] = ItemURI::getIdByURI($fields['url']);
-               }
+               $fields['uri-id'] = ItemURI::getIdByURI($fields['url']);
 
                if (empty($fields['created'])) {
                        $fields['created'] = DateTimeFormat::utcNow();
@@ -2161,7 +2157,7 @@ class Contact
                if (empty($guid)) {
                        $ret['uri-id'] = ItemURI::getIdByURI($ret['url']);
                } else {
-                       $ret['uri-id']  = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $guid]);
+                       $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $guid]);
                }
 
                $ret['nurl']    = Strings::normaliseLink($ret['url']);
index cf75a03dbc1df976ecc84c505d7fde2325df95ad..24421b8c0809a4f2e8803a8765f0960392f6188e 100644 (file)
@@ -100,6 +100,7 @@ class FContact
                        'batch' => $arr["batch"], 'notify' => $arr["notify"],
                        'poll' => $arr["poll"], 'confirm' => $arr["confirm"],
                        'alias' => $arr["alias"], 'pubkey' => $arr["pubkey"],
+                       'uri-id' => ItemURI::insert(['uri' => $arr['url'], 'guid' => $arr['guid']]),
                        'updated' => DateTimeFormat::utcNow()];
 
                $condition = ['url' => $arr["url"], 'network' => $arr["network"]];
index f15bc7075a68b8041bbea195fa19daad5b6d154b..e47f0d5dc13ba09c199094296d5d543087e87f34 100644 (file)
@@ -395,6 +395,7 @@ return [
                "comment" => "ActivityPub compatible contacts - used in the ActivityPub implementation",
                "fields" => [
                        "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "URL of the contact"],
+                       "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the apcontact url"],
                        "uuid" => ["type" => "varchar(255)", "comment" => ""],
                        "type" => ["type" => "varchar(20)", "not null" => "1", "comment" => ""],
                        "following" => ["type" => "varchar(255)", "comment" => ""],
@@ -428,7 +429,8 @@ return [
                        "followers" => ["followers(190)"],
                        "baseurl" => ["baseurl(190)"],
                        "sharedinbox" => ["sharedinbox(190)"],
-                       "gsid" => ["gsid"]
+                       "gsid" => ["gsid"],
+                       "uri-id" => ["UNIQUE", "uri-id"],
                ]
        ],
        "application" => [
@@ -660,6 +662,7 @@ return [
                        "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
                        "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "unique id"],
                        "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the fcontact url"],
                        "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
                        "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
                        "request" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
@@ -679,6 +682,7 @@ return [
                        "PRIMARY" => ["id"],
                        "addr" => ["addr(32)"],
                        "url" => ["UNIQUE", "url(190)"],
+                       "uri-id" => ["UNIQUE", "uri-id"],
                ]
        ],
        "fsuggest" => [