Add public/private keys generation in migrations
authorChocobozzz <me@florianbigard.com>
Fri, 15 Dec 2017 17:44:17 +0000 (18:44 +0100)
committerChocobozzz <me@florianbigard.com>
Tue, 19 Dec 2017 09:53:16 +0000 (10:53 +0100)
server/initializers/migrations/0130-video-channel-actor.ts

index 0b665b0c750fa4b5c1b20900734b8cce9309c575..15b67be81e2d6434004a25751607c122259b9cb1 100644 (file)
@@ -1,5 +1,6 @@
 import * as Sequelize from 'sequelize'
 import { DataType } from 'sequelize-typescript'
+import { createPrivateAndPublicKeys } from '../../helpers'
 
 async function up (utils: {
   transaction: Sequelize.Transaction,
@@ -223,6 +224,18 @@ async function up (utils: {
       await utils.queryInterface.removeColumn('videoChannel', columnToDelete)
     }
   }
+
+  {
+    const query = 'SELECT * FROM "actor" WHERE "serverId" IS NULL AND "publicKey" IS NULL'
+    const [ res ] = await utils.sequelize.query(query)
+
+    for (const actor of res) {
+      const { privateKey, publicKey } = await createPrivateAndPublicKeys()
+
+      const queryUpdate = `UPDATE "actor" SET "publicKey" = '${publicKey}', "privateKey" = '${privateKey}' WHERE id = ${actor.id}`
+      await utils.sequelize.query(queryUpdate)
+    }
+  }
 }
 
 function down (options) {