mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import * as Sequelize from 'sequelize'
 | |
| 
 | |
| async function up (utils: {
 | |
|   transaction: Sequelize.Transaction
 | |
|   queryInterface: Sequelize.QueryInterface
 | |
|   sequelize: Sequelize.Sequelize
 | |
| }): Promise<void> {
 | |
|   await utils.queryInterface.renameTable('videoAbuse', 'abuse')
 | |
| 
 | |
|   await utils.sequelize.query(`
 | |
|     ALTER TABLE "abuse"
 | |
|     ADD COLUMN "flaggedAccountId" INTEGER REFERENCES "account" ("id") ON DELETE SET NULL ON UPDATE CASCADE
 | |
|   `)
 | |
| 
 | |
|   await utils.sequelize.query(`
 | |
|     UPDATE "abuse" SET "videoId" = NULL
 | |
|     WHERE "videoId" NOT IN (SELECT "id" FROM "video")
 | |
|   `)
 | |
| 
 | |
|   await utils.sequelize.query(`
 | |
|     UPDATE "abuse" SET "flaggedAccountId" = "videoChannel"."accountId"
 | |
|     FROM "video" INNER JOIN "videoChannel" ON "video"."channelId" = "videoChannel"."id"
 | |
|     WHERE "abuse"."videoId" = "video"."id"
 | |
|   `)
 | |
| 
 | |
|   await utils.sequelize.query('DROP INDEX IF EXISTS video_abuse_video_id;')
 | |
|   await utils.sequelize.query('DROP INDEX IF EXISTS video_abuse_reporter_account_id;')
 | |
| 
 | |
|   await utils.sequelize.query(`
 | |
|     CREATE TABLE IF NOT EXISTS "videoAbuse" (
 | |
|       "id" serial,
 | |
|       "startAt" integer DEFAULT NULL,
 | |
|       "endAt" integer DEFAULT NULL,
 | |
|       "deletedVideo" jsonb DEFAULT NULL,
 | |
|       "abuseId" integer NOT NULL REFERENCES "abuse" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
 | |
|       "videoId" integer REFERENCES "video" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
 | |
|       "createdAt" TIMESTAMP WITH time zone NOT NULL,
 | |
|       "updatedAt" timestamp WITH time zone NOT NULL,
 | |
|       PRIMARY KEY ("id")
 | |
|     );
 | |
|   `)
 | |
| 
 | |
|   await utils.sequelize.query(`
 | |
|     CREATE TABLE IF NOT EXISTS "commentAbuse" (
 | |
|       "id" serial,
 | |
|       "abuseId" integer NOT NULL REFERENCES "abuse" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
 | |
|       "videoCommentId" integer REFERENCES "videoComment" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
 | |
|       "createdAt" timestamp WITH time zone NOT NULL,
 | |
|       "updatedAt" timestamp WITH time zone NOT NULL,
 | |
|       PRIMARY KEY ("id")
 | |
|     );
 | |
|   `)
 | |
| 
 | |
|   await utils.sequelize.query(`
 | |
|       INSERT INTO "videoAbuse" ("startAt", "endAt", "deletedVideo", "abuseId", "videoId", "createdAt", "updatedAt")
 | |
|       SELECT "abuse"."startAt", "abuse"."endAt", "abuse"."deletedVideo", "abuse"."id", "abuse"."videoId",
 | |
|       "abuse"."createdAt", "abuse"."updatedAt"
 | |
|       FROM "abuse"
 | |
|   `)
 | |
| 
 | |
|   await utils.queryInterface.removeColumn('abuse', 'startAt')
 | |
|   await utils.queryInterface.removeColumn('abuse', 'endAt')
 | |
|   await utils.queryInterface.removeColumn('abuse', 'deletedVideo')
 | |
|   await utils.queryInterface.removeColumn('abuse', 'videoId')
 | |
| 
 | |
|   await utils.sequelize.query('DROP INDEX IF EXISTS user_notification_video_abuse_id')
 | |
|   await utils.queryInterface.renameColumn('userNotification', 'videoAbuseId', 'abuseId')
 | |
| 
 | |
|   await utils.sequelize.query(
 | |
|     'ALTER INDEX IF EXISTS "videoAbuse_pkey" RENAME TO "abuse_pkey"'
 | |
|   )
 | |
| 
 | |
|   await utils.queryInterface.renameColumn('userNotificationSetting', 'videoAbuseAsModerator', 'abuseAsModerator')
 | |
| }
 | |
| 
 | |
| function down (options) {
 | |
|   throw new Error('Not implemented.')
 | |
| }
 | |
| 
 | |
| export {
 | |
|   up,
 | |
|   down
 | |
| }
 |