Skip to content

Commit be9e9b8

Browse files
author
Mateusz Czeladka
committed
feat: ability to inspect drep vote delegation operations
1 parent f02c88e commit be9e9b8

34 files changed

+568
-152
lines changed

api/src/main/java/org/cardanofoundation/rosetta/RosettaApiApplication.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
import org.springframework.context.annotation.Profile;
1313
import org.springframework.core.Ordered;
1414
import org.springframework.scheduling.annotation.EnableScheduling;
15+
import org.springframework.transaction.annotation.EnableTransactionManagement;
1516
import org.springframework.web.client.RestTemplate;
1617
import org.springframework.web.filter.CommonsRequestLoggingFilter;
1718
import org.springframework.web.filter.ForwardedHeaderFilter;
1819
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
1920
import io.swagger.v3.oas.annotations.info.Info;
2021
import org.openapitools.jackson.nullable.JsonNullableModule;
2122

22-
2323
@SpringBootApplication
2424
@EntityScan({
2525
"org.cardanofoundation.rosetta.api.account.model.entity",
@@ -29,6 +29,7 @@
2929
"org.cardanofoundation.rosetta.api.common.model.entity"})
3030
@OpenAPIDefinition(info = @Info(title = "APIs", version = "1.0", description = "Rosetta APIs v1.0"))
3131
@EnableScheduling
32+
@EnableTransactionManagement
3233
public class RosettaApiApplication {
3334

3435
public static void main(String[] args) {

api/src/main/java/org/cardanofoundation/rosetta/api/block/mapper/TransactionMapper.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,28 @@ public interface TransactionMapper {
3535

3636
PoolRetirement mapEntityToPoolRetirement(PoolRetirementEntity entity);
3737

38+
@Mapping(source = "txHash", target = "txHash")
39+
@Mapping(source = "certIndex", target = "certIndex")
40+
@Mapping(source = "address", target = "address")
41+
@Mapping(source = "drepHash", target = "drep.drepId") // no this is not a mistake we don't have bech32 representation in rosetta
42+
@Mapping(source = "drepType", target = "drep.drepType")
43+
DRepDelegation mapEntityToDRepDelegation(DrepDelegationVoteEntity entity);
44+
45+
@Mapping(source = "txHash", target = "txHash")
46+
@Mapping(source = "certIndex", target = "certIndex")
47+
@Mapping(source = "address", target = "address")
48+
@Mapping(source = "drep.drepId", target = "drepHash")
49+
@Mapping(source = "drep.drepType", target = "drepType")
50+
DrepDelegationVoteEntity mapDRepDelegationToEntity(DRepDelegation dRepDelegation);
51+
3852
@Mapping(target = "type", constant = Constants.OPERATION_TYPE_POOL_RETIREMENT)
3953
@Mapping(target = "status", source = "status.status")
4054
@Mapping(target = "account.address", source = "model.poolId")
4155
@Mapping(target = "metadata.epoch", source = "model.epoch")
4256
@Mapping(target = "operationIdentifier", source = "index", qualifiedByName = "OperationIdentifier")
4357
Operation mapPoolRetirementToOperation(PoolRetirement model, OperationStatus status, int index);
4458

45-
StakePoolDelegation mapDelegationEntityToDelegation(DelegationEntity entity);
59+
StakePoolDelegation mapPoolDelegationEntityToDelegation(PoolDelegationEntity entity);
4660

4761
@Mapping(target = "status", source = "status.status")
4862
@Mapping(target = "type", constant = Constants.OPERATION_TYPE_STAKE_DELEGATION)

api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/DRepDelegation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
@Builder
1111
@NoArgsConstructor
1212
@AllArgsConstructor
13+
@Setter
1314
public class DRepDelegation {
1415

1516
private String txHash;
@@ -20,10 +21,10 @@ public class DRepDelegation {
2021
@AllArgsConstructor
2122
@NoArgsConstructor
2223
@Getter
24+
@Setter
2325
public static class DRep {
2426

2527
private String drepId;
26-
2728
private DRepType drepType;
2829

2930
public static DRepDelegation.DRep convertDRepToRosetta(DRepParams dRepParams) {

api/src/main/java/org/cardanofoundation/rosetta/api/block/model/entity/DelegationId.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ public class DelegationId implements Serializable {
99

1010
private String txHash;
1111
private long certIndex;
12+
1213
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.cardanofoundation.rosetta.api.block.model.entity;
2+
3+
import java.io.Serializable;
4+
import jakarta.persistence.Column;
5+
6+
import lombok.EqualsAndHashCode;
7+
8+
@EqualsAndHashCode
9+
public class DelegationVoteId implements Serializable {
10+
11+
@Column(name = "tx_hash")
12+
private String txHash;
13+
14+
@Column(name = "cert_index")
15+
private long certIndex;
16+
17+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package org.cardanofoundation.rosetta.api.block.model.entity;
2+
3+
import java.time.LocalDateTime;
4+
import jakarta.persistence.*;
5+
6+
import lombok.AllArgsConstructor;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import lombok.Setter;
10+
11+
import com.bloxbean.cardano.client.transaction.spec.cert.StakeCredType;
12+
import com.bloxbean.cardano.yaci.core.model.governance.DrepType;
13+
14+
@Getter
15+
@Setter
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
@Entity
19+
@Table(name = "delegation_vote")
20+
@IdClass(DelegationVoteId.class)
21+
public class DrepDelegationVoteEntity {
22+
23+
@jakarta.persistence.Id
24+
@Column(name = "tx_hash")
25+
private String txHash;
26+
27+
@jakarta.persistence.Id
28+
@Column(name = "cert_index")
29+
private long certIndex;
30+
31+
@Column(name = "slot")
32+
private Long slot;
33+
34+
@Column(name = "block")
35+
private Long blockNumber;
36+
37+
@Column(name = "block_time")
38+
private Long blockTime;
39+
40+
@Column(name = "update_datetime")
41+
private LocalDateTime updateDateTime;
42+
43+
@Column(name = "address")
44+
private String address;
45+
46+
@Column(name = "drep_hash") // actual drep id as hex hash
47+
private String drepHash;
48+
49+
@Column(name = "drep_id") // bech 32
50+
private String drepId;
51+
52+
@Column(name = "drep_type")
53+
@Enumerated(EnumType.STRING)
54+
private DrepType drepType;
55+
56+
@Column(name = "credential")
57+
private String credential;
58+
59+
@Column(name = "cred_type")
60+
@Enumerated(EnumType.STRING)
61+
private StakeCredType credType;
62+
63+
@Column(name = "epoch")
64+
private Integer epoch;
65+
66+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
@Entity
1313
@Table(name = "delegation")
1414
@IdClass(DelegationId.class)
15-
public class DelegationEntity {
15+
public class PoolDelegationEntity {
1616

1717
@Id
1818
@Column(name = "tx_hash")

api/src/main/java/org/cardanofoundation/rosetta/api/block/model/entity/PoolRegistrationId.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ public class PoolRegistrationId implements Serializable {
99

1010
private String txHash;
1111
private int certIndex;
12+
1213
}

api/src/main/java/org/cardanofoundation/rosetta/api/block/model/entity/StakeRegistrationId.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ public class StakeRegistrationId implements Serializable {
99

1010
private String txHash;
1111
private long certIndex;
12+
1213
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.cardanofoundation.rosetta.api.block.model.repository;
2+
3+
import java.util.List;
4+
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
import org.cardanofoundation.rosetta.api.block.model.entity.DrepDelegationVoteEntity;
9+
10+
@Repository
11+
public interface DRepVoteDelegationRepository extends JpaRepository<DrepDelegationVoteEntity, DrepDelegationVoteEntity> {
12+
13+
List<DrepDelegationVoteEntity> findByTxHashIn(List<String> txHashes);
14+
15+
}

0 commit comments

Comments
 (0)