32 lines
1.4 KiB
JavaScript
32 lines
1.4 KiB
JavaScript
const { DataTypes, Model } = require('sequelize');
|
|
const sequelize = require('../../db/pool');
|
|
|
|
class User extends Model {}
|
|
|
|
User.init(
|
|
{
|
|
id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true },
|
|
uuid: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, allowNull: false, unique: true },
|
|
email: { type: DataTypes.STRING(255), allowNull: false, unique: true, validate: { isEmail: true } },
|
|
passwordHash: { field: 'password_hash', type: DataTypes.STRING(255), allowNull: false },
|
|
firstName: { field: 'first_name', type: DataTypes.STRING(100), allowNull: true },
|
|
lastName: { field: 'last_name', type: DataTypes.STRING(100), allowNull: true },
|
|
profilePicture: { field: 'profile_picture', type: DataTypes.STRING(512), allowNull: true },
|
|
role: { type: DataTypes.ENUM('admin', 'manager', 'user'), defaultValue: 'user', allowNull: false },
|
|
isActive: { field: 'is_active', type: DataTypes.BOOLEAN, defaultValue: true },
|
|
createdAt: { field: 'created_at', type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW },
|
|
updatedAt: { field: 'updated_at', type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW },
|
|
deletedAt: { field: 'deleted_at', type: DataTypes.DATE, allowNull: true }
|
|
},
|
|
{
|
|
sequelize,
|
|
modelName: 'User',
|
|
tableName: 'users',
|
|
paranoid: true,
|
|
timestamps: true
|
|
}
|
|
);
|
|
|
|
module.exports = User;
|
|
|