From 17977b4d963744143f80a9a3eae70d48467a4c24 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Fri, 18 Aug 2023 14:49:45 +0000 Subject: [PATCH] UserLog --- server/schema/User.ts | 4 +++- server/schema/UserLog.ts | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 server/schema/UserLog.ts diff --git a/server/schema/User.ts b/server/schema/User.ts index 55ac9bb..b40de7b 100644 --- a/server/schema/User.ts +++ b/server/schema/User.ts @@ -1,10 +1,12 @@ import { Schema, model } from 'mongoose'; +export type UserIDType = number; export type validOAuthType = 'KAKAO' | 'NONE'; + const validOAuthTypeList: validOAuthType[] = ['KAKAO', 'NONE']; interface IUser { - _id: number; + _id: UserIDType; oauthID?: bigint; id: string; diff --git a/server/schema/UserLog.ts b/server/schema/UserLog.ts new file mode 100644 index 0000000..bbcb3ed --- /dev/null +++ b/server/schema/UserLog.ts @@ -0,0 +1,30 @@ +import { Schema, model, } from 'mongoose'; +import { type UserIDType } from './User.js'; + +export type LogType = 'register' + | 'login_pw' | 'login_token' | 'login_oauth' | 'logout' + | 'change_pw' | 'reset_pw'; +const LogTypeList: LogType[] = [ + 'register', + 'login_pw', 'login_token', 'login_oauth', 'logout', + 'change_pw', 'reset_pw', +]; + +interface IUserLog { + userID: UserIDType; + logDate: Date; + logType: LogType; + action: object; +} + +export const UserLog = new Schema({ + userID: { type: Number, required: true }, + logDate: { type: Date, required: true }, + logType: { type: String, required: true, enum: LogTypeList }, + action: { type: Object, required: true }, +}) + .index({ userID: 1, logDate: 1 }) + .index({ logDate: 1 }) + ; + +export default model('UserLog', UserLog); \ No newline at end of file