created API For Aplication Absensi
This commit is contained in:
116
models/user.model.js
Normal file
116
models/user.model.js
Normal file
@@ -0,0 +1,116 @@
|
||||
"use strict";
|
||||
const { Model, DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
class User extends Model {
|
||||
static associate(models) {
|
||||
this.belongsTo(models.Branch, {foreignKey: 'branch_id', as: 'branch', onDelete: 'CASCADE'})
|
||||
}
|
||||
}
|
||||
|
||||
User.init({
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
branch_id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
allowNull: false,
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
role: {
|
||||
type: DataTypes.ENUM('admin', 'user'),
|
||||
allowNull: true,
|
||||
defaultValue: 'user'
|
||||
},
|
||||
email: {
|
||||
type: DataTypes.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
validate: {
|
||||
isEmail: true,
|
||||
},
|
||||
},
|
||||
|
||||
avatar_url: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
|
||||
phone: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true,
|
||||
unique: true,
|
||||
validate: {
|
||||
is: {
|
||||
args: /^\+?[0-9\s\-]{6,20}$/,
|
||||
msg: 'Format nomor telepon tidak valid',
|
||||
},
|
||||
len: {
|
||||
args: [6, 15],
|
||||
msg: "Nomor telepon maksimal 15 karakter"
|
||||
}
|
||||
}
|
||||
},
|
||||
password: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
|
||||
|
||||
provider_id: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
login_via: {
|
||||
type: DataTypes.STRING,
|
||||
defaultValue: 'EMAIL',
|
||||
},
|
||||
google_id: {
|
||||
type: DataTypes.STRING,
|
||||
},
|
||||
is_suspended: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
},
|
||||
birth: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: true
|
||||
},
|
||||
last_login: {
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
is_first_login: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: true
|
||||
},
|
||||
created_at: {
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
updated_at: {
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
deleted_at: {
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
modelName: "User",
|
||||
tableName: "core_users",
|
||||
timestamps: true,
|
||||
createdAt: "created_at",
|
||||
updatedAt: "updated_at",
|
||||
deletedAt: "deleted_at",
|
||||
paranoid: true,
|
||||
});
|
||||
|
||||
return User;
|
||||
};
|
||||
Reference in New Issue
Block a user