From 8b98c8cc59e0c75659af9076c8e6f22f2fbcf148 Mon Sep 17 00:00:00 2001 From: Alice Gaudon Date: Mon, 25 Jan 2021 16:22:51 +0100 Subject: [PATCH] AddNameToUsersMigration: fix can't work when db already has users --- src/auth/migrations/AddNameToUsersMigration.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/auth/migrations/AddNameToUsersMigration.ts b/src/auth/migrations/AddNameToUsersMigration.ts index 0c3bfb0..a9eadc6 100644 --- a/src/auth/migrations/AddNameToUsersMigration.ts +++ b/src/auth/migrations/AddNameToUsersMigration.ts @@ -4,13 +4,24 @@ import User from "../models/User"; import UserNameComponent from "../models/UserNameComponent"; import MagicLink from "../models/MagicLink"; import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent"; +import {nanoid} from "nanoid"; export default class AddNameToUsersMigration extends Migration { public async install(): Promise { await this.query(`ALTER TABLE users - ADD COLUMN name VARCHAR(64) UNIQUE NOT NULL`); + ADD COLUMN name VARCHAR(64) NOT NULL`); await this.query(`ALTER TABLE magic_links ADD COLUMN username VARCHAR(64) DEFAULT NULL`); + + // Give every user a random name + const users = await User.select().get(this.getCurrentConnection()); + await Promise.all(users.map(user => { + user.name = nanoid(); + return user.save(this.getCurrentConnection()); + })); + + await this.query(`ALTER TABLE users + ADD CONSTRAINT UNIQUE (name)`); } public async rollback(): Promise {