117 lines
3.2 KiB
JavaScript
117 lines
3.2 KiB
JavaScript
const DataTypes = require('sequelize');
|
|
class user {
|
|
|
|
constructor(connection) {
|
|
this.connection = connection;
|
|
const Model = DataTypes.Model;
|
|
class user extends Model { }
|
|
|
|
this.user = user.init({
|
|
id: {
|
|
type: DataTypes.BIGINT,
|
|
allowNull: false,
|
|
primaryKey: true,
|
|
autoIncrement: true
|
|
},
|
|
email: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: false
|
|
},
|
|
password: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: false
|
|
},
|
|
auth_token: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true
|
|
},
|
|
auth_token_update: {
|
|
type: DataTypes.INTEGER(11),
|
|
allowNull: true
|
|
},
|
|
recover_token: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true
|
|
},
|
|
recover_token_update: {
|
|
type: DataTypes.INTEGER(11),
|
|
allowNull: true
|
|
},
|
|
}, {
|
|
sequelize: connection,
|
|
modelName: 'user',
|
|
freezeTableName: true,
|
|
timestamps: false,
|
|
tableName: 'user'
|
|
});
|
|
}
|
|
|
|
async getOne(query) {
|
|
return await this.user.findOne({ where: query });
|
|
}
|
|
|
|
async getAll(query) {
|
|
return await this.user.findAll({ where: query });
|
|
}
|
|
|
|
async insertOne(email, password) {
|
|
|
|
let user = await this.getOne({ email: email })
|
|
|
|
if (user == null) {
|
|
try {
|
|
let insert_result = await this.user.create({ email: email, password: password })
|
|
try {
|
|
return { code: 200, message: "user created", result: insert_result }
|
|
} catch (error) {
|
|
await this.user.destroy(
|
|
{
|
|
where:
|
|
{
|
|
email: email
|
|
}
|
|
})
|
|
return { code: 500, error: 'Internal Server Error' }
|
|
}
|
|
} catch (error) {
|
|
return { code: 500, error: 'Internal Server Error' }
|
|
}
|
|
} else {
|
|
return { code: 400, error: 'Choose another email' }
|
|
}
|
|
}
|
|
|
|
async validateToken(auth_token) {
|
|
var data = await this.getOne({ auth_token: auth_token })
|
|
if (data != null) {
|
|
return data;
|
|
} else {
|
|
return null
|
|
}
|
|
}
|
|
|
|
async updatePassword(id, pwd) {
|
|
return await this.update({ password: pwd }, { where: { id: id } })
|
|
}
|
|
|
|
async deleteOne(auth_token) {
|
|
try {
|
|
let result = await this.user.destroy(
|
|
{
|
|
where:
|
|
{
|
|
"auth_token": auth_token
|
|
}
|
|
})
|
|
return { code: 200, message: result }
|
|
} catch (error) {
|
|
return { code: 400, error: 'User not found' }
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
module.exports = function (application) {
|
|
return user;
|
|
}
|