const { DataTypes } = require("sequelize"); const database = require(".."); // models const bookmark = require("./bookmark"); const transaction = require("./transaction"); const purchase = require("./purchase"); const subscription = require("./subscription"); const user = database.define("user", { userId: { type: DataTypes.UUID, allowNull: false, defaultValue: DataTypes.UUIDV4, primaryKey: true }, name: { type: DataTypes.STRING(100), allowNull: true }, emailAddress: { type: DataTypes.STRING(200), allowNull: false, unique: true }, password: { type: DataTypes.STRING(300), allowNull: false }, username: { type: DataTypes.STRING(40), allowNull: false }, avatar: { type: DataTypes.STRING(200), allowNull: true }, isVerified: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, isOwner: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, isModerator: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, isBlocked: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false } }); user.hasMany(bookmark, { onDelete: "CASCADE", foreignKey: { name: "userId", type: DataTypes.UUID, allowNull: false } }); user.hasOne(transaction, { onDelete: "CASCADE", foreignKey: { name: "userId", type: DataTypes.UUID, allowNull: false } }); user.hasMany(purchase, { foreignKey: { name: "userId", type: DataTypes.UUID, allowNull: false } }); user.hasMany(subscription, { foreignKey: { name: "userId", type: DataTypes.UUID, allowNull: false } }); module.exports = user;