ownership

This commit is contained in:
Julian Krauser 2024-10-07 18:09:27 +02:00
parent 72fb6fbc20
commit e2b46becf0
13 changed files with 79 additions and 13 deletions

View file

@ -0,0 +1,56 @@
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
export class Ownership1728313041449 implements MigrationInterface {
name = "Ownership1728313041449";
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.addColumn(
"user",
new TableColumn({
name: "isOwner",
type: "tinyint",
default: 0,
isNullable: false,
})
);
await queryRunner.manager
.createQueryBuilder()
.update("user")
.set({ isOwner: 1 })
.where((qb) => {
const subQuery = queryRunner.manager
.createQueryBuilder()
.select("1")
.from("user_permission", "up")
.where("user.id = up.userId")
.andWhere("up.permission = '*'")
.getQuery();
return `EXISTS (${subQuery})`;
})
.execute();
await queryRunner.manager.createQueryBuilder().delete().from("user_permission").where("permission = '*'").execute();
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.manager
.createQueryBuilder()
.insert()
.into("user_permission")
.values(
await queryRunner.manager
.createQueryBuilder()
.select("user.id", "userId")
.addSelect("'*'", "permission")
.from("user", "user")
.where("user.isOwner = 1")
.execute()
)
.execute();
await queryRunner.manager.createQueryBuilder().update("user").set({ isOwner: 0 }).where("isOwner = 1").execute();
await queryRunner.dropColumn("user", "isOwner");
}
}