diff options
Diffstat (limited to 'server/initializers/migrations')
-rw-r--r-- | server/initializers/migrations/0605-actor-missing-keys.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/server/initializers/migrations/0605-actor-missing-keys.ts b/server/initializers/migrations/0605-actor-missing-keys.ts new file mode 100644 index 000000000..72d9b359d --- /dev/null +++ b/server/initializers/migrations/0605-actor-missing-keys.ts | |||
@@ -0,0 +1,34 @@ | |||
1 | import * as Sequelize from 'sequelize' | ||
2 | import { createPrivateKey, getPublicKey } from '../../helpers/core-utils' | ||
3 | import { PRIVATE_RSA_KEY_SIZE } from '../constants' | ||
4 | |||
5 | async function up (utils: { | ||
6 | transaction: Sequelize.Transaction | ||
7 | queryInterface: Sequelize.QueryInterface | ||
8 | sequelize: Sequelize.Sequelize | ||
9 | db: any | ||
10 | }): Promise<void> { | ||
11 | |||
12 | { | ||
13 | const query = 'SELECT * FROM "actor" WHERE "serverId" IS NULL AND "publicKey" IS NULL' | ||
14 | const options = { type: Sequelize.QueryTypes.SELECT as Sequelize.QueryTypes.SELECT } | ||
15 | const actors = await utils.sequelize.query<any>(query, options) | ||
16 | |||
17 | for (const actor of actors) { | ||
18 | const { key } = await createPrivateKey(PRIVATE_RSA_KEY_SIZE) | ||
19 | const { publicKey } = await getPublicKey(key) | ||
20 | |||
21 | const queryUpdate = `UPDATE "actor" SET "publicKey" = '${publicKey}', "privateKey" = '${key}' WHERE id = ${actor.id}` | ||
22 | await utils.sequelize.query(queryUpdate) | ||
23 | } | ||
24 | } | ||
25 | } | ||
26 | |||
27 | function down (options) { | ||
28 | throw new Error('Not implemented.') | ||
29 | } | ||
30 | |||
31 | export { | ||
32 | up, | ||
33 | down | ||
34 | } | ||