1 import * as Sequelize from 'sequelize'
3 async function up (utils: {
4 transaction: Sequelize.Transaction
5 queryInterface: Sequelize.QueryInterface
6 sequelize: Sequelize.Sequelize
10 CREATE TABLE IF NOT EXISTS "videoLiveReplaySetting" (
12 "privacy" INTEGER NOT NULL,
13 "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL,
14 "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL,
19 await utils.sequelize.query(query, { transaction : utils.transaction })
23 await utils.queryInterface.addColumn('videoLive', 'replaySettingId', {
24 type: Sequelize.INTEGER,
28 model: 'videoLiveReplaySetting',
32 }, { transaction: utils.transaction })
36 await utils.queryInterface.addColumn('videoLiveSession', 'replaySettingId', {
37 type: Sequelize.INTEGER,
41 model: 'videoLiveReplaySetting',
45 }, { transaction: utils.transaction })
50 SELECT live."id", v."privacy"
52 INNER JOIN "video" v ON live."videoId" = v."id"
53 WHERE live."saveReplay" = true
56 const videoLives = await utils.sequelize.query<{ id: number, privacy: number }>(
58 { type: Sequelize.QueryTypes.SELECT, transaction: utils.transaction }
61 for (const videoLive of videoLives) {
63 WITH new_replay_setting AS (
64 INSERT INTO "videoLiveReplaySetting" ("privacy", "createdAt", "updatedAt")
65 VALUES (:privacy, NOW(), NOW())
68 UPDATE "videoLive" SET "replaySettingId" = (SELECT id FROM new_replay_setting)
73 replacements: { privacy: videoLive.privacy, id: videoLive.id },
74 type: Sequelize.QueryTypes.UPDATE,
75 transaction: utils.transaction
78 await utils.sequelize.query(query, options)
84 SELECT session."id", v."privacy"
85 FROM "videoLiveSession" session
86 INNER JOIN "video" v ON session."liveVideoId" = v."id"
87 WHERE session."saveReplay" = true
88 AND session."liveVideoId" IS NOT NULL;
91 const videoLiveSessions = await utils.sequelize.query<{ id: number, privacy: number }>(
93 { type: Sequelize.QueryTypes.SELECT, transaction: utils.transaction }
96 for (const videoLive of videoLiveSessions) {
98 WITH new_replay_setting AS (
99 INSERT INTO "videoLiveReplaySetting" ("privacy", "createdAt", "updatedAt")
100 VALUES (:privacy, NOW(), NOW())
103 UPDATE "videoLiveSession" SET "replaySettingId" = (SELECT id FROM new_replay_setting)
108 replacements: { privacy: videoLive.privacy, id: videoLive.id },
109 type: Sequelize.QueryTypes.UPDATE,
110 transaction: utils.transaction
113 await utils.sequelize.query(query, options)
118 function down (options) {
119 throw new Error('Not implemented.')