60 lines
1.2 KiB
TypeScript
60 lines
1.2 KiB
TypeScript
import { Schema, model, Document } from 'mongoose';
|
|
import { NAME_REGEXP } from '@fiora/utils/const';
|
|
|
|
const UserSchema = new Schema({
|
|
createTime: { type: Date, default: Date.now },
|
|
lastLoginTime: { type: Date, default: Date.now },
|
|
|
|
username: {
|
|
type: String,
|
|
trim: true,
|
|
unique: true,
|
|
match: NAME_REGEXP,
|
|
index: true,
|
|
},
|
|
salt: String,
|
|
password: String,
|
|
avatar: String,
|
|
tag: {
|
|
type: String,
|
|
default: '',
|
|
trim: true,
|
|
match: NAME_REGEXP,
|
|
},
|
|
expressions: [
|
|
{
|
|
type: String,
|
|
},
|
|
],
|
|
lastLoginIp: String,
|
|
});
|
|
|
|
export interface UserDocument extends Document {
|
|
/** 用户名 */
|
|
username: string;
|
|
/** 密码加密盐 */
|
|
salt: string;
|
|
/** 加密的密码 */
|
|
password: string;
|
|
/** 头像 */
|
|
avatar: string;
|
|
/** 用户标签 */
|
|
tag: string;
|
|
/** 表情收藏 */
|
|
expressions: string[];
|
|
/** 创建时间 */
|
|
createTime: Date;
|
|
/** 最后登录时间 */
|
|
lastLoginTime: Date;
|
|
/** 最后登录IP */
|
|
lastLoginIp: string;
|
|
}
|
|
|
|
/**
|
|
* User Model
|
|
* 用户信息
|
|
*/
|
|
const User = model<UserDocument>('User', UserSchema);
|
|
|
|
export default User;
|