Merge branch 'release/2.1.0' into develop
[oweals/peertube.git] / server / initializers / migrations / 0305-fix-unfederated-videos.ts
1 import * as Sequelize from 'sequelize'
2
3 async function up (utils: {
4   transaction: Sequelize.Transaction
5   queryInterface: Sequelize.QueryInterface
6   sequelize: Sequelize.Sequelize
7   db: any
8 }): Promise<void> {
9   {
10     const query = `INSERT INTO "videoShare" (url, "actorId", "videoId", "createdAt", "updatedAt") ` +
11       `(` +
12         `SELECT ` +
13         `video.url || '/announces/' || "videoChannel"."actorId" as url, ` +
14         `"videoChannel"."actorId" AS "actorId", ` +
15         `"video"."id" AS "videoId", ` +
16         `NOW() AS "createdAt", ` +
17         `NOW() AS "updatedAt" ` +
18         `FROM video ` +
19         `INNER JOIN "videoChannel" ON "video"."channelId" = "videoChannel"."id" ` +
20         `WHERE "video"."remote" = false AND "video"."privacy" != 3 AND "video"."state" = 1` +
21       `) ` +
22       `ON CONFLICT DO NOTHING`
23
24     await utils.sequelize.query(query)
25   }
26
27   {
28     const query = `INSERT INTO "videoShare" (url, "actorId", "videoId", "createdAt", "updatedAt") ` +
29       `(` +
30         `SELECT ` +
31         `video.url || '/announces/' || (SELECT id FROM actor WHERE "preferredUsername" = 'peertube' ORDER BY id ASC LIMIT 1) as url, ` +
32         `(SELECT id FROM actor WHERE "preferredUsername" = 'peertube' ORDER BY id ASC LIMIT 1) AS "actorId", ` +
33         `"video"."id" AS "videoId", ` +
34         `NOW() AS "createdAt", ` +
35         `NOW() AS "updatedAt" ` +
36         `FROM video ` +
37         `WHERE "video"."remote" = false AND "video"."privacy" != 3 AND "video"."state" = 1` +
38       `) ` +
39       `ON CONFLICT DO NOTHING`
40
41     await utils.sequelize.query(query)
42   }
43 }
44
45 function down (options) {
46   throw new Error('Not implemented.')
47 }
48
49 export {
50   up,
51   down
52 }