Browse Source
Move database schema to migration
Move database schema to migration
Signed-off-by: Joas Schilling <coding@schilljs.com>pull/352/head
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
3 changed files with 127 additions and 119 deletions
@ -1,118 +0,0 @@ |
|||
<?xml version="1.0" encoding="ISO-8859-1" ?> |
|||
<database> |
|||
<name>*dbname*</name> |
|||
<create>true</create> |
|||
<overwrite>false</overwrite> |
|||
<charset>utf8</charset> |
|||
<table> |
|||
<name>*dbprefix*spreedme_messages</name> |
|||
<declaration> |
|||
<field> |
|||
<name>id</name> |
|||
<type>integer</type> |
|||
<default>0</default> |
|||
<notnull>true</notnull> |
|||
<autoincrement>1</autoincrement> |
|||
<length>4</length> |
|||
</field> |
|||
<field> |
|||
<name>sender</name> |
|||
<type>text</type> |
|||
<notnull>true</notnull> |
|||
<length>255</length> |
|||
</field> |
|||
<field> |
|||
<name>recipient</name> |
|||
<type>text</type> |
|||
<notnull>true</notnull> |
|||
<length>255</length> |
|||
</field> |
|||
<field> |
|||
<name>sessionId</name> |
|||
<type>text</type> |
|||
<notnull>true</notnull> |
|||
<length>255</length> |
|||
</field> |
|||
<field> |
|||
<name>object</name> |
|||
<type>clob</type> |
|||
<notnull>true</notnull> |
|||
</field> |
|||
<field> |
|||
<name>timestamp</name> |
|||
<type>integer</type> |
|||
<notnull>true</notnull> |
|||
</field> |
|||
</declaration> |
|||
</table> |
|||
<table> |
|||
<name>*dbprefix*spreedme_rooms</name> |
|||
<declaration> |
|||
<field> |
|||
<name>id</name> |
|||
<type>integer</type> |
|||
<default>0</default> |
|||
<notnull>true</notnull> |
|||
<autoincrement>1</autoincrement> |
|||
<length>4</length> |
|||
</field> |
|||
<field> |
|||
<name>name</name> |
|||
<type>text</type> |
|||
<default/> |
|||
<notnull>false</notnull> |
|||
<length>255</length> |
|||
</field> |
|||
<field> |
|||
<name>token</name> |
|||
<type>text</type> |
|||
<default/> |
|||
<notnull>false</notnull> |
|||
<length>32</length> |
|||
</field> |
|||
<field> |
|||
<name>type</name> |
|||
<type>integer</type> |
|||
<default>0</default> |
|||
<notnull>true</notnull> |
|||
<length>4</length> |
|||
</field> |
|||
|
|||
<index> |
|||
<name>unique_token</name> |
|||
<!-- Cant make it unique because the migration only runs afterwards: <unique>true</unique> --> |
|||
<field> |
|||
<name>token</name> |
|||
</field> |
|||
</index> |
|||
</declaration> |
|||
</table> |
|||
<table> |
|||
<name>*dbprefix*spreedme_room_participants</name> |
|||
<declaration> |
|||
<field> |
|||
<name>userId</name> |
|||
<type>text</type> |
|||
<notnull>false</notnull> |
|||
<length>255</length> |
|||
</field> |
|||
<field> |
|||
<name>roomId</name> |
|||
<type>integer</type> |
|||
<notnull>true</notnull> |
|||
<length>4</length> |
|||
</field> |
|||
<field> |
|||
<name>lastPing</name> |
|||
<type>integer</type> |
|||
<notnull>true</notnull> |
|||
</field> |
|||
<field> |
|||
<name>sessionId</name> |
|||
<type>text</type> |
|||
<notnull>true</notnull> |
|||
<length>255</length> |
|||
</field> |
|||
</declaration> |
|||
</table> |
|||
</database> |
|||
@ -0,0 +1,126 @@ |
|||
<?php |
|||
/** |
|||
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @author Joas Schilling <coding@schilljs.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\Schema\Schema; |
|||
use Doctrine\DBAL\Types\Type; |
|||
use OCP\Migration\SimpleMigrationStep; |
|||
use OCP\Migration\IOutput; |
|||
|
|||
class Version2000001Date20170707093535 extends SimpleMigrationStep { |
|||
|
|||
/** |
|||
* @param IOutput $output |
|||
* @param \Closure $schemaClosure The `\Closure` returns a `Schema` |
|||
* @param array $options |
|||
* @return null|Schema |
|||
* @since 13.0.0 |
|||
*/ |
|||
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) { |
|||
/** @var Schema $schema */ |
|||
$schema = $schemaClosure(); |
|||
|
|||
if (!$schema->hasTable('spreedme_messages')) { |
|||
$table = $schema->createTable('spreedme_messages'); |
|||
|
|||
$table->addColumn('id', Type::INTEGER, [ |
|||
'autoincrement' => true, |
|||
'notnull' => true, |
|||
'length' => 11, |
|||
]); |
|||
$table->addColumn('sender', Type::STRING, [ |
|||
'notnull' => true, |
|||
'length' => 255, |
|||
]); |
|||
$table->addColumn('recipient', Type::STRING, [ |
|||
'notnull' => true, |
|||
'length' => 255, |
|||
]); |
|||
$table->addColumn('sessionId', Type::STRING, [ |
|||
'notnull' => true, |
|||
'length' => 255, |
|||
]); |
|||
$table->addColumn('object', Type::TEXT, [ |
|||
'notnull' => true, |
|||
]); |
|||
$table->addColumn('timestamp', Type::INTEGER, [ |
|||
'notnull' => true, |
|||
'length' => 11, |
|||
]); |
|||
|
|||
$table->setPrimaryKey(['id']); |
|||
} |
|||
|
|||
if (!$schema->hasTable('spreedme_rooms')) { |
|||
$table = $schema->createTable('spreedme_rooms'); |
|||
|
|||
$table->addColumn('id', Type::INTEGER, [ |
|||
'autoincrement' => true, |
|||
'notnull' => true, |
|||
'length' => 11, |
|||
]); |
|||
$table->addColumn('name', Type::STRING, [ |
|||
'notnull' => false, |
|||
'length' => 255, |
|||
'default' => '', |
|||
]); |
|||
$table->addColumn('token', Type::STRING, [ |
|||
'notnull' => false, |
|||
'length' => 32, |
|||
'default' => '', |
|||
]); |
|||
$table->addColumn('type', Type::INTEGER, [ |
|||
'notnull' => true, |
|||
'length' => 11, |
|||
]); |
|||
|
|||
$table->setPrimaryKey(['id']); |
|||
// FIXME: Couldn't make it unique because the migration only ran afterwards on updates
|
|||
$table->addIndex(['token'], 'unique_token'); |
|||
} |
|||
|
|||
if (!$schema->hasTable('spreedme_room_participants')) { |
|||
$table = $schema->createTable('spreedme_room_participants'); |
|||
|
|||
$table->addColumn('userId', Type::STRING, [ |
|||
'notnull' => false, |
|||
'length' => 255, |
|||
]); |
|||
$table->addColumn('roomId', Type::INTEGER, [ |
|||
'notnull' => true, |
|||
'length' => 11, |
|||
]); |
|||
$table->addColumn('lastPing', Type::INTEGER, [ |
|||
'notnull' => true, |
|||
'length' => 11, |
|||
]); |
|||
$table->addColumn('sessionId', Type::STRING, [ |
|||
'notnull' => true, |
|||
'length' => 255, |
|||
]); |
|||
} |
|||
|
|||
return $schema; |
|||
} |
|||
|
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue