1<?php
2
3declare(strict_types=1);
4/**
5 * @copyright Copyright (c) 2020, Joas Schilling <coding@schilljs.com>
6 *
7 * @author Joas Schilling <coding@schilljs.com>
8 *
9 * @license GNU AGPL version 3 or any later version
10 *
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Affero General Public License as
13 * published by the Free Software Foundation, either version 3 of the
14 * License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Affero General Public License for more details.
20 *
21 * You should have received a copy of the GNU Affero General Public License
22 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 *
24 */
25
26namespace OCA\Talk\Migration;
27
28use Closure;
29use OCP\DB\ISchemaWrapper;
30use OCP\Migration\IOutput;
31use OCP\Migration\SimpleMigrationStep;
32
33class Version8000Date20200331144101 extends SimpleMigrationStep {
34	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ISchemaWrapper {
35		/** @var ISchemaWrapper $schema */
36		$schema = $schemaClosure();
37
38		$table = $schema->getTable('talk_participants');
39		if (!$table->hasIndex('tp_ident')) {
40			$table->addUniqueIndex(['room_id', 'user_id', 'session_id'], 'tp_ident');
41		}
42		if (!$table->hasIndex('tp_room')) {
43			$table->addIndex(['room_id'], 'tp_room');
44		}
45		if (!$table->hasIndex('tp_last_ping')) {
46			$table->addIndex(['last_ping'], 'tp_last_ping');
47		}
48		if (!$table->hasIndex('tp_in_call')) {
49			$table->addIndex(['in_call'], 'tp_in_call');
50		}
51
52		return $schema;
53	}
54}
55