You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
main
${ noResults }
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
|
|||
}
|