diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2022-11-22 22:16:36 -0100 |
---|---|---|
committer | Maxence Lange <maxence@artificial-owl.com> | 2022-11-22 22:16:44 -0100 |
commit | 54aae0c9dacdb6d1385d50cc3440eb0fb26aef28 (patch) | |
tree | 51da14d1df217cbf85c63e8aab2605d39186496b | |
parent | a21c75796fb49a20196153b71a11d48a77a555ca (diff) |
migrate db
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
-rw-r--r-- | appinfo/info.xml | 7 | ||||
-rw-r--r-- | lib/Command/MigrateAlpha3.php | 397 | ||||
-rw-r--r-- | lib/Db/ActionsRequest.php | 5 | ||||
-rw-r--r-- | lib/Db/ActorsRequest.php | 2 | ||||
-rw-r--r-- | lib/Db/ActorsRequestBuilder.php | 12 | ||||
-rw-r--r-- | lib/Db/CacheActorsRequest.php | 2 | ||||
-rw-r--r-- | lib/Db/CacheDocumentsRequest.php | 3 | ||||
-rw-r--r-- | lib/Db/CacheDocumentsRequestBuilder.php | 13 | ||||
-rw-r--r-- | lib/Db/CoreRequestBuilder.php | 265 | ||||
-rw-r--r-- | lib/Db/FollowsRequest.php | 12 | ||||
-rw-r--r-- | lib/Db/HashtagsRequestBuilder.php | 12 | ||||
-rw-r--r-- | lib/Db/InstancesRequest.php | 2 | ||||
-rw-r--r-- | lib/Db/RequestQueueRequestBuilder.php | 12 | ||||
-rw-r--r-- | lib/Db/SocialCoreQueryBuilder.php | 4 | ||||
-rw-r--r-- | lib/Db/StreamActionsRequest.php | 4 | ||||
-rw-r--r-- | lib/Db/StreamActionsRequestBuilder.php | 12 | ||||
-rw-r--r-- | lib/Db/StreamQueueRequestBuilder.php | 12 | ||||
-rw-r--r-- | lib/Migration/Version1000Date20221118000001.php | 75 | ||||
-rw-r--r-- | tests/psalm-baseline.xml | 2 |
19 files changed, 273 insertions, 580 deletions
diff --git a/appinfo/info.xml b/appinfo/info.xml index 27c5cda2..27810482 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -43,19 +43,12 @@ <job>OCA\Social\Cron\Queue</job> </background-jobs> - <repair-steps> - <post-migration> - <step>OCA\Social\Migration\CheckInstallation</step> - </post-migration> - </repair-steps> - <commands> <command>OCA\Social\Command\AccountCreate</command> <command>OCA\Social\Command\AccountFollowing</command> <command>OCA\Social\Command\CacheRefresh</command> <command>OCA\Social\Command\CheckInstall</command> <command>OCA\Social\Command\Fediverse</command> - <command>OCA\Social\Command\MigrateAlpha3</command> <command>OCA\Social\Command\NoteLike</command> <command>OCA\Social\Command\NoteCreate</command> <command>OCA\Social\Command\NoteBoost</command> diff --git a/lib/Command/MigrateAlpha3.php b/lib/Command/MigrateAlpha3.php deleted file mode 100644 index 05774920..00000000 --- a/lib/Command/MigrateAlpha3.php +++ /dev/null @@ -1,397 +0,0 @@ -<?php - -declare(strict_types=1); - - -/** - * Nextcloud - Social Support - * - * This file is licensed under the Affero General Public License version 3 or - * later. See the COPYING file. - * - * @author Maxence Lange <maxence@artificial-owl.com> - * @copyright 2018, Maxence Lange <maxence@artificial-owl.com> - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -namespace OCA\Social\Command; - -use OCA\Social\Tools\Traits\TArrayTools; -use Exception; -use OC\Core\Command\Base; -use OCA\Social\Db\CoreRequestBuilder; -use OCA\Social\Service\CheckService; -use OCA\Social\Service\ConfigService; -use OCA\Social\Service\MiscService; -use OCP\DB\QueryBuilder\IParameter; -use OCP\DB\QueryBuilder\IQueryBuilder; -use OCP\IDBConnection; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Question\ConfirmationQuestion; - -class MigrateAlpha3 extends Base { - use TArrayTools; - - private IDBConnection $dbConnection; - private CoreRequestBuilder $coreRequestBuilder; - private CheckService $checkService; - private ConfigService $configService; - private MiscService $miscService; - private array $done = []; - public array $tables = [ - 'social_a2_actions' => [ - ['id_prim'], - 'social_3_action', - [ - 'actor_id_prim' => 'PRIM:actor_id', - 'object_id_prim' => 'PRIM:object_id' - ] - ], - 'social_a2_actors' => [['user_id'], 'social_3_actor', []], - 'social_a2_cache_actors' => [['id_prim'], 'social_3_cache_actor', []], - 'social_a2_cache_documts' => [['id_prim'], 'social_3_cache_doc', []], - 'social_a2_follows' => [ - ['id_prim'], - 'social_3_follow', - [ - 'actor_id_prim' => 'PRIM:actor_id', - 'object_id_prim' => 'PRIM:object_id', - 'follow_id_prim' => 'PRIM:follow_id' - ] - ], - - 'social_a2_hashtags' => [['hashtag'], 'social_3_hashtag', []], - 'social_a2_request_queue' => [['id'], 'social_3_req_queue', []], - 'social_a2_stream' => [ - ['id_prim'], - 'social_3_stream', - [ - 'object_id_prim' => 'PRIM:object_id', - 'in_reply_to_prim' => 'PRIM:in_reply_to', - 'attributed_to_prim' => 'PRIM:attributed_to', - 'filter_duplicate' => 'COPY:hidden_on_timeline', - 'hidden_on_timeline' => 'REMOVED:' - ] - ], - 'social_a2_stream_action' => [ - ['id'], - 'social_3_stream_act', - [ - 'actor_id_prim' => 'PRIM:actor_id', - 'stream_id_prim' => 'PRIM:stream_id', - '_function_' => 'migrateTableStreamAction' - ] - ], - 'social_a2_stream_queue' => [['id'], 'social_3_stream_queue', []] - ]; - - public function __construct( - IDBConnection $dbConnection, CoreRequestBuilder $coreRequestBuilder, CheckService $checkService, - ConfigService $configService, MiscService $miscService - ) { - parent::__construct(); - $this->dbConnection = $dbConnection; - $this->checkService = $checkService; - $this->coreRequestBuilder = $coreRequestBuilder; - $this->configService = $configService; - $this->miscService = $miscService; - } - - protected function configure() { - parent::configure(); - $this->setName('social:migrate:alpha3') - ->setDescription('Trying to migrate old data to Alpha3') - ->addOption( - 'remove-migrated-tables', '', InputOption::VALUE_NONE, 'Remove old table once copy is done' - ) - ->addOption( - 'force-remove-old-tables', '', InputOption::VALUE_NONE, 'Force remove old tables' - ); - } - - - /** - * @throws Exception - */ - protected function execute(InputInterface $input, OutputInterface $output): int { - $tables = $this->checkTables(); - - if ($input->getOption('force-remove-old-tables')) { - foreach ($tables as $table) { - $this->dropTable($table); - } - - return 0; - } - - if (empty($tables)) { - $output->writeln('Nothing to migrate.'); - - return 0; - } - - $defTables = ''; - if (sizeof($tables) < sizeof($this->tables)) { - $defTables = ': \'' . implode("', '", $tables) . '\''; - } - - $output->writeln( - 'Found ' . sizeof($tables) . ' tables to migrate' . $defTables . '.' - ); - - if (!$this->confirmExecute($input, $output)) { - return 0; - } - - $this->done = []; - $this->migrateTables($output, $tables); - - if ($input->getOption('remove-migrated-tables')) { - $this->dropDeprecatedTables($input, $output); - } - - return 0; - } - - - /** - * @return string[] - */ - private function checkTables(): array { - $ak = array_keys($this->tables); - $tables = []; - foreach ($ak as $k) { - if ($this->dbConnection->tableExists($k)) { - $tables[] = $k; - } - } - - return $tables; - } - - - /** - * @param InputInterface $input - * @param OutputInterface $output - */ - private function confirmExecute(InputInterface $input, OutputInterface $output): bool { - $helper = $this->getHelper('question'); - $output->writeln(''); - $question = new ConfirmationQuestion( - '<info>Do you want to migrate data from the old database?</info> (y/N) ', false, '/^(y|Y)/i' - ); - - if (!$helper->ask($input, $output, $question)) { - return false; - } - - return true; - } - - - private function migrateTables(OutputInterface $output, array $tables): void { - foreach ($tables as $table) { - try { - $this->migrateTable($output, $table); - $output->writeln('Migration of \'<comment>' . $table . '</comment>\': <info>ok</info>'); - } catch (Exception $e) { - $output->writeln( - 'Migration of \'<comment>' . $table . '</comment>\': <error>fail</error> - ' - . $e->getMessage() - ); - } - } - } - - private function migrateTable(OutputInterface $output, string $table): void { - $output->writeln(''); - $output->writeln('Retrieving data from \'' . $table . '\'.'); - $fullContent = $this->getContentFromTable($table); - - $output->write('Found ' . count($fullContent) . ' entries'); - $m = $copied = 0; - foreach ($fullContent as $entry) { - if ($m % 50 === 0) { - $output->write('.'); - } - - if ($this->migrateEntry($table, $entry)) { - $copied++; - } - - $m++; - } - - $output->writeln(' <info>' . $copied . ' copied</info>'); - - $this->done[] = $table; - } - - private function getContentFromTable(string $table): array { - $qb = $this->dbConnection->getQueryBuilder(); - - $qb->select('*') - ->from($table); - - $entries = []; - $cursor = $qb->execute(); - while ($data = $cursor->fetch()) { - $entries[] = $data; - } - $cursor->closeCursor(); - - return $entries; - } - - private function migrateEntry(string $table, $entry): bool { - if (!$this->checkUnique($table, $entry)) { - return false; - } - - list(, $destTable, $destDefault) = $this->tables[$table]; - - $qb = $this->dbConnection->getQueryBuilder(); - - $qb->insert($destTable); - $ak = array_merge(array_keys($entry), array_keys($destDefault)); - foreach ($ak as $k) { - if ($k === '_function_') { - continue; - } - - $value = ''; - - try { - if ($this->get($k, $entry, '') !== '') { - $this->manageDefault($qb, $this->get($k, $destDefault), $entry); - $value = $entry[$k]; - } elseif (array_key_exists($k, $destDefault)) { - $value = $this->manageDefault($qb, $destDefault[$k], $entry); - } - } catch (Exception $e) { - continue; - } - - if ($value !== '') { - $qb->setValue($k, $qb->createNamedParameter($value)); - } - } - - if (array_key_exists('_function_', $destDefault)) { - call_user_func_array([$this, $destDefault['_function_']], [$qb, $entry]); - } - - $qb->execute(); - - return true; - } - - private function checkUnique(string $table, $entry): bool { - list($unique, $destTable) = $this->tables[$table]; - - $qb = $this->dbConnection->getQueryBuilder(); - $qb->select('*') - ->from($destTable); - - $expr = $qb->expr(); - $andX = $expr->andX(); - foreach ($unique as $f) { - $andX->add($expr->eq($f, $qb->createNamedParameter($entry[$f]))); - } - $qb->andWhere($andX); - - $cursor = $qb->executeQuery(); - $data = $cursor->fetch(); - $cursor->closeCursor(); - - if ($data === false) { - return true; - } - - return false; - } - - - /** - * @return IParameter|string - * @throws Exception - */ - private function manageDefault(IQueryBuilder $qb, string $default, array $entry) { - if ($default === '') { - return ''; - } - - if (!strpos($default, ':')) { - return $qb->createNamedParameter($default); - } - - list($k, $v) = explode(':', $default, 2); - switch ($k) { - case 'COPY': - return $this->get($v, $entry, ''); - - case 'PRIM': - if ($this->get($v, $entry, '') === '') { - return ''; - } - - return hash('sha512', $entry[$v]); - - case 'REMOVED': - throw new Exception(); - } - - return ''; - } - - private function dropDeprecatedTables(InputInterface $input, OutputInterface $output) { - $helper = $this->getHelper('question'); - $output->writeln(''); - $question = new ConfirmationQuestion( - '<info>You migrate ' . count($this->done) . ' table. Do you want to remove them ?</info> (y/N) ', - false, '/^(y|Y)/i' - ); - - if (!$helper->ask($input, $output, $question)) { - return; - } - - foreach ($this->done as $table) { - $this->dropTable($table); - } - } - - private function dropTable(string $table): void { - $this->dbConnection->dropTable($table); - } - - public function migrateTableStreamAction(IQueryBuilder $qb, array $entry): void { - $values = json_decode($entry['values'], true); - if ($values === null) { - return; - } - - $liked = ($this->getBool('liked', $values)) ? '1' : '0'; - $boosted = ($this->getBool('boosted', $values)) ? '1' : '0'; - - $qb->setValue('liked', $qb->createNamedParameter($liked)); - $qb->setValue('boosted', $qb->createNamedParameter($boosted)); - } -} diff --git a/lib/Db/ActionsRequest.php b/lib/Db/ActionsRequest.php index 977b7f90..a678a8f6 100644 --- a/lib/Db/ActionsRequest.php +++ b/lib/Db/ActionsRequest.php @@ -31,12 +31,12 @@ declare(strict_types=1); namespace OCA\Social\Db; -use OCA\Social\Tools\Traits\TArrayTools; use DateTime; use Exception; use OCA\Social\Exceptions\ActionDoesNotExistException; use OCA\Social\Model\ActivityPub\ACore; use OCA\Social\Model\ActivityPub\Object\Like; +use OCA\Social\Tools\Traits\TArrayTools; use OCP\DB\QueryBuilder\IQueryBuilder; /** @@ -53,6 +53,7 @@ class ActionsRequest extends ActionsRequestBuilder { public function save(ACore $like): void { $qb = $this->getActionsInsertSql(); $qb->setValue('id', $qb->createNamedParameter($like->getId())) + ->setValue('id_prim', $qb->createNamedParameter($qb->prim($like->getId()))) ->setValue('actor_id', $qb->createNamedParameter($like->getActorId())) ->setValue('actor_id_prim', $qb->createNamedParameter($qb->prim($like->getActorId()))) ->setValue('type', $qb->createNamedParameter($like->getType())) @@ -67,8 +68,6 @@ class ActionsRequest extends ActionsRequestBuilder { } catch (Exception $e) { } - $this->generatePrimaryKey($qb, $like->getId()); - $qb->executeStatement(); } diff --git a/lib/Db/ActorsRequest.php b/lib/Db/ActorsRequest.php index f0b6178c..cbf31d0d 100644 --- a/lib/Db/ActorsRequest.php +++ b/lib/Db/ActorsRequest.php @@ -47,7 +47,7 @@ class ActorsRequest extends ActorsRequestBuilder { $qb = $this->getActorsInsertSql(); $qb->setValue('id', $qb->createNamedParameter($actor->getId())) - ->setValue('id_prim', $qb->createNamedParameter($this->prim($actor->getId()))) + ->setValue('id_prim', $qb->createNamedParameter($qb->prim($actor->getId()))) ->setValue('user_id', $qb->createNamedParameter($actor->getUserId())) ->setValue('name', $qb->createNamedParameter($actor->getName())) ->setValue('summary', $qb->createNamedParameter($actor->getSummary())) diff --git a/lib/Db/ActorsRequestBuilder.php b/lib/Db/ActorsRequestBuilder.php index ee6ad7b0..d9247f86 100644 --- a/lib/Db/ActorsRequestBuilder.php +++ b/lib/Db/ActorsRequestBuilder.php @@ -44,8 +44,8 @@ class ActorsRequestBuilder extends CoreRequestBuilder { * * @return IQueryBuilder */ - protected function getActorsInsertSql(): IQueryBuilder { - $qb = $this->dbConnection->getQueryBuilder(); + protected function getActorsInsertSql(): SocialQueryBuilder { + $qb = $this->getQueryBuilder(); $qb->insert(self::TABLE_ACTORS); return $qb; @@ -57,8 +57,8 @@ class ActorsRequestBuilder extends CoreRequestBuilder { * * @return IQueryBuilder */ - protected function getActorsUpdateSql(): IQueryBuilder { - $qb = $this->dbConnection->getQueryBuilder(); + protected function getActorsUpdateSql(): SocialQueryBuilder { + $qb = $this->getQueryBuilder(); $qb->update(self::TABLE_ACTORS); return $qb; @@ -92,8 +92,8 @@ class ActorsRequestBuilder extends CoreRequestBuilder { * * @return IQueryBuilder */ - protected function getActorsDeleteSql(): IQueryBuilder { - $qb = $this->dbConnection->getQueryBuilder(); + protected function getActorsDeleteSql(): SocialQueryBuilder { + $qb = $this->getQueryBuilder(); $qb->delete(self::TABLE_ACTORS); return $qb; diff --git a/lib/Db/CacheActorsRequest.php b/lib/Db/CacheActorsRequest.php index 0027545d..ecab744e 100644 --- a/lib/Db/CacheActorsRequest.php +++ b/lib/Db/CacheActorsRequest.php @@ -47,7 +47,7 @@ class CacheActorsRequest extends CacheActorsRequestBuilder { public function save(Person $actor): void { $qb = $this->getCacheActorsInsertSql(); $qb->setValue('id', $qb->createNamedParameter($actor->getId())) - ->setValue('id_prim', $qb->createNamedParameter($this->prim($actor->getId()))) + ->setValue('id_prim', $qb->createNamedParameter($qb->prim($actor->getId()))) ->setValue('account', $qb->createNamedParameter($actor->getAccount())) ->setValue('type', $qb->createNamedParameter($actor->getType())) ->setValue('local', $qb->createNamedParameter(($actor->isLocal()) ? '1' : '0')) diff --git a/lib/Db/CacheDocumentsRequest.php b/lib/Db/CacheDocumentsRequest.php index fa77bf93..88e6e284 100644 --- a/lib/Db/CacheDocumentsRequest.php +++ b/lib/Db/CacheDocumentsRequest.php @@ -47,6 +47,7 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder { public function save(Document $document): void { $qb = $this->getCacheDocumentsInsertSql(); $qb->setValue('id', $qb->createNamedParameter($document->getId())) + ->setValue('id_prim', $qb->createNamedParameter($qb->prim($document->getId()))) ->setValue('type', $qb->createNamedParameter($document->getType())) ->setValue('url', $qb->createNamedParameter($document->getUrl())) ->setValue('media_type', $qb->createNamedParameter($document->getMediaType())) @@ -65,8 +66,6 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder { } catch (Exception $e) { } - $this->generatePrimaryKey($qb, $document->getId()); - $qb->executeStatement(); } diff --git a/lib/Db/CacheDocumentsRequestBuilder.php b/lib/Db/CacheDocumentsRequestBuilder.php index 74b53269..9471dad5 100644 --- a/lib/Db/CacheDocumentsRequestBuilder.php +++ b/lib/Db/CacheDocumentsRequestBuilder.php @@ -32,13 +32,12 @@ namespace OCA\Social\Db; use OCA\Social\Tools\Traits\TArrayTools; use OCA\Social\Model\ActivityPub\Object\Document; -use OCP\DB\QueryBuilder\IQueryBuilder; class CacheDocumentsRequestBuilder extends CoreRequestBuilder { use TArrayTools; - protected function getCacheDocumentsInsertSql(): IQueryBuilder { - $qb = $this->dbConnection->getQueryBuilder(); + protected function getCacheDocumentsInsertSql(): SocialQueryBuilder { + $qb = $this->getQueryBuilder(); $qb->insert(self::TABLE_CACHE_DOCUMENTS); return $qb; @@ -47,8 +46,8 @@ class CacheDocumentsRequestBuilder extends CoreRequestBuilder { /** * Base of the Sql Update request */ - protected function getCacheDocumentsUpdateSql(): IQueryBuilder { - $qb = $this->dbConnection->getQueryBuilder(); + protected function getCacheDocumentsUpdateSql(): SocialQueryBuilder { + $qb = $this->getQueryBuilder(); $qb->update(self::TABLE_CACHE_DOCUMENTS); return $qb; @@ -76,8 +75,8 @@ class CacheDocumentsRequestBuilder extends CoreRequestBuilder { /** * Base of the Sql Delete request */ - protected function getCacheDocumentsDeleteSql(): IQueryBuilder { - $qb = $this->dbConnection->getQueryBuilder(); + protected function getCacheDocumentsDeleteSql(): SocialQueryBuilder { + $qb = $this->getQueryBuilder(); $qb->delete(self::TABLE_CACHE_DOCUMENTS); return $qb; diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index 1b5a73ba..7d7a8698 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -31,20 +31,20 @@ declare(strict_types=1); namespace OCA\Social\Db; -use OCA\Social\Tools\Exceptions\DateTimeException; use DateInterval; use DateTime; use Doctrine\DBAL\Query\QueryBuilder; use Exception; use OC; use OC\DB\SchemaWrapper; -use OCP\DB\ISchemaWrapper; use OCA\Social\Exceptions\InvalidResourceException; use OCA\Social\Model\ActivityPub\Actor\Person; use OCA\Social\Model\ActivityPub\Object\Follow; use OCA\Social\Model\StreamAction; use OCA\Social\Service\ConfigService; use OCA\Social\Service\MiscService; +use OCA\Social\Tools\Exceptions\DateTimeException; +use OCP\DB\ISchemaWrapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IURLGenerator; @@ -57,44 +57,203 @@ use Psr\Log\LoggerInterface; * @package OCA\Social\Db */ class CoreRequestBuilder { - public const TABLE_REQUEST_QUEUE = 'social_req_queue'; - public const TABLE_INSTANCE = 'social_instance'; - + public const TABLE_ACTIONS = 'social_action'; public const TABLE_ACTORS = 'social_actor'; + public const TABLE_CACHE_ACTORS = 'social_cache_actor'; + public const TABLE_CACHE_DOCUMENTS = 'social_cache_doc'; + public const TABLE_CLIENT = 'social_client'; + public const TABLE_FOLLOWS = 'social_follow'; + public const TABLE_HASHTAGS = 'social_hashtag'; + public const TABLE_INSTANCE = 'social_instance'; + public const TABLE_REQUEST_QUEUE = 'social_req_queue'; public const TABLE_STREAM = 'social_stream'; + public const TABLE_STREAM_ACTIONS = 'social_stream_act'; public const TABLE_STREAM_DEST = 'social_stream_dest'; - public const TABLE_STREAM_TAGS = 'social_stream_tag'; public const TABLE_STREAM_QUEUE = 'social_stream_queue'; - public const TABLE_STREAM_ACTIONS = 'social_stream_act'; - - public const TABLE_HASHTAGS = 'social_hashtag'; - public const TABLE_FOLLOWS = 'social_follow'; - public const TABLE_ACTIONS = 'social_action'; - - public const TABLE_CACHE_ACTORS = 'social_cache_actor'; - public const TABLE_CACHE_DOCUMENTS = 'social_cache_doc'; + public const TABLE_STREAM_TAGS = 'social_stream_tag'; - public const TABLE_CLIENT = 'social_client'; - public const TABLE_CLIENT_AUTH = 'social_client_auth'; - public const TABLE_CLIENT_TOKEN = 'social_client_token'; - - - private array $tables = [ - self::TABLE_REQUEST_QUEUE, - self::TABLE_ACTORS, - self::TABLE_STREAM, - self::TABLE_HASHTAGS, - self::TABLE_FOLLOWS, - self::TABLE_ACTIONS, - self::TABLE_CACHE_ACTORS, - self::TABLE_CACHE_DOCUMENTS, - self::TABLE_STREAM_QUEUE, - self::TABLE_STREAM_DEST, - self::TABLE_STREAM_TAGS, - self::TABLE_STREAM_ACTIONS, - self::TABLE_CLIENT, - self::TABLE_CLIENT_AUTH, - self::TABLE_CLIENT_TOKEN + public static array $tables = [ + self::TABLE_ACTIONS => [ + 'id_prim', + 'id', + 'type', + 'actor_id', + 'actor_id_prim', + 'object_id', + 'object_id_prim', + 'creation' + ], + self::TABLE_ACTORS => [ + 'id_prim', + 'id', + 'user_id', + 'preferred_username', + 'name', + 'summary', + 'public_key', + 'private_key', + 'avatar_version', + 'creation' + ], + self::TABLE_CACHE_ACTORS => [ + 'id_prim', + 'id', + 'type', + 'account', + 'local', + 'following', + 'followers', + 'inbox', + 'shared_index', + 'outbox', + 'featured', + 'url', + 'preferred_username', + 'name', + 'icon_id', + 'summary', + 'public_key', + 'source', + 'details', + 'creation' + ], + self::TABLE_CACHE_DOCUMENTS => [ + 'id_prim', + 'id', + 'type', + 'parent_id', + 'media_type', + 'mime_type', + 'url', + 'local_copy', + 'resized_copy', + 'public', + 'error', + 'creation', + 'caching' + ], + self::TABLE_CLIENT => [ + 'id', + 'app_name', + 'app_website', + 'app_redirect_uris', + 'app_client_id', + 'app_client_secret', + 'app_scopes', + 'auth_scopes', + 'auth_account', + 'auth_user_id', + 'auth_code', + 'token', + 'last_update', + 'creation' + ], + self::TABLE_FOLLOWS => [ + 'id_prim', + 'id', + 'type', + 'actor_id', + 'actor_id_prim', + 'object_id', + 'object_id_prim', + 'follow_id', + 'follow_id_prim', + 'accepted', + 'creation' + ], + self::TABLE_HASHTAGS => [ + 'hashtag', + 'trend' + ], + self::TABLE_INSTANCE => [ + 'uri', + 'local', + 'title', + 'version', + 'short_description', + 'description', + 'email', + 'urls', + 'stats', + 'usage', + 'image', + 'languages', + 'contact', + 'account_prim', + 'creation' + ], + self::TABLE_REQUEST_QUEUE => [ + 'id', + 'token', + 'author', + 'activity', + 'instance', + 'priority', + 'status', + 'tries', + 'last' + ], + self::TABLE_STREAM => [ + 'nid', + 'id', + 'id_prim', + 'type', + 'subtype', + 'to', + 'to_array', + 'cc', + 'bcc', + 'content', + 'summary', + 'published', + 'published_time', + 'attributed_to', + 'attributed_to_prim', + 'in_reply_to', + 'in_reply_to_prim', + 'activity_id', + 'object_id', + 'object_id_prim', + 'hashtags', + 'details', + 'source', + 'instances', + 'attachments', + 'cache', + 'creation', + 'local', + 'filter_duplicate' + ], + self::TABLE_STREAM_ACTIONS => [ + 'id', + 'actor_id', + 'actor_id_prim', + 'stream_id', + 'stream_id_prim', + 'liked', + 'boosted', + 'replied', + 'values' + ], + self::TABLE_STREAM_DEST => [ + 'stream_id', + 'actor_id', + 'type', + 'subtype' + ], + self::TABLE_STREAM_QUEUE => [ + 'id', + 'token', + 'stream_id', + 'type', + 'status', + 'tries', + 'last' + ], + self::TABLE_STREAM_TAGS => [ + 'stream_id', + 'hashtag' + ], ]; protected LoggerInterface $logger; @@ -156,32 +315,6 @@ class CoreRequestBuilder { /** - * @param string $id - * - * @return string - * @deprecated |