benfluleck/HelloBooks

View on GitHub
server/src/models/userBooks.js

Summary

Maintainability
A
0 mins
Test Coverage
export default(sequelize, DataTypes) => {
  const UserBooks = sequelize.define('UserBooks', {
    bookId: {
      type: DataTypes.INTEGER,
      allowNull: false
    },
    userId: {
      type: DataTypes.INTEGER,
      allowNull: false
    },
    returnDate: {
      type: DataTypes.DATE,
      allowNull: false
    },
    userReturnDate: {
      type: DataTypes.DATE,
      allowNull: true
    },
    returnStatus: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
      defaultValue: false
    },
    overdueAmount: {
      type: DataTypes.INTEGER,
      allowNull: true
    }
  }, {
    classMethods: {},
    hooks: {
      beforeCreate: () => {
        if (UserBooks.returndate < Date.now()) {
          throw new Error('Date is less than current date');
        }
      }
    }

  });
  UserBooks.associate = (models) => {
    UserBooks.belongsTo(models.Books, {
      foreignKey: 'bookId',
      as: 'book',
      onDelete: 'CASCADE'
    });
    UserBooks.belongsTo(models.User, {
      foreignKey: 'userId',
      as: 'user',
      onDelete: 'CASCADE'
    });
  };

  return UserBooks;
};