Files
outline/server/migrations/20260107213946-create-access-requests.js
T
2026-01-09 18:53:21 +01:00

84 lines
2.0 KiB
JavaScript

"use strict";
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable("access_requests", {
id: {
type: Sequelize.UUID,
primaryKey: true,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
},
status: {
type: Sequelize.STRING,
allowNull: false,
defaultValue: "pending",
},
respondedAt: {
type: Sequelize.DATE,
allowNull: true,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
documentId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: "documents",
key: "id",
},
onDelete: "CASCADE",
onUpdate: "CASCADE",
},
userId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: "users",
key: "id",
},
onDelete: "CASCADE",
onUpdate: "CASCADE",
},
teamId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: "teams",
key: "id",
},
onDelete: "CASCADE",
onUpdate: "CASCADE",
},
responderId: {
type: Sequelize.UUID,
allowNull: true,
references: {
model: "users",
key: "id",
},
onDelete: "SET NULL",
onUpdate: "CASCADE",
},
});
await queryInterface.addIndex("access_requests", ["documentId"]);
await queryInterface.addIndex("access_requests", ["userId"]);
await queryInterface.addIndex("access_requests", ["teamId"]);
await queryInterface.addIndex("access_requests", ["status"]);
},
async down(queryInterface) {
await queryInterface.dropTable("access_requests");
},
};