mirror of
https://github.com/friendica/friendica
synced 2025-04-25 03:50:12 +00:00
Split DBStructure & View to avoid DB-calls and dependencies for basic operations
- new "Definition" classes vor DB and Views - new "Writer" classes to create SQL definitions for DB and Views - DBStructure & View are responsible to execute DB-querys
This commit is contained in:
parent
a2c929d128
commit
a910fd8864
30 changed files with 898 additions and 608 deletions
|
@ -466,7 +466,7 @@ class APContact
|
|||
}
|
||||
|
||||
// Limit the length on incoming fields
|
||||
$apcontact = DBStructure::getFieldsForTable('apcontact', $apcontact);
|
||||
$apcontact = DI::dbaDefinition()->getFieldsForTable('apcontact', $apcontact);
|
||||
|
||||
if (DBA::exists('apcontact', ['url' => $apcontact['url']])) {
|
||||
DBA::update('apcontact', $apcontact, ['url' => $apcontact['url']]);
|
||||
|
|
|
@ -23,7 +23,6 @@ namespace Friendica\Model;
|
|||
|
||||
use Friendica\Core\System;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
use Friendica\Core\Storage\Exception\InvalidClassStorageException;
|
||||
use Friendica\Core\Storage\Exception\ReferenceStorageException;
|
||||
|
@ -46,7 +45,7 @@ class Attach
|
|||
*/
|
||||
private static function getFields(): array
|
||||
{
|
||||
$allfields = DBStructure::definition(DI::app()->getBasePath(), false);
|
||||
$allfields = DI::dbaDefinition()->getAll();
|
||||
$fields = array_keys($allfields['attach']['fields']);
|
||||
array_splice($fields, array_search('data', $fields), 1);
|
||||
return $fields;
|
||||
|
|
|
@ -28,6 +28,7 @@ use Friendica\Core\System;
|
|||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\ItemURI;
|
||||
use PDOException;
|
||||
|
@ -129,7 +130,7 @@ class User
|
|||
$fields['rel'] = Contact::SELF;
|
||||
}
|
||||
|
||||
return DBStructure::getFieldsForTable('user-contact', $fields);
|
||||
return DI::dbaDefinition()->getFieldsForTable('user-contact', $fields);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2075,7 +2075,7 @@ class GServer
|
|||
*/
|
||||
public static function update(array $fields, array $condition): bool
|
||||
{
|
||||
$fields = DBStructure::getFieldsForTable('gserver', $fields);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('gserver', $fields);
|
||||
|
||||
return DBA::update('gserver', $fields, $condition);
|
||||
}
|
||||
|
|
|
@ -250,7 +250,7 @@ class Photo
|
|||
*/
|
||||
private static function getFields(): array
|
||||
{
|
||||
$allfields = DBStructure::definition(DI::app()->getBasePath(), false);
|
||||
$allfields = DI::dbaDefinition()->getAll();
|
||||
$fields = array_keys($allfields['photo']['fields']);
|
||||
array_splice($fields, array_search('data', $fields), 1);
|
||||
return $fields;
|
||||
|
|
|
@ -27,6 +27,7 @@ use Friendica\Core\System;
|
|||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
use Friendica\Protocol\Activity;
|
||||
|
||||
class Post
|
||||
|
@ -45,7 +46,7 @@ class Post
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post', $data);
|
||||
|
||||
// Additionally assign the key fields
|
||||
$fields['uri-id'] = $uri_id;
|
||||
|
@ -524,7 +525,7 @@ class Post
|
|||
// To ensure the data integrity we do it in an transaction
|
||||
DBA::transaction();
|
||||
|
||||
$update_fields = DBStructure::getFieldsForTable('post-user', $fields);
|
||||
$update_fields = DI::dbaDefinition()->getFieldsForTable('post-user', $fields);
|
||||
if (!empty($update_fields)) {
|
||||
$affected_count = 0;
|
||||
$posts = DBA::select('post-user-view', ['post-user-id'], $condition);
|
||||
|
@ -541,7 +542,7 @@ class Post
|
|||
$affected = $affected_count;
|
||||
}
|
||||
|
||||
$update_fields = DBStructure::getFieldsForTable('post-content', $fields);
|
||||
$update_fields = DI::dbaDefinition()->getFieldsForTable('post-content', $fields);
|
||||
if (!empty($update_fields)) {
|
||||
$affected_count = 0;
|
||||
$posts = DBA::select('post-user-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
|
||||
|
@ -558,7 +559,7 @@ class Post
|
|||
$affected = max($affected, $affected_count);
|
||||
}
|
||||
|
||||
$update_fields = DBStructure::getFieldsForTable('post', $fields);
|
||||
$update_fields = DI::dbaDefinition()->getFieldsForTable('post', $fields);
|
||||
if (!empty($update_fields)) {
|
||||
$affected_count = 0;
|
||||
$posts = DBA::select('post-user-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
|
||||
|
@ -592,7 +593,7 @@ class Post
|
|||
$affected = max($affected, $affected_count);
|
||||
}
|
||||
|
||||
$update_fields = DBStructure::getFieldsForTable('post-thread', $fields);
|
||||
$update_fields = DI::dbaDefinition()->getFieldsForTable('post-thread', $fields);
|
||||
if (!empty($update_fields)) {
|
||||
$affected_count = 0;
|
||||
$posts = DBA::select('post-user-view', ['uri-id'], $thread_condition, ['group_by' => ['uri-id']]);
|
||||
|
@ -609,7 +610,7 @@ class Post
|
|||
$affected = max($affected, $affected_count);
|
||||
}
|
||||
|
||||
$update_fields = DBStructure::getFieldsForTable('post-thread-user', $fields);
|
||||
$update_fields = DI::dbaDefinition()->getFieldsForTable('post-thread-user', $fields);
|
||||
if (!empty($update_fields)) {
|
||||
$affected_count = 0;
|
||||
$posts = DBA::select('post-user-view', ['post-user-id'], $thread_condition);
|
||||
|
|
|
@ -26,6 +26,7 @@ use Friendica\Core\Protocol;
|
|||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Post;
|
||||
|
||||
class Content
|
||||
|
@ -44,7 +45,7 @@ class Content
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-content', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-content', $data);
|
||||
|
||||
// Additionally assign the key fields
|
||||
$fields['uri-id'] = $uri_id;
|
||||
|
@ -67,7 +68,7 @@ class Content
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-content', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-content', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace Friendica\Model\Post;
|
|||
use Friendica\Core\Logger;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Post;
|
||||
|
||||
class History
|
||||
|
@ -37,7 +37,7 @@ class History
|
|||
*/
|
||||
public static function add(int $uri_id, array $item)
|
||||
{
|
||||
$allfields = DBStructure::definition('', false);
|
||||
$allfields = DI::dbaDefinition()->getAll();
|
||||
$fields = array_keys($allfields['post-history']['fields']);
|
||||
|
||||
$post = Post::selectFirstPost($fields, ['uri-id' => $uri_id]);
|
||||
|
@ -52,7 +52,7 @@ class History
|
|||
}
|
||||
|
||||
$update = false;
|
||||
$changed = DBStructure::getFieldsForTable('post-history', $item);
|
||||
$changed = DI::dbaDefinition()->getFieldsForTable('post-history', $item);
|
||||
unset($changed['uri-id']);
|
||||
unset($changed['edited']);
|
||||
foreach ($changed as $field => $content) {
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace Friendica\Model\Post;
|
|||
use BadMethodCallException;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
|
||||
class Question
|
||||
{
|
||||
|
@ -42,7 +43,7 @@ class Question
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-question', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-question', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace Friendica\Model\Post;
|
|||
use BadMethodCallException;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
|
||||
class QuestionOption
|
||||
{
|
||||
|
@ -43,7 +44,7 @@ class QuestionOption
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-question-option', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-question-option', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
|
@ -25,6 +25,7 @@ use \BadMethodCallException;
|
|||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
|
||||
class Thread
|
||||
{
|
||||
|
@ -42,7 +43,7 @@ class Thread
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-thread', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-thread', $data);
|
||||
|
||||
// Additionally assign the key fields
|
||||
$fields['uri-id'] = $uri_id;
|
||||
|
@ -65,7 +66,7 @@ class Thread
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-thread', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-thread', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
|
@ -25,6 +25,7 @@ use \BadMethodCallException;
|
|||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
|
||||
class ThreadUser
|
||||
{
|
||||
|
@ -43,7 +44,7 @@ class ThreadUser
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-thread-user', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-thread-user', $data);
|
||||
|
||||
// Additionally assign the key fields
|
||||
$fields['uri-id'] = $uri_id;
|
||||
|
@ -68,7 +69,7 @@ class ThreadUser
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-thread-user', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-thread-user', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
|
@ -25,6 +25,7 @@ use Friendica\Database\DBA;
|
|||
use \BadMethodCallException;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBStructure;
|
||||
use Friendica\DI;
|
||||
|
||||
class User
|
||||
{
|
||||
|
@ -47,7 +48,7 @@ class User
|
|||
return false;
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-user', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-user', $data);
|
||||
|
||||
// Additionally assign the key fields
|
||||
$fields['uri-id'] = $uri_id;
|
||||
|
@ -81,7 +82,7 @@ class User
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-user', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-user', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
|
@ -67,7 +67,7 @@ class UserNotification
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-user-notification', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-user-notification', $data);
|
||||
|
||||
$fields['uri-id'] = $uri_id;
|
||||
$fields['uid'] = $uid;
|
||||
|
@ -91,7 +91,7 @@ class UserNotification
|
|||
throw new BadMethodCallException('Empty URI_id');
|
||||
}
|
||||
|
||||
$fields = DBStructure::getFieldsForTable('post-user-notification', $data);
|
||||
$fields = DI::dbaDefinition()->getFieldsForTable('post-user-notification', $data);
|
||||
|
||||
// Remove the key fields
|
||||
unset($fields['uri-id']);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue