Skip to content
This repository was archived by the owner on May 14, 2021. It is now read-only.

Commit e7f6675

Browse files
fuzzyamioryband
authored andcommitted
fetch branch 'include lastModified field in account balances' from stellar/go
from stellar#942
1 parent 5bddbf8 commit e7f6675

File tree

7 files changed

+22
-3
lines changed

7 files changed

+22
-3
lines changed

protocols/horizon/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ type Account struct {
4242
SubentryCount int32 `json:"subentry_count"`
4343
InflationDestination string `json:"inflation_destination,omitempty"`
4444
HomeDomain string `json:"home_domain,omitempty"`
45+
LastModifiedLedger uint32 `json:"last_modified_ledger"`
4546
Thresholds AccountThresholds `json:"thresholds"`
4647
Flags AccountFlags `json:"flags"`
4748
Balances []Balance `json:"balances"`
@@ -130,6 +131,7 @@ type Balance struct {
130131
Limit string `json:"limit,omitempty"`
131132
BuyingLiabilities string `json:"buying_liabilities"`
132133
SellingLiabilities string `json:"selling_liabilities"`
134+
LastModifiedLedger uint32 `json:"last_modified_ledger,omitempty"`
133135
base.Asset
134136
}
135137

services/horizon/internal/actions_account_test.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,29 @@ import (
88
)
99

1010
func TestAccountActions_Show(t *testing.T) {
11-
ht := StartHTTPTest(t, "base")
11+
ht := StartHTTPTest(t, "allow_trust")
1212
defer ht.Finish()
1313

1414
// existing account
1515
w := ht.Get(
16-
"/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H",
16+
"/accounts/GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU",
1717
)
1818
if ht.Assert.Equal(200, w.Code) {
1919

2020
var result horizon.Account
2121
err := json.Unmarshal(w.Body.Bytes(), &result)
2222
ht.Require.NoError(err)
23-
ht.Assert.Equal("3", result.Sequence)
23+
ht.Assert.Equal("8589934593", result.Sequence)
24+
25+
ht.Assert.NotEqual(0, result.LastModifiedLedger)
26+
for _, balance := range result.Balances {
27+
if balance.Type == "native" {
28+
ht.Assert.Equal(uint32(0), balance.LastModifiedLedger)
29+
} else {
30+
ht.Assert.NotEqual(uint32(0), balance.LastModifiedLedger)
31+
}
32+
}
33+
2434
}
2535

2636
// missing account

services/horizon/internal/db2/core/account.go

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ var selectAccount = sq.Select(
8282
"a.homedomain",
8383
"a.thresholds",
8484
"a.flags",
85+
"a.lastmodified",
8586
// Liabilities can be NULL so can error without `coalesce`:
8687
// `Invalid value for xdr.Int64`
8788
"coalesce(a.buyingliabilities, 0) as buyingliabilities",

services/horizon/internal/db2/core/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type Account struct {
3737
HomeDomain null.String
3838
Thresholds xdr.Thresholds
3939
Flags xdr.AccountFlags
40+
LastModified uint32
4041
BuyingLiabilities xdr.Int64 `db:"buyingliabilities"`
4142
SellingLiabilities xdr.Int64 `db:"sellingliabilities"`
4243
}
@@ -144,6 +145,7 @@ type Trustline struct {
144145
Tlimit xdr.Int64
145146
Balance xdr.Int64
146147
Flags int32
148+
LastModified uint32 `db:"lastmodified"`
147149
BuyingLiabilities xdr.Int64 `db:"buyingliabilities"`
148150
SellingLiabilities xdr.Int64 `db:"sellingliabilities"`
149151
}

services/horizon/internal/db2/core/trustline.go

+1
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ var selectTrustline = sq.Select(
111111
"tl.tlimit",
112112
"tl.balance",
113113
"tl.flags",
114+
"tl.lastmodified",
114115
// Liabilities can be NULL so can error without `coalesce`:
115116
// `Invalid value for xdr.Int64`
116117
"coalesce(tl.buyingliabilities, 0) as buyingliabilities",

services/horizon/internal/resourceadapter/account.go

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func PopulateAccount(
2727
dest.SubentryCount = ca.Numsubentries
2828
dest.InflationDestination = ca.Inflationdest.String
2929
dest.HomeDomain = ca.HomeDomain.String
30+
dest.LastModifiedLedger = ca.LastModified
3031

3132
PopulateAccountFlags(&dest.Flags, ca)
3233
PopulateAccountThresholds(&dest.Thresholds, ca)

services/horizon/internal/resourceadapter/balance.go

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ func PopulateBalance(ctx context.Context, dest *Balance, row core.Trustline) (er
2222
dest.Limit = amount.String(row.Tlimit)
2323
dest.Issuer = row.Issuer
2424
dest.Code = row.Assetcode
25+
dest.LastModifiedLedger = row.LastModified
2526
return
2627
}
2728

@@ -34,6 +35,7 @@ func PopulateNativeBalance(dest *Balance, stroops, buyingLiabilities, sellingLia
3435
dest.Balance = amount.String(stroops)
3536
dest.BuyingLiabilities = amount.String(buyingLiabilities)
3637
dest.SellingLiabilities = amount.String(sellingLiabilities)
38+
dest.LastModifiedLedger = 0
3739
dest.Limit = ""
3840
dest.Issuer = ""
3941
dest.Code = ""

0 commit comments

Comments
 (0)