mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
9628253fd8
Summary: There is a new column in users table called ref (user reference). It holds user's unique reference number that can be used for features that require some kind of ownership logic (like comments). Test Plan: Updated tests Reviewers: georgegevoian, paulfitz Reviewed By: georgegevoian, paulfitz Differential Revision: https://phab.getgrist.com/D3641
38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
import {User} from 'app/gen-server/entity/User';
|
|
import {makeId} from 'app/server/lib/idUtils';
|
|
import {MigrationInterface, QueryRunner} from "typeorm";
|
|
|
|
export class UserRefUnique1664528376930 implements MigrationInterface {
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
// This is second part of migration 1663851423064-UserUUID, that makes
|
|
// the ref column unique.
|
|
|
|
// Update users that don't have unique ref set.
|
|
const userList = await queryRunner.manager.createQueryBuilder()
|
|
.select("users")
|
|
.from(User, "users")
|
|
.where("ref is null")
|
|
.getMany();
|
|
userList.forEach(u => u.ref = makeId());
|
|
await queryRunner.manager.save(userList, {chunk: 300});
|
|
|
|
// Mark column as unique and non-nullable.
|
|
const users = (await queryRunner.getTable('users'))!;
|
|
const oldRef = users.findColumnByName('ref')!;
|
|
const newRef = oldRef.clone();
|
|
newRef.isUnique = true;
|
|
newRef.isNullable = false;
|
|
await queryRunner.changeColumn('users', oldRef, newRef);
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
// Mark column as non unique and nullable.
|
|
const users = (await queryRunner.getTable('users'))!;
|
|
const oldRef = users.findColumnByName('ref')!;
|
|
const newRef = oldRef.clone();
|
|
newRef.isUnique = false;
|
|
newRef.isNullable = true;
|
|
await queryRunner.changeColumn('users', oldRef, newRef);
|
|
}
|
|
}
|