User Schema
This commit is contained in:
@@ -0,0 +1,65 @@
|
|||||||
|
import { Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export type validOAuthType = 'KAKAO' | 'NONE';
|
||||||
|
const validOAuthTypeList: validOAuthType[] = ['KAKAO', 'NONE'];
|
||||||
|
|
||||||
|
interface IUser {
|
||||||
|
_id: number;
|
||||||
|
|
||||||
|
oauthID?: bigint;
|
||||||
|
id: string;
|
||||||
|
email: string;
|
||||||
|
|
||||||
|
oauthType: validOAuthType;
|
||||||
|
oauthInfo?: object;
|
||||||
|
tokenValidUntil?: Date;
|
||||||
|
|
||||||
|
userSalt: string;
|
||||||
|
hashedPassword: string;
|
||||||
|
|
||||||
|
allowThirdPartyUse: boolean;
|
||||||
|
|
||||||
|
userName: string;
|
||||||
|
allowServerAction?: Map<string, number>;
|
||||||
|
penalty?: Map<string, Date>;
|
||||||
|
|
||||||
|
picture?: string;
|
||||||
|
useImgSvr?: boolean;
|
||||||
|
|
||||||
|
regDate: Date;
|
||||||
|
deleteAfter?: Date;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const User = new Schema<IUser>({
|
||||||
|
_id: { type: Number, required: true },
|
||||||
|
|
||||||
|
oauthID: { type: BigInt, required: false },
|
||||||
|
id: { type: String, required: true },
|
||||||
|
email: { type: String, required: true },
|
||||||
|
|
||||||
|
oauthType: { type: String, required: true, enum: validOAuthTypeList },
|
||||||
|
oauthInfo: { type: Object, required: false },
|
||||||
|
tokenValidUntil: { type: Date, required: false },
|
||||||
|
|
||||||
|
userSalt: { type: String, required: true },
|
||||||
|
hashedPassword: { type: String, required: true },
|
||||||
|
|
||||||
|
allowThirdPartyUse: { type: Boolean, required: true },
|
||||||
|
|
||||||
|
userName: { type: String, required: true },
|
||||||
|
allowServerAction: { type: Map, required: false, of: Number },
|
||||||
|
penalty: { type: Map, required: false, of: Date },
|
||||||
|
|
||||||
|
picture: { type: String, required: false },
|
||||||
|
useImgSvr: { type: Boolean, required: false },
|
||||||
|
|
||||||
|
regDate: { type: Date, required: true },
|
||||||
|
deleteAfter: { type: Date, required: false },
|
||||||
|
})
|
||||||
|
.index({ id: 1 }, { unique: true })
|
||||||
|
.index({ email: 1 }, { unique: true })
|
||||||
|
.index({ oauthID: 1 }, { unique: true, sparse: true })
|
||||||
|
.index({ deleteAfter: 1 })
|
||||||
|
;
|
||||||
|
|
||||||
|
export default model<IUser>('User', User);
|
||||||
Reference in New Issue
Block a user