pawa-user
Version:
A user management service for Cosmo Pawa, handling authentication and authorization.
99 lines (95 loc) • 2.03 kB
JavaScript
const { Model, DataTypes } = require('sequelize');
class User extends Model { }
module.exports = (sequelize) => {
User.init(
{
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
firstName: {
type: DataTypes.STRING,
allowNull: false,
},
lastName: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
isEmail: true,
},
},
password: {
type: DataTypes.STRING,
allowNull: false,
},
phoneNumber: {
type: DataTypes.STRING,
allowNull: true,
},
address: {
type: DataTypes.STRING,
allowNull: true,
},
city: {
type: DataTypes.STRING,
allowNull: true,
},
state: {
type: DataTypes.STRING,
allowNull: true,
},
zipCode: {
type: DataTypes.STRING,
allowNull: true,
},
country: {
type: DataTypes.STRING,
allowNull: true,
},
dateOfBirth: {
type: DataTypes.DATEONLY,
allowNull: true,
},
gender: {
type: DataTypes.ENUM("Male", "Female", "Other"),
allowNull: true,
},
profilePicture: {
type: DataTypes.STRING,
allowNull: true,
},
role: {
type: DataTypes.ENUM("user", "admin", "guest"),
defaultValue: "user",
},
isActive: {
type: DataTypes.BOOLEAN,
defaultValue: true,
},
lastLogin: {
type: DataTypes.DATE,
allowNull: true,
},
createdAt: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
},
updatedAt: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
},
},
{
sequelize,
modelName: 'User',
tableName: 'users',
}
);
return User;
};