52 lines
1006 B
TypeScript

/* eslint-disable no-param-reassign */
import { DateTime } from 'luxon';
import {
BaseModel,
beforeCreate,
beforeSave,
column,
} from '@ioc:Adonis/Lucid/Orm';
import Hash from '@ioc:Adonis/Core/Hash';
import { nanoid } from 'nanoid';
export default class User extends BaseModel {
@column({ isPrimary: true })
public id: string;
@column()
public name: string;
@column()
public surname: string;
@column()
public patronymic: string;
@column()
public login: string;
@column()
public email: string;
@column({ serializeAs: null })
public password: string;
@column.dateTime({ autoCreate: true })
public createdAt: DateTime;
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime;
@beforeCreate()
public static assignUui(user: User) {
user.id = nanoid();
}
@beforeSave()
public static async hashPassword(user: User) {
if (user.$dirty.password) {
user.password = await Hash.make(user.password);
}
}
}