User Schema (비즈니스 가입 회원)
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true,
},
photoURL: {
type: String,
require: true,
},
displayName: {
type: String,
required: true,
},
refreshToken: {
type: String,
unique: true,
required: true,
},
});
module.exports = mongoose.model("User", userSchema);
Project Schema (프로젝트 스키마)
const projectSchema = new mongoose.Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
projectName: {
type: String,
required: true,
validate: {
validator(v) {
return /^[A-Za-z0-9가-힣]+$/.test(v);
},
message: "영문자(대소문자), 숫자, 한글만 사용할 수 있습니다.",
},
},
apiKey: {
type: String,
required: true,
unique: true,
},
createdAt: {
type: Date,
default: Date.now,
},
});
module.exports = mongoose.model("Project", projectSchema);
session Schema (세션)
const sessionSchema = new mongoose.Schema({
projectId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Project",
required: true,
},
startTime: {
type: Date,
default: Date.now,
},
lastUpdated: {
type: Date,
default: Date.now,
},
isActive: {
type: Boolean,
default: true,
},
pageViews: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "PageView",
},
],
lastPageViewId: {
type: mongoose.Schema.Types.ObjectId,
ref: "PageView",
},
});
module.exports = mongoose.model("Session", sessionSchema);
PageView Schema (페이지뷰)
const pageViewSchema = new mongoose.Schema({
sessionId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Session",
required: true,
},
url: {
type: String,
required: true,
},
pageTitle: {
type: String,
required: true,
},
timestamp: {
type: Date,
default: Date.now,
},
referrer: {
type: String,
},
});
module.exports = mongoose.model("PageView", pageViewSchema);