]>
Commit | Line | Data |
---|---|---|
d0800f76 | 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 | await utils.queryInterface.addColumn('actorImage', 'actorId', { | |
11 | type: Sequelize.INTEGER, | |
12 | defaultValue: null, | |
13 | allowNull: true, | |
14 | references: { | |
15 | model: 'actor', | |
16 | key: 'id' | |
17 | }, | |
18 | onDelete: 'CASCADE' | |
19 | }, { transaction: utils.transaction }) | |
20 | ||
21 | // Avatars | |
22 | { | |
23 | const query = `UPDATE "actorImage" SET "actorId" = (SELECT "id" FROM "actor" WHERE "actor"."avatarId" = "actorImage"."id") ` + | |
24 | `WHERE "type" = 1` | |
25 | await utils.sequelize.query(query, { type: Sequelize.QueryTypes.UPDATE, transaction: utils.transaction }) | |
26 | } | |
27 | ||
28 | // Banners | |
29 | { | |
30 | const query = `UPDATE "actorImage" SET "actorId" = (SELECT "id" FROM "actor" WHERE "actor"."bannerId" = "actorImage"."id") ` + | |
31 | `WHERE "type" = 2` | |
32 | await utils.sequelize.query(query, { type: Sequelize.QueryTypes.UPDATE, transaction: utils.transaction }) | |
33 | } | |
34 | ||
35 | // Remove orphans | |
36 | { | |
37 | const query = `DELETE FROM "actorImage" WHERE id NOT IN (` + | |
38 | `SELECT "bannerId" FROM actor WHERE "bannerId" IS NOT NULL ` + | |
39 | `UNION select "avatarId" FROM actor WHERE "avatarId" IS NOT NULL` + | |
40 | `);` | |
41 | ||
42 | await utils.sequelize.query(query, { type: Sequelize.QueryTypes.DELETE, transaction: utils.transaction }) | |
43 | } | |
44 | ||
45 | await utils.queryInterface.changeColumn('actorImage', 'actorId', { | |
46 | type: Sequelize.INTEGER, | |
47 | allowNull: false | |
48 | }, { transaction: utils.transaction }) | |
49 | ||
50 | await utils.queryInterface.removeColumn('actor', 'avatarId', { transaction: utils.transaction }) | |
51 | await utils.queryInterface.removeColumn('actor', 'bannerId', { transaction: utils.transaction }) | |
52 | } | |
53 | } | |
54 | ||
55 | function down () { | |
56 | throw new Error('Not implemented.') | |
57 | } | |
58 | ||
59 | export { | |
60 | up, | |
61 | down | |
62 | } |