corgi/src/models/AccountTmp.ts
2021-04-19 18:06:36 +08:00

65 lines
1.5 KiB
TypeScript

import {
getModelForClass,
index,
modelOptions,
plugin,
prop
} from '@typegoose/typegoose';
import {dbconn} from '../decorators/dbconn';
// @ts-ignore
import findOrCreate from 'mongoose-findorcreate';
import {
Base,
FindOrCreate,
TimeStamps
} from "@typegoose/typegoose/lib/defaultClasses";
interface AccountTmpClass extends Base, TimeStamps {}
@dbconn()
@index({ openid: 1}, { unique: true })
@modelOptions({schemaOptions: {collection: "account_login", timestamps: true}})
@plugin(findOrCreate)
class AccountTmpClass extends FindOrCreate{
@prop()
public openid: string;
@prop()
public unionid: string;
@prop()
public nickname: string;
@prop()
public headimgurl?: string;
@prop()
public province?: string;
@prop()
public city?: string;
@prop()
public sex?: string;
@prop()
public lastLogin: number;
@prop()
public loginCount: number;
@prop()
public geted: boolean;
public static async findByName(username) {
return AccountTmp.findOne({username});
}
public toJson() {
return {
openid: this['openid'],
nickname: this.nickname,
avatar: this.headimgurl,
province: this.province,
city: this.city,
sex: this.sex,
lastlogin: this.lastLogin,
logincount: this.loginCount
}
}
}
export const AccountTmp = getModelForClass(AccountTmpClass, {existingConnection: AccountTmpClass['db']});