]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Fix latest migrations
authorChocobozzz <me@florianbigard.com>
Fri, 19 Feb 2021 07:41:32 +0000 (08:41 +0100)
committerChocobozzz <me@florianbigard.com>
Fri, 19 Feb 2021 07:41:32 +0000 (08:41 +0100)
We made an historical mistake: we have a unique key on videoId,
resolution AND fps. But the filenames and torrent filenames do not have
fps in their name

Remove these duplicate entries

server/initializers/constants.ts
server/initializers/migrations/0600-duplicate-video-files.ts [new file with mode: 0644]

index fbedc21647692f00d10de761f202cb9cc7c5191e..f0123e87c7ede0737c5c2c3284452bdcf1af8cbc 100644 (file)
@@ -24,7 +24,7 @@ import { CONFIG, registerConfigChangedHandler } from './config'
 
 // ---------------------------------------------------------------------------
 
-const LAST_MIGRATION_VERSION = 595
+const LAST_MIGRATION_VERSION = 600
 
 // ---------------------------------------------------------------------------
 
diff --git a/server/initializers/migrations/0600-duplicate-video-files.ts b/server/initializers/migrations/0600-duplicate-video-files.ts
new file mode 100644 (file)
index 0000000..92d774a
--- /dev/null
@@ -0,0 +1,33 @@
+import * as Sequelize from 'sequelize'
+
+async function up (utils: {
+  transaction: Sequelize.Transaction
+  queryInterface: Sequelize.QueryInterface
+  sequelize: Sequelize.Sequelize
+  db: any
+}): Promise<void> {
+
+  {
+    const query = 'DELETE FROM "videoFile" f1 ' +
+      'USING (SELECT MIN(id) as id, "torrentFilename" FROM "videoFile" GROUP BY "torrentFilename" HAVING COUNT(*) > 1) f2 ' +
+      'WHERE f1."torrentFilename" = f2."torrentFilename" AND f1.id <> f2.id'
+    await utils.sequelize.query(query)
+  }
+
+  {
+    const query = 'DELETE FROM "videoFile" f1 ' +
+      'USING (SELECT MIN(id) as id, "filename" FROM "videoFile" GROUP BY "filename" HAVING COUNT(*) > 1) f2 ' +
+      'WHERE f1."filename" = f2."filename" AND f1.id <> f2.id'
+    await utils.sequelize.query(query)
+  }
+
+}
+
+function down (options) {
+  throw new Error('Not implemented.')
+}
+
+export {
+  up,
+  down
+}