feat(jpa): add JPA entities and repositories aligned to Flyway; chore(deps): remove unused AMQP deps
This commit is contained in:
9
pom.xml
9
pom.xml
@@ -36,10 +36,6 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-amqp</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
@@ -89,11 +85,6 @@
|
||||
<version>0.7.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.amqp</groupId>
|
||||
<artifactId>spring-rabbit-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.mosquito.project.persistence.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
@Entity
|
||||
@Table(name = "activities")
|
||||
public class ActivityEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(nullable = false, length = 255)
|
||||
private String name;
|
||||
|
||||
@Column(name = "start_time_utc", nullable = false)
|
||||
private OffsetDateTime startTimeUtc;
|
||||
|
||||
@Column(name = "end_time_utc", nullable = false)
|
||||
private OffsetDateTime endTimeUtc;
|
||||
|
||||
@Column(name = "target_users_config", columnDefinition = "jsonb")
|
||||
private String targetUsersConfig;
|
||||
|
||||
@Column(name = "page_content_config", columnDefinition = "jsonb")
|
||||
private String pageContentConfig;
|
||||
|
||||
@Column(name = "reward_calculation_mode", length = 50)
|
||||
private String rewardCalculationMode;
|
||||
|
||||
@Column(length = 50)
|
||||
private String status;
|
||||
|
||||
@Column(name = "created_at")
|
||||
private OffsetDateTime createdAt;
|
||||
|
||||
@Column(name = "updated_at")
|
||||
private OffsetDateTime updatedAt;
|
||||
|
||||
public Long getId() { return id; }
|
||||
public void setId(Long id) { this.id = id; }
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public OffsetDateTime getStartTimeUtc() { return startTimeUtc; }
|
||||
public void setStartTimeUtc(OffsetDateTime startTimeUtc) { this.startTimeUtc = startTimeUtc; }
|
||||
public OffsetDateTime getEndTimeUtc() { return endTimeUtc; }
|
||||
public void setEndTimeUtc(OffsetDateTime endTimeUtc) { this.endTimeUtc = endTimeUtc; }
|
||||
public String getTargetUsersConfig() { return targetUsersConfig; }
|
||||
public void setTargetUsersConfig(String targetUsersConfig) { this.targetUsersConfig = targetUsersConfig; }
|
||||
public String getPageContentConfig() { return pageContentConfig; }
|
||||
public void setPageContentConfig(String pageContentConfig) { this.pageContentConfig = pageContentConfig; }
|
||||
public String getRewardCalculationMode() { return rewardCalculationMode; }
|
||||
public void setRewardCalculationMode(String rewardCalculationMode) { this.rewardCalculationMode = rewardCalculationMode; }
|
||||
public String getStatus() { return status; }
|
||||
public void setStatus(String status) { this.status = status; }
|
||||
public OffsetDateTime getCreatedAt() { return createdAt; }
|
||||
public void setCreatedAt(OffsetDateTime createdAt) { this.createdAt = createdAt; }
|
||||
public OffsetDateTime getUpdatedAt() { return updatedAt; }
|
||||
public void setUpdatedAt(OffsetDateTime updatedAt) { this.updatedAt = updatedAt; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.mosquito.project.persistence.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "activity_rewards")
|
||||
public class ActivityRewardEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(name = "activity_id", nullable = false)
|
||||
private Long activityId;
|
||||
|
||||
@Column(name = "invite_threshold", nullable = false)
|
||||
private Integer inviteThreshold;
|
||||
|
||||
@Column(name = "reward_type", nullable = false, length = 50)
|
||||
private String rewardType;
|
||||
|
||||
@Column(name = "reward_value", nullable = false, length = 255)
|
||||
private String rewardValue;
|
||||
|
||||
@Column(name = "skip_validation", nullable = false)
|
||||
private Boolean skipValidation = Boolean.FALSE;
|
||||
|
||||
public Long getId() { return id; }
|
||||
public void setId(Long id) { this.id = id; }
|
||||
public Long getActivityId() { return activityId; }
|
||||
public void setActivityId(Long activityId) { this.activityId = activityId; }
|
||||
public Integer getInviteThreshold() { return inviteThreshold; }
|
||||
public void setInviteThreshold(Integer inviteThreshold) { this.inviteThreshold = inviteThreshold; }
|
||||
public String getRewardType() { return rewardType; }
|
||||
public void setRewardType(String rewardType) { this.rewardType = rewardType; }
|
||||
public String getRewardValue() { return rewardValue; }
|
||||
public void setRewardValue(String rewardValue) { this.rewardValue = rewardValue; }
|
||||
public Boolean getSkipValidation() { return skipValidation; }
|
||||
public void setSkipValidation(Boolean skipValidation) { this.skipValidation = skipValidation; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.mosquito.project.persistence.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
@Entity
|
||||
@Table(name = "api_keys")
|
||||
public class ApiKeyEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(nullable = false, length = 255)
|
||||
private String name;
|
||||
|
||||
@Column(name = "key_hash", nullable = false, length = 255, unique = true)
|
||||
private String keyHash;
|
||||
|
||||
@Column(nullable = false, length = 255)
|
||||
private String salt;
|
||||
|
||||
@Column(name = "created_at")
|
||||
private OffsetDateTime createdAt;
|
||||
|
||||
@Column(name = "revoked_at")
|
||||
private OffsetDateTime revokedAt;
|
||||
|
||||
@Column(name = "last_used_at")
|
||||
private OffsetDateTime lastUsedAt;
|
||||
|
||||
public Long getId() { return id; }
|
||||
public void setId(Long id) { this.id = id; }
|
||||
public String getName() { return name; }
|
||||
public void setName(String name) { this.name = name; }
|
||||
public String getKeyHash() { return keyHash; }
|
||||
public void setKeyHash(String keyHash) { this.keyHash = keyHash; }
|
||||
public String getSalt() { return salt; }
|
||||
public void setSalt(String salt) { this.salt = salt; }
|
||||
public OffsetDateTime getCreatedAt() { return createdAt; }
|
||||
public void setCreatedAt(OffsetDateTime createdAt) { this.createdAt = createdAt; }
|
||||
public OffsetDateTime getRevokedAt() { return revokedAt; }
|
||||
public void setRevokedAt(OffsetDateTime revokedAt) { this.revokedAt = revokedAt; }
|
||||
public OffsetDateTime getLastUsedAt() { return lastUsedAt; }
|
||||
public void setLastUsedAt(OffsetDateTime lastUsedAt) { this.lastUsedAt = lastUsedAt; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.mosquito.project.persistence.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Entity
|
||||
@Table(name = "daily_activity_stats")
|
||||
public class DailyActivityStatsEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(name = "activity_id", nullable = false)
|
||||
private Long activityId;
|
||||
|
||||
@Column(name = "stat_date", nullable = false)
|
||||
private LocalDate statDate;
|
||||
|
||||
@Column(name = "views", nullable = false)
|
||||
private Integer views;
|
||||
|
||||
@Column(name = "shares", nullable = false)
|
||||
private Integer shares;
|
||||
|
||||
@Column(name = "new_registrations", nullable = false)
|
||||
private Integer newRegistrations;
|
||||
|
||||
@Column(name = "conversions", nullable = false)
|
||||
private Integer conversions;
|
||||
|
||||
public Long getId() { return id; }
|
||||
public void setId(Long id) { this.id = id; }
|
||||
public Long getActivityId() { return activityId; }
|
||||
public void setActivityId(Long activityId) { this.activityId = activityId; }
|
||||
public LocalDate getStatDate() { return statDate; }
|
||||
public void setStatDate(LocalDate statDate) { this.statDate = statDate; }
|
||||
public Integer getViews() { return views; }
|
||||
public void setViews(Integer views) { this.views = views; }
|
||||
public Integer getShares() { return shares; }
|
||||
public void setShares(Integer shares) { this.shares = shares; }
|
||||
public Integer getNewRegistrations() { return newRegistrations; }
|
||||
public void setNewRegistrations(Integer newRegistrations) { this.newRegistrations = newRegistrations; }
|
||||
public Integer getConversions() { return conversions; }
|
||||
public void setConversions(Integer conversions) { this.conversions = conversions; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.mosquito.project.persistence.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Entity
|
||||
@Table(name = "multi_level_reward_rules")
|
||||
public class MultiLevelRewardRuleEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(name = "activity_id", nullable = false)
|
||||
private Long activityId;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Integer level;
|
||||
|
||||
@Column(name = "reward_value", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal rewardValue;
|
||||
|
||||
@Column(name = "is_percentage")
|
||||
private Boolean percentage;
|
||||
|
||||
public Long getId() { return id; }
|
||||
public void setId(Long id) { this.id = id; }
|
||||
public Long getActivityId() { return activityId; }
|
||||
public void setActivityId(Long activityId) { this.activityId = activityId; }
|
||||
public Integer getLevel() { return level; }
|
||||
public void setLevel(Integer level) { this.level = level; }
|
||||
public BigDecimal getRewardValue() { return rewardValue; }
|
||||
public void setRewardValue(BigDecimal rewardValue) { this.rewardValue = rewardValue; }
|
||||
public Boolean getPercentage() { return percentage; }
|
||||
public void setPercentage(Boolean percentage) { this.percentage = percentage; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.mosquito.project.persistence.repository;
|
||||
|
||||
import com.mosquito.project.persistence.entity.ActivityEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface ActivityRepository extends JpaRepository<ActivityEntity, Long> {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.mosquito.project.persistence.repository;
|
||||
|
||||
import com.mosquito.project.persistence.entity.ActivityRewardEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ActivityRewardRepository extends JpaRepository<ActivityRewardEntity, Long> {
|
||||
List<ActivityRewardEntity> findByActivityIdOrderByInviteThresholdAsc(Long activityId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.mosquito.project.persistence.repository;
|
||||
|
||||
import com.mosquito.project.persistence.entity.ApiKeyEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ApiKeyRepository extends JpaRepository<ApiKeyEntity, Long> {
|
||||
Optional<ApiKeyEntity> findByKeyHash(String keyHash);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.mosquito.project.persistence.repository;
|
||||
|
||||
import com.mosquito.project.persistence.entity.DailyActivityStatsEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface DailyActivityStatsRepository extends JpaRepository<DailyActivityStatsEntity, Long> {
|
||||
Optional<DailyActivityStatsEntity> findByActivityIdAndStatDate(Long activityId, LocalDate statDate);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.mosquito.project.persistence.repository;
|
||||
|
||||
import com.mosquito.project.persistence.entity.MultiLevelRewardRuleEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MultiLevelRewardRuleRepository extends JpaRepository<MultiLevelRewardRuleEntity, Long> {
|
||||
List<MultiLevelRewardRuleEntity> findByActivityIdOrderByLevelAsc(Long activityId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user