AddNameToUsersMigration: fix can't work when db already has users
This commit is contained in:
parent
4817563dc1
commit
8b98c8cc59
@ -4,13 +4,24 @@ import User from "../models/User";
|
|||||||
import UserNameComponent from "../models/UserNameComponent";
|
import UserNameComponent from "../models/UserNameComponent";
|
||||||
import MagicLink from "../models/MagicLink";
|
import MagicLink from "../models/MagicLink";
|
||||||
import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent";
|
import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent";
|
||||||
|
import {nanoid} from "nanoid";
|
||||||
|
|
||||||
export default class AddNameToUsersMigration extends Migration {
|
export default class AddNameToUsersMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
await this.query(`ALTER TABLE users
|
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
|
await this.query(`ALTER TABLE magic_links
|
||||||
ADD COLUMN username VARCHAR(64) DEFAULT NULL`);
|
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<void> {
|
public async rollback(): Promise<void> {
|
||||||
|
Loading…
Reference in New Issue
Block a user