You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

49 lines
1.0 KiB

import * as bcrypt from 'https://deno.land/x/bcrypt@v0.2.4/mod.ts'
import { v4 } from 'https://deno.land/std@0.99.0/uuid/mod.ts'
import { Database } from 'https://deno.land/x/aloedb@0.9.0/mod.ts'
import { UserSchema } from './../stores/user.ts'
/**
*
*
*/
class UserRepository
{
db: any;
constructor()
{
this.db = new Database<UserSchema>('./storage/database/users.json')
}
/**
*
*/
async create(data: any)
{
data._id = v4.generate()
data.password = await bcrypt.hash(data.password)
const user = await this.db.insertOne(data)
return user
}
/**
*
*/
async update(data: any)
{
const user = await this.db.findOne({ '_id': data._id })
// if password has changed hash password new
if (user && user.password !== data.password) {
data.password = await bcrypt.hash(data.password)
}
return await this.db.updateOne({ '_id': data._id }, data)
}
}
export default UserRepository