/** * Copyright (c) 2026 Niolla * All rights reserved. * * This source code is proprietary and confidential. * Unauthorized copying, modification, distribution, or use * of this file, via any medium, is strictly prohibited. */ // app/models/User.model.js module.exports = (sequelize, DataTypes) => { const User = sequelize.define( "User", { id: { type: DataTypes.STRING, primaryKey: true, collate: 'utf8mb4_general_ci' }, firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, allowNull: false, unique: true }, password: { type: DataTypes.STRING, allowNull: false }, accountType: { type: DataTypes.ENUM("business_customer", "customer"), defaultValue: "customer" }, accountStatus: { type: DataTypes.ENUM( "PENDING_VERIFICATION", "ACTIVE", "SUSPENDED", "DEACTIVATED" ), allowNull: false, defaultValue: "PENDING_VERIFICATION", }, emailVerifiedAt: { type: DataTypes.DATE, allowNull: true, defaultValue: null, }, }, { tableName: "users", timestamps: true } ); User.associate = (db) => { User.hasMany(db.userPermission, { foreignKey: "user_id", as: "userPermissions" }); User.hasOne(db.Profile, { foreignKey: "user_id", as: "profile", }); User.hasOne(db.Customer, { foreignKey: "user_id", as: "customer", }); User.hasOne(db.BusinessCustomer, { foreignKey: "user_id", as: "businessCustomer", }); }; return User; };