diff --git a/server/migrations/20231120074257-add-column-id-to-user-permissions.js b/server/migrations/20231120074257-add-column-id-to-user-permissions.js new file mode 100644 index 000000000..34d29b151 --- /dev/null +++ b/server/migrations/20231120074257-add-column-id-to-user-permissions.js @@ -0,0 +1,31 @@ +"use strict"; + +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.sequelize.transaction(async (transaction) => { + await queryInterface.sequelize.query( + `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`, + { transaction } + ); + await queryInterface.addColumn( + "user_permissions", + "id", + { + type: Sequelize.UUID, + defaultValue: Sequelize.literal("uuid_generate_v4()"), + allowNull: false, + }, + { transaction } + ); + await queryInterface.addConstraint("user_permissions", { + type: "PRIMARY KEY", + fields: ["id"], + transaction, + }); + }); + }, + + async down(queryInterface, Sequelize) { + await queryInterface.removeColumn("user_permissions", "id"); + }, +}; diff --git a/server/migrations/20231120142213-add-column-id-to-group-permissions.js b/server/migrations/20231120142213-add-column-id-to-group-permissions.js new file mode 100644 index 000000000..44d386032 --- /dev/null +++ b/server/migrations/20231120142213-add-column-id-to-group-permissions.js @@ -0,0 +1,31 @@ +"use strict"; + +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.sequelize.transaction(async (transaction) => { + await queryInterface.sequelize.query( + `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`, + { transaction } + ); + await queryInterface.addColumn( + "group_permissions", + "id", + { + type: Sequelize.UUID, + defaultValue: Sequelize.literal("uuid_generate_v4()"), + allowNull: false, + }, + { transaction } + ); + await queryInterface.addConstraint("group_permissions", { + type: "PRIMARY KEY", + fields: ["id"], + transaction, + }); + }); + }, + + async down(queryInterface, Sequelize) { + await queryInterface.removeColumn("group_permissions", "id"); + }, +}; diff --git a/server/models/GroupPermission.ts b/server/models/GroupPermission.ts index 95ab3e9d2..441263531 100644 --- a/server/models/GroupPermission.ts +++ b/server/models/GroupPermission.ts @@ -14,7 +14,7 @@ import Collection from "./Collection"; import Document from "./Document"; import Group from "./Group"; import User from "./User"; -import Model from "./base/Model"; +import ParanoidModel from "./base/ParanoidModel"; import Fix from "./decorators/Fix"; @Scopes(() => ({ @@ -40,7 +40,7 @@ import Fix from "./decorators/Fix"; })) @Table({ tableName: "group_permissions", modelName: "group_permission" }) @Fix -class GroupPermission extends Model { +class GroupPermission extends ParanoidModel { @Default(CollectionPermission.ReadWrite) @IsIn([Object.values(CollectionPermission)]) @Column(DataType.STRING) diff --git a/server/models/UserPermission.ts b/server/models/UserPermission.ts index 9f545bdac..5afabe7ca 100644 --- a/server/models/UserPermission.ts +++ b/server/models/UserPermission.ts @@ -13,7 +13,7 @@ import { CollectionPermission } from "@shared/types"; import Collection from "./Collection"; import Document from "./Document"; import User from "./User"; -import Model from "./base/Model"; +import IdModel from "./base/IdModel"; import Fix from "./decorators/Fix"; @Scopes(() => ({ @@ -39,7 +39,7 @@ import Fix from "./decorators/Fix"; })) @Table({ tableName: "user_permissions", modelName: "user_permission" }) @Fix -class UserPermission extends Model { +class UserPermission extends IdModel { @Default(CollectionPermission.ReadWrite) @IsIn([Object.values(CollectionPermission)]) @Column(DataType.STRING)