• 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);