Make sure a report doesn't get deleted upon the deletion of its video
[oweals/peertube.git] / server / initializers / migrations / 0490-abuse-video.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 }): Promise<void> {
8
9   const deletedVideo = {
10     type: Sequelize.JSONB,
11     allowNull: true
12   }
13   await utils.queryInterface.addColumn('videoAbuse', 'deletedVideo', deletedVideo)
14   await utils.sequelize.query(`ALTER TABLE "videoAbsue" ALTER COLUMN "videoId" DROP NOT NULL;`)
15   await utils.sequelize.query(`ALTER TABLE "videoAbuse" DROP CONSTRAINT IF EXISTS "videoAbuse_videoId_fkey";`)
16   await utils.sequelize.query(`ALTER TABLE "videoAbuse" ADD CONSTRAINT "videoAbuse_videoId_fkey" 
17   FOREIGN KEY ("videoId") REFERENCES video(id) ON UPDATE CASCADE ON DELETE SET NULL;`)
18
19 }
20
21 function down (options) {
22   throw new Error('Not implemented.')
23 }
24
25 export {
26   up,
27   down
28 }