85 lines
3.0 KiB
Java
85 lines
3.0 KiB
Java
package com.example.demo.model;
|
|
|
|
import jakarta.persistence.*;
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
|
|
@Entity
|
|
@Table(name = "user_activity_stats")
|
|
public class UserActivityStats {
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private Long id;
|
|
|
|
@Column(name = "activity_date", nullable = false, unique = true)
|
|
private LocalDate activityDate;
|
|
|
|
@Column(name = "daily_active_users", nullable = false)
|
|
private Integer dailyActiveUsers = 0;
|
|
|
|
@Column(name = "monthly_active_users", nullable = false)
|
|
private Integer monthlyActiveUsers = 0;
|
|
|
|
@Column(name = "new_users", nullable = false)
|
|
private Integer newUsers = 0;
|
|
|
|
@Column(name = "returning_users", nullable = false)
|
|
private Integer returningUsers = 0;
|
|
|
|
@Column(name = "session_count", nullable = false)
|
|
private Integer sessionCount = 0;
|
|
|
|
@Column(name = "avg_session_duration", precision = 10, scale = 2)
|
|
private BigDecimal avgSessionDuration = BigDecimal.ZERO;
|
|
|
|
@Column(name = "created_at", nullable = false)
|
|
private LocalDateTime createdAt;
|
|
|
|
@Column(name = "updated_at")
|
|
private LocalDateTime updatedAt;
|
|
|
|
@PrePersist
|
|
protected void onCreate() {
|
|
createdAt = LocalDateTime.now();
|
|
updatedAt = LocalDateTime.now();
|
|
}
|
|
|
|
@PreUpdate
|
|
protected void onUpdate() {
|
|
updatedAt = LocalDateTime.now();
|
|
}
|
|
|
|
// Getters and Setters
|
|
public Long getId() { return id; }
|
|
public void setId(Long id) { this.id = id; }
|
|
|
|
public LocalDate getActivityDate() { return activityDate; }
|
|
public void setActivityDate(LocalDate activityDate) { this.activityDate = activityDate; }
|
|
|
|
public Integer getDailyActiveUsers() { return dailyActiveUsers; }
|
|
public void setDailyActiveUsers(Integer dailyActiveUsers) { this.dailyActiveUsers = dailyActiveUsers; }
|
|
|
|
public Integer getMonthlyActiveUsers() { return monthlyActiveUsers; }
|
|
public void setMonthlyActiveUsers(Integer monthlyActiveUsers) { this.monthlyActiveUsers = monthlyActiveUsers; }
|
|
|
|
public Integer getNewUsers() { return newUsers; }
|
|
public void setNewUsers(Integer newUsers) { this.newUsers = newUsers; }
|
|
|
|
public Integer getReturningUsers() { return returningUsers; }
|
|
public void setReturningUsers(Integer returningUsers) { this.returningUsers = returningUsers; }
|
|
|
|
public Integer getSessionCount() { return sessionCount; }
|
|
public void setSessionCount(Integer sessionCount) { this.sessionCount = sessionCount; }
|
|
|
|
public BigDecimal getAvgSessionDuration() { return avgSessionDuration; }
|
|
public void setAvgSessionDuration(BigDecimal avgSessionDuration) { this.avgSessionDuration = avgSessionDuration; }
|
|
|
|
public LocalDateTime getCreatedAt() { return createdAt; }
|
|
public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
|
|
|
|
public LocalDateTime getUpdatedAt() { return updatedAt; }
|
|
public void setUpdatedAt(LocalDateTime updatedAt) { this.updatedAt = updatedAt; }
|
|
}
|