--
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 '',
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';
`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 '',
`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';
--
| 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 | |
| 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)
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
------------
| 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)
$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
$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();
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']);
'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"]];
"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" => ""],
"followers" => ["followers(190)"],
"baseurl" => ["baseurl(190)"],
"sharedinbox" => ["sharedinbox(190)"],
- "gsid" => ["gsid"]
+ "gsid" => ["gsid"],
+ "uri-id" => ["UNIQUE", "uri-id"],
]
],
"application" => [
"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" => ""],
"PRIMARY" => ["id"],
"addr" => ["addr(32)"],
"url" => ["UNIQUE", "url(190)"],
+ "uri-id" => ["UNIQUE", "uri-id"],
]
],
"fsuggest" => [