From d0800f7661f13fabe7bb6f4aa0ea50764f106405 Mon Sep 17 00:00:00 2001 From: kontrollanten <6680299+kontrollanten@users.noreply.github.com> Date: Mon, 28 Feb 2022 08:34:43 +0100 Subject: Implement avatar miniatures (#4639) * client: remove unused file * refactor(client/my-actor-avatar): size from input Read size from component input instead of scss, to make it possible to use smaller avatar images when implemented. * implement avatar miniatures close #4560 * fix(test): max file size * fix(search-index): normalize res acc to avatarMini * refactor avatars to an array * client/search: resize channel avatar to 120 * refactor(client/videos): remove unused function * client(actor-avatar): set default size * fix tests and avatars full result When findOne is used only an array containting one avatar is returned. * update migration version and version notations * server/search: harmonize normalizing * Cleanup avatar miniature PR Co-authored-by: Chocobozzz --- .../migrations/0685-multiple-actor-images.ts | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 server/initializers/migrations/0685-multiple-actor-images.ts (limited to 'server/initializers/migrations') diff --git a/server/initializers/migrations/0685-multiple-actor-images.ts b/server/initializers/migrations/0685-multiple-actor-images.ts new file mode 100644 index 000000000..c656f7e28 --- /dev/null +++ b/server/initializers/migrations/0685-multiple-actor-images.ts @@ -0,0 +1,62 @@ +import * as Sequelize from 'sequelize' + +async function up (utils: { + transaction: Sequelize.Transaction + queryInterface: Sequelize.QueryInterface + sequelize: Sequelize.Sequelize + db: any +}): Promise { + { + await utils.queryInterface.addColumn('actorImage', 'actorId', { + type: Sequelize.INTEGER, + defaultValue: null, + allowNull: true, + references: { + model: 'actor', + key: 'id' + }, + onDelete: 'CASCADE' + }, { transaction: utils.transaction }) + + // Avatars + { + const query = `UPDATE "actorImage" SET "actorId" = (SELECT "id" FROM "actor" WHERE "actor"."avatarId" = "actorImage"."id") ` + + `WHERE "type" = 1` + await utils.sequelize.query(query, { type: Sequelize.QueryTypes.UPDATE, transaction: utils.transaction }) + } + + // Banners + { + const query = `UPDATE "actorImage" SET "actorId" = (SELECT "id" FROM "actor" WHERE "actor"."bannerId" = "actorImage"."id") ` + + `WHERE "type" = 2` + await utils.sequelize.query(query, { type: Sequelize.QueryTypes.UPDATE, transaction: utils.transaction }) + } + + // Remove orphans + { + const query = `DELETE FROM "actorImage" WHERE id NOT IN (` + + `SELECT "bannerId" FROM actor WHERE "bannerId" IS NOT NULL ` + + `UNION select "avatarId" FROM actor WHERE "avatarId" IS NOT NULL` + + `);` + + await utils.sequelize.query(query, { type: Sequelize.QueryTypes.DELETE, transaction: utils.transaction }) + } + + await utils.queryInterface.changeColumn('actorImage', 'actorId', { + type: Sequelize.INTEGER, + allowNull: false + }, { transaction: utils.transaction }) + + await utils.queryInterface.removeColumn('actor', 'avatarId', { transaction: utils.transaction }) + await utils.queryInterface.removeColumn('actor', 'bannerId', { transaction: utils.transaction }) + } +} + +function down () { + throw new Error('Not implemented.') +} + +export { + up, + down +} -- cgit v1.2.3