diff --git a/server/setup.py b/server/setup.py index 47e0e5e1..ddd1c3fe 100644 --- a/server/setup.py +++ b/server/setup.py @@ -3,7 +3,7 @@ setup( name='QRServer', - version='1.1.0', + version='1.2.0', author='Fruktus, Kamil Jarosz', package_dir={'': 'src'}, packages=find_packages('src'), diff --git a/server/src/QRServer/db/migrations.py b/server/src/QRServer/db/migrations.py index 767e611c..82a45a50 100644 --- a/server/src/QRServer/db/migrations.py +++ b/server/src/QRServer/db/migrations.py @@ -27,6 +27,7 @@ async def execute_migrations(c, config: Config, max_version=None): _migration_upgrade_to_v6, _migration_upgrade_to_v7, _migration_upgrade_to_v8, + _migration_upgrade_to_v9, ] for i in range(max_version if max_version and max_version <= len(migrations) else len(migrations)): @@ -255,3 +256,23 @@ async def _migration_upgrade_to_v8(c, _config): ) await _set_version(c, 8) + + +async def _migration_upgrade_to_v9(c, _config): + await c.execute( + "create table match_recordings (" + " match_id varchar," + " seq integer," + " timestamp integer," + " sender_user_id varchar," + " receiver_user_id varchar," + " message_type integer," + " message varchar," + " primary key(match_id, seq)," + " foreign key(match_id) references matches (id)" + " foreign key(sender_user_id) references users (id)" + " foreign key(receiver_user_id) references users (id)" + ")" + ) + + await _set_version(c, 9) diff --git a/server/tests/test_db.py b/server/tests/test_db.py index 8261c37c..fa51e5d8 100644 --- a/server/tests/test_db.py +++ b/server/tests/test_db.py @@ -679,6 +679,27 @@ async def test_migration_v8(self): self.assertEqual(table_info[1][:3], (1, 'duel_idx', 'INTEGER')) self.assertEqual(table_info[2][:3], (2, 'match_id', 'varchar')) + async def test_migration_v9(self): + await migrations.execute_migrations(self.c, self.dbconn.config, 8) + + table_names = await self.get_table_names() + self.assertNotIn('match_recordings', table_names) + + await migrations.execute_migrations(self.c, self.dbconn.config, 9) + + table_names = await self.get_table_names() + self.assertIn('match_recordings', table_names) + + table_info = await self.get_table_info('match_recordings') + self.assertEqual(len(table_info), 7) + self.assertEqual(table_info[0][:3], (0, 'match_id', 'varchar')) + self.assertEqual(table_info[1][:3], (1, 'seq', 'INTEGER')) + self.assertEqual(table_info[2][:3], (2, 'timestamp', 'INTEGER')) + self.assertEqual(table_info[3][:3], (3, 'sender_user_id', 'varchar')) + self.assertEqual(table_info[4][:3], (4, 'receiver_user_id', 'varchar')) + self.assertEqual(table_info[5][:3], (5, 'message_type', 'INTEGER')) + self.assertEqual(table_info[6][:3], (6, 'message', 'varchar')) + class DbTournamentsTest(unittest.IsolatedAsyncioTestCase): async def asyncSetUp(self):