Skip to content

Commit 3001249

Browse files
authored
Refactor account layer (#86)
refactor: Refactor account layers
1 parent 0f64cdd commit 3001249

30 files changed

+448
-423
lines changed

api/src/main/java/org/cardanofoundation/rosetta/api/account/controller/AccountApiDelegate.java

Lines changed: 0 additions & 53 deletions
This file was deleted.
Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
package org.cardanofoundation.rosetta.api.account.controller;
22

33
import jakarta.validation.Valid;
4+
45
import lombok.RequiredArgsConstructor;
5-
import org.cardanofoundation.rosetta.api.account.service.AccountService;
6+
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.web.bind.annotation.RequestBody;
9+
import org.springframework.web.bind.annotation.RestController;
10+
import org.openapitools.client.api.AccountApi;
611
import org.openapitools.client.model.AccountBalanceRequest;
712
import org.openapitools.client.model.AccountBalanceResponse;
813
import org.openapitools.client.model.AccountCoinsRequest;
914
import org.openapitools.client.model.AccountCoinsResponse;
10-
import org.springframework.http.ResponseEntity;
11-
import org.springframework.web.bind.annotation.RequestBody;
12-
import org.springframework.web.bind.annotation.RestController;
15+
16+
import org.cardanofoundation.rosetta.api.account.service.AccountService;
1317

1418
@RestController
1519
@RequiredArgsConstructor
16-
public class AccountApiDelegateImplementation implements AccountApiDelegate {
20+
public class AccountApiImplementation implements AccountApi {
1721

1822
private final AccountService accountService;
1923

2024
@Override
2125
public ResponseEntity<AccountBalanceResponse> accountBalance(
2226
@Valid @RequestBody AccountBalanceRequest accountBalanceRequest) {
2327
return ResponseEntity.ok(accountService.getAccountBalance(accountBalanceRequest));
24-
2528
}
2629

2730
@Override
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.cardanofoundation.rosetta.api.account.model.domain;
2+
3+
import java.math.BigInteger;
4+
5+
import lombok.Builder;
6+
7+
import org.cardanofoundation.rosetta.api.account.model.entity.AddressBalanceEntity;
8+
9+
@Builder
10+
public record AddressBalance(String address,
11+
String unit,
12+
Long slot,
13+
BigInteger quantity,
14+
String policy,
15+
String assetName) {
16+
17+
public static AddressBalance fromEntity(AddressBalanceEntity addressBalanceEntity) {
18+
return AddressBalance.builder()
19+
.assetName(addressBalanceEntity.getAssetName())
20+
.address(addressBalanceEntity.getAddress())
21+
.unit(addressBalanceEntity.getUnit())
22+
.slot(addressBalanceEntity.getSlot())
23+
.quantity(addressBalanceEntity.getQuantity())
24+
.policy(addressBalanceEntity.getPolicy())
25+
.build();
26+
}
27+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package org.cardanofoundation.rosetta.api.account.model.domain;
2+
3+
import java.math.BigInteger;
4+
import java.util.List;
5+
6+
import lombok.AllArgsConstructor;
7+
import lombok.Builder;
8+
import lombok.Data;
9+
import lombok.NoArgsConstructor;
10+
11+
import org.cardanofoundation.rosetta.api.account.model.entity.AddressUtxoEntity;
12+
import org.cardanofoundation.rosetta.api.account.model.entity.Amt;
13+
import org.cardanofoundation.rosetta.api.block.model.entity.UtxoKey;
14+
15+
@Data
16+
@AllArgsConstructor
17+
@NoArgsConstructor
18+
@Builder
19+
public class Utxo {
20+
21+
private String txHash;
22+
private Integer outputIndex;
23+
private Long slot;
24+
private String blockHash;
25+
private Integer epoch;
26+
private String ownerAddr;
27+
private String ownerAddrFull;
28+
private String ownerStakeAddr;
29+
private String ownerPaymentCredential;
30+
private String ownerStakeCredential;
31+
private BigInteger lovelaceAmount;
32+
private List<Amt> amounts;
33+
private String dataHash;
34+
private String inlineDatum;
35+
private String scriptRef;
36+
private String referenceScriptHash;
37+
private Boolean isCollateralReturn;
38+
39+
public Utxo(String txHash, Integer outputIndex) {
40+
this.txHash = txHash;
41+
this.outputIndex = outputIndex;
42+
}
43+
44+
public static Utxo fromUtxoKey(UtxoKey utxoKey) {
45+
return new Utxo(utxoKey.getTxHash(), utxoKey.getOutputIndex());
46+
}
47+
48+
public void populateFromUtxoEntity(AddressUtxoEntity entity) {
49+
this.slot = entity.getSlot();
50+
this.blockHash = entity.getBlockHash();
51+
this.epoch = entity.getEpoch();
52+
this.ownerAddr = entity.getOwnerAddr();
53+
this.ownerAddrFull = entity.getOwnerAddrFull();
54+
this.ownerStakeAddr = entity.getOwnerStakeAddr();
55+
this.ownerPaymentCredential = entity.getOwnerPaymentCredential();
56+
this.ownerStakeCredential = entity.getOwnerStakeCredential();
57+
this.lovelaceAmount = entity.getLovelaceAmount();
58+
this.amounts = entity.getAmounts();
59+
this.dataHash = entity.getDataHash();
60+
this.inlineDatum = entity.getInlineDatum();
61+
this.scriptRef = entity.getScriptRef();
62+
this.referenceScriptHash = entity.getReferenceScriptHash();
63+
this.isCollateralReturn = entity.getIsCollateralReturn();
64+
}
65+
}

api/src/main/java/org/cardanofoundation/rosetta/api/account/model/dto/AddressBalanceDTO.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

api/src/main/java/org/cardanofoundation/rosetta/api/account/model/dto/UtxoDto.java

Lines changed: 0 additions & 63 deletions
This file was deleted.
Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
package org.cardanofoundation.rosetta.api.account.model.entity;
22

3-
import jakarta.persistence.*;
3+
import java.math.BigInteger;
4+
import jakarta.persistence.Column;
5+
import jakarta.persistence.Entity;
6+
import jakarta.persistence.Id;
7+
import jakarta.persistence.IdClass;
8+
import jakarta.persistence.Table;
9+
410
import lombok.AllArgsConstructor;
511
import lombok.Data;
12+
import lombok.EqualsAndHashCode;
613
import lombok.NoArgsConstructor;
714
import lombok.experimental.SuperBuilder;
8-
import org.cardanofoundation.rosetta.api.block.model.entity.BlockAwareEntity;
15+
916
import org.hibernate.annotations.DynamicUpdate;
1017

11-
import java.math.BigInteger;
18+
import org.cardanofoundation.rosetta.api.block.model.entity.BlockAwareEntity;
1219

1320
@Data
21+
@EqualsAndHashCode(callSuper = true)
1422
@NoArgsConstructor
1523
@AllArgsConstructor
1624
@SuperBuilder
@@ -19,41 +27,42 @@
1927
@IdClass(AddressBalanceId.class)
2028
@DynamicUpdate
2129
public class AddressBalanceEntity extends BlockAwareEntity {
22-
@Id
23-
@Column(name = "address")
24-
private String address;
2530

26-
@Id
27-
@Column(name = "unit")
28-
private String unit;
31+
@Id
32+
@Column(name = "address")
33+
private String address;
34+
35+
@Id
36+
@Column(name = "unit")
37+
private String unit;
2938

30-
@Id
31-
@Column(name = "slot")
32-
private Long slot;
39+
@Id
40+
@Column(name = "slot")
41+
private Long slot;
3342

34-
@Column(name = "quantity")
35-
private BigInteger quantity;
43+
@Column(name = "quantity")
44+
private BigInteger quantity;
3645

37-
//Only set if address doesn't fit in ownerAddr field. Required for few Byron Era addr
38-
@Column(name = "addr_full")
39-
private String addrFull;
46+
//Only set if address doesn't fit in ownerAddr field. Required for few Byron Era addr
47+
@Column(name = "addr_full")
48+
private String addrFull;
4049

41-
@Column(name = "policy")
42-
private String policy;
50+
@Column(name = "policy")
51+
private String policy;
4352

44-
@Column(name = "asset_name")
45-
private String assetName;
53+
@Column(name = "asset_name")
54+
private String assetName;
4655

47-
@Column(name = "payment_credential")
48-
private String paymentCredential;
56+
@Column(name = "payment_credential")
57+
private String paymentCredential;
4958

50-
@Column(name = "stake_address")
51-
private String stakeAddress;
59+
@Column(name = "stake_address")
60+
private String stakeAddress;
5261

53-
@Column(name = "block_hash")
54-
private String blockHash;
62+
@Column(name = "block_hash")
63+
private String blockHash;
5564

56-
@Column(name = "epoch")
57-
private Integer epoch;
65+
@Column(name = "epoch")
66+
private Integer epoch;
5867

5968
}

0 commit comments

Comments
 (0)