Browse Source

Add columns "object_type" and "object_id" to table "talk_rooms"

Note that in Oracle string fields have to be nullable to be able to set
empty strings on them.

As the table "comments" also has columns named "object_type" and
"object_id" they must be namespaced when the last comment is included in
the room information; otherwise the created comment object would have
the object type and id from the room instead of from the comment.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/1049/head
Daniel Calviño Sánchez 7 years ago
parent
commit
29a72c3ede
  1. 2
      appinfo/info.xml
  2. 6
      lib/Manager.php
  3. 55
      lib/Migration/Version3003Date20180720162342.php

2
appinfo/info.xml

@ -17,7 +17,7 @@ And in the works for the [coming versions](https://github.com/nextcloud/spreed/m
]]></description>
<version>3.99.8</version>
<version>3.99.9</version>
<licence>agpl</licence>
<author>Daniel Calviño Sánchez</author>

6
lib/Manager.php

@ -98,6 +98,8 @@ class Manager {
if (!empty($row['comment_id'])) {
$lastMessage = $this->commentsManager->getCommentFromData(array_merge($row, [
'id' => $row['comment_id'],
'object_type' => $row['comment_object_type'],
'object_id' => $row['comment_object_id'],
'parent_id' => '',
'topmost_parent_id' => '',
'latest_child_timestamp' => null,
@ -140,7 +142,9 @@ class Manager {
if ($includeLastMessage) {
$query->leftJoin('r','comments', 'c', $query->expr()->eq('r.last_message', 'c.id'));
$query->selectAlias('c.id', 'comment_id');
$query->addSelect('c.actor_id', 'c.actor_type', 'c.message', 'c.creation_timestamp');
$query->addSelect('c.actor_id', 'c.actor_type', 'c.message', 'c.creation_timestamp', 'c.object_type', 'c.object_id');
$query->selectAlias('c.object_type', 'comment_object_type');
$query->selectAlias('c.object_id', 'comment_object_id');
}
$result = $query->execute();

55
lib/Migration/Version3003Date20180720162342.php

@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/**
*
* @copyright Copyright (c) 2018, Daniel Calviño Sánchez (danxuliu@gmail.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\Spreed\Migration;
use Doctrine\DBAL\Types\Type;
use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
class Version3003Date20180720162342 extends SimpleMigrationStep {
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('talk_rooms');
if (!$table->hasColumn('object_type')) {
$table->addColumn('object_type', Type::STRING, [
'notnull' => false,
'length' => 64,
'default' => '',
]);
$table->addColumn('object_id', Type::STRING, [
'notnull' => false,
'length' => 64,
'default' => '',
]);
}
return $schema;
}
}
Loading…
Cancel
Save