65 lines
1.5 KiB
TypeScript
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']});
|