Skip to content
Snippets Groups Projects
meeting.js 1.26 KiB
Newer Older
tpgus2603's avatar
tpgus2603 committed
// models/Meeting.js
module.exports = (sequelize, DataTypes) => {
  const Meeting = sequelize.define('Meeting', {
    id: {
      type: DataTypes.BIGINT,
      primaryKey: true,
      autoIncrement: true,
    },
    title: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    description: {
      type: DataTypes.TEXT,
      allowNull: true,
    },
    start_time: {
      type: DataTypes.DATE,
      allowNull: false,
    },
    end_time: {
      type: DataTypes.DATE,
      allowNull: false,
      validate: {
        isAfterStart(value) {
          if (value <= this.start_time) {
            throw new Error('end_time은 start_time 이후여야 합니다.');
          }
        },
      },
    },
    location: {
      type: DataTypes.STRING,
      allowNull: true,
    },
    deadline: {
      type: DataTypes.DATE,
      allowNull: true,
    },
    type: {
      type: DataTypes.ENUM('OPEN', 'CLOSE'),
      allowNull: false,
    },
    created_by: {
      type: DataTypes.BIGINT,
      allowNull: false,
      references: {
        model: 'Users',
        key: 'id',
      },
      onDelete: 'CASCADE',
    },
  }, {
    tableName: 'Meetings',
    timestamps: false,
    indexes: [
      {
        fields: ['created_by'],
      },
    ],
  });

  return Meeting;
};