Skip to content

Commit

Permalink
chore: merge dev-test
Browse files Browse the repository at this point in the history
  • Loading branch information
Sotatek-ThinhVu committed May 9, 2024
2 parents b8f6eca + f8a75dd commit 5cd3105
Show file tree
Hide file tree
Showing 29 changed files with 598 additions and 100 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<version.lombok-mapstruct-binding>0.2.0</version.lombok-mapstruct-binding>
<org.projectlombok.version>1.18.24</org.projectlombok.version>
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
<version.explorer-common>0.9.0-PR198</version.explorer-common>
<version.explorer-common>0.9.0-PR202</version.explorer-common>
<version.spring-cloud-aws>2.4.2</version.spring-cloud-aws>
<version.lombok>1.18.26</version.lombok>
<version.eclipse.jgit>6.5.0.202303070854-r</version.eclipse.jgit>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.cardanofoundation.job.common.enumeration;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;

@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
@RequiredArgsConstructor
@Getter
public enum EventType {
DELEGATION("Delegation"),
DE_REGISTRATION("Deregistration"),
REGISTRATION("Registration"),
REWARDS("Rewards"),
WITHDRAWAL("Withdrawal"),
POOL_UPDATE("Pool Update"),
POOL_SIZE("Pool Size");
String value;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package org.cardanofoundation.job.dto.report.pool;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import lombok.Builder;
import lombok.Data;

import org.cardanofoundation.job.util.report.ColumnFieldEnum;
import org.cardanofoundation.job.util.report.ColumnTitleEnum;
import org.cardanofoundation.job.util.report.ExportColumn;
import org.cardanofoundation.job.util.report.ExportColumn.Alignment;

@Builder
@Data
public class InformationReport {
private Date createdAt;

private String reportType;

private String poolId;

private String stakeAddress;

private String reportName;

private String dateRange;

private String epochRange;

private String dateTimeFormat;

private String events;

private String isADATransfers;

private String isPoolSize;

public static List<ExportColumn> buildExportColumn(Boolean isPoolReport) {
List<ExportColumn> columns = new ArrayList<>();
columns.add(
new ExportColumn(
ColumnFieldEnum.CREATED_AT_COLUMN, ColumnTitleEnum.CREATED_AT_TITLE, Alignment.LEFT));
columns.add(
new ExportColumn(
ColumnFieldEnum.REPORT_TYPE_COLUMN, ColumnTitleEnum.REPORT_TYPE_TITLE, Alignment.LEFT));
if (isPoolReport) {
columns.add(
new ExportColumn(
ColumnFieldEnum.POOL_ID_COLUMN, ColumnTitleEnum.POOL_ID_TITLE, Alignment.LEFT));
} else {
columns.add(
new ExportColumn(
ColumnFieldEnum.STAKE_ADDRESS_COLUMN,
ColumnTitleEnum.STAKE_ADDRESS_TITLE,
Alignment.LEFT));
}
columns.add(
new ExportColumn(
ColumnFieldEnum.REPORT_NAME_COLUMN, ColumnTitleEnum.REPORT_NAME_TITLE, Alignment.LEFT));
if (isPoolReport) {
columns.add(
new ExportColumn(
ColumnFieldEnum.EPOCH_RANGE_COLUMN,
ColumnTitleEnum.EPOCH_RANGE_TITLE,
Alignment.LEFT));
} else {
columns.add(
new ExportColumn(
ColumnFieldEnum.DATE_RANGE_COLUMN, ColumnTitleEnum.DATE_RANGE_TITLE, Alignment.LEFT));
}
columns.add(
new ExportColumn(
ColumnFieldEnum.DATE_TIME_FORTMAT_COLUMN,
ColumnTitleEnum.DATE_TIME_FORMAT_TITLE,
Alignment.LEFT));
columns.add(
new ExportColumn(
ColumnFieldEnum.EVENTS_COLUMN, ColumnTitleEnum.EVENTS_TITLE, Alignment.LEFT));
if (isPoolReport) {
columns.add(
new ExportColumn(
ColumnFieldEnum.POOL_SIZE_COLUMN, ColumnTitleEnum.POOL_SIZE_TITLE, Alignment.LEFT));
} else {
columns.add(
new ExportColumn(
ColumnFieldEnum.ADA_TRANSFERS_COLUMN,
ColumnTitleEnum.ADA_TRANSFERS_TITLE,
Alignment.LEFT));
}
return columns;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.cardanofoundation.explorer.common.entity.explorer.PoolReportHistory;
import org.cardanofoundation.explorer.common.entity.explorer.ReportHistory;
import org.cardanofoundation.explorer.common.entity.explorer.StakeKeyReportHistory;
import org.cardanofoundation.explorer.common.model.ReportMessage;
import org.cardanofoundation.job.repository.explorer.PoolReportHistoryRepository;
import org.cardanofoundation.job.repository.explorer.StakeKeyReportHistoryRepository;
import org.cardanofoundation.job.service.PoolReportService;
Expand All @@ -34,22 +35,31 @@ public class ReportsListener {

@KafkaListener(topics = "${kafka.listeners.topics.reports}")
public void consume(
ConsumerRecord<String, ReportHistory> consumerRecord, Acknowledgment acknowledgment) {
ConsumerRecord<String, ReportMessage> consumerRecord, Acknowledgment acknowledgment) {
try {
ReportHistory reportHistory = consumerRecord.value();
ReportMessage reportMessage = consumerRecord.value();
ReportHistory reportHistory = reportMessage.getReportHistory();
log.info(
"Receive report history {} with type {}", reportHistory.getId(), reportHistory.getType());

switch (reportHistory.getType()) {
case STAKE_KEY:
StakeKeyReportHistory stakeKeyReportHistory =
stakeKeyReportHistoryRepository.findByReportHistoryId(reportHistory.getId());
stakeKeyReportService.exportStakeKeyReport(stakeKeyReportHistory);
stakeKeyReportService.exportStakeKeyReport(
stakeKeyReportHistory,
reportMessage.getZoneOffset(),
reportMessage.getTimePattern(),
reportMessage.getDateFormat());
break;
case POOL_ID:
PoolReportHistory poolReportHistory =
poolReportHistoryRepository.findByReportHistoryId(reportHistory.getId());
poolReportService.exportPoolReport(poolReportHistory);
poolReportService.exportPoolReport(
poolReportHistory,
reportMessage.getZoneOffset(),
reportMessage.getTimePattern(),
reportMessage.getDateFormat());
break;
default:
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ public interface LatestVotingProcedureProjection {
Vote getVote();

Long getPoolId();

Long getSlotGov();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.cardanofoundation.job.projection;

public interface PoolHashProjection {

Long getPoolId();

Long getSlot();
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
package org.cardanofoundation.job.projection;

import java.math.BigInteger;

public interface PoolInfoProjection {

Long getId();

String getPoolId();
String getHashRaw();

String getPoolView();

String getPoolName();

BigInteger getActiveStake();

Long getPoolId();
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ List<LatestVotingProcedure> getAllByIdIn(
@Query(
value =
"SELECT lvp.voterHash as voterHash, lvp.govActionTxHash as govActionTxHash, lvp.govActionIndex as govActionIndex,"
+ " lvp.vote as vote, ph.id as poolId "
+ " lvp.vote as vote, ph.id as poolId, gap.slot as slotGov"
+ " FROM LatestVotingProcedure lvp"
+ " join GovActionProposal gap on gap.txHash = lvp.govActionTxHash and gap.index = lvp.govActionIndex "
+ " join PoolHash ph on lvp.voterHash = ph.hashRaw"
+ " WHERE lvp.voterType = :voterType")
List<LatestVotingProcedureProjection> findAllByVoterType(@Param("voterType") VoterType voterType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.springframework.transaction.annotation.Transactional;

import org.cardanofoundation.explorer.common.entity.ledgersync.PoolHash;
import org.cardanofoundation.job.projection.PoolHashProjection;
import org.cardanofoundation.job.projection.PoolHashUrlProjection;
import org.cardanofoundation.job.projection.PoolInfoProjection;
import org.cardanofoundation.job.projection.PoolRegistrationProjection;
Expand Down Expand Up @@ -48,7 +49,7 @@ Page<PoolRegistrationProjection> getPoolRegistrationByPool(

@Query(
value =
"SELECT ph.id AS id, pod.poolName AS poolName, ph.hashRaw AS poolId, ph.view AS poolView "
"SELECT ph.id AS id, pod.poolName AS poolName, ph.hashRaw AS hashRaw, ph.view AS poolView "
+ "FROM PoolHash ph "
+ "LEFT JOIN PoolOfflineData pod ON ph.id = pod.pool.id AND pod.id = (SELECT max(pod2.id) FROM PoolOfflineData pod2 WHERE ph.id = pod2.pool.id ) "
+ "WHERE ph.view = :poolView "
Expand All @@ -60,8 +61,9 @@ Page<PoolRegistrationProjection> getPoolRegistrationByPool(

@Query(
value =
"select min(d.slotNo) from PoolHash ph"
+ " join Delegation d on d.poolHash.id = ph.id"
+ " where ph.hashRaw =:poolHash")
Long getSlotNoWhenFirstDelegationByPoolHash(@Param("poolHash") String poolHash);
"select coalesce(min(d.slotNo),0) as slot, ph.id as poolId"
+ " from PoolHash ph"
+ " left join Delegation d on d.poolHash.id = ph.id"
+ " group by ph.id")
List<PoolHashProjection> getSlotNoWhenFirstDelegation();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.cardanofoundation.job.repository.ledgersync;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import org.cardanofoundation.explorer.common.entity.ledgersync.PoolInfo;
import org.cardanofoundation.job.projection.PoolInfoProjection;

@Repository
public interface PoolInfoRepository extends JpaRepository<PoolInfo, Long> {
@Query(
value =
"select pi.poolId as poolId, pi.activeStake as activeStake from PoolInfo pi where pi.fetchedAtEpoch = :epochNo")
List<PoolInfoProjection> findAllByEpochNo(@Param("epochNo") Integer epochNo);
}

0 comments on commit 5cd3105

Please sign in to comment.