Skip to content

Commit 40f1cab

Browse files
committed
fetch network redeemed balance codes
1 parent 7489fb0 commit 40f1cab

9 files changed

Lines changed: 699 additions & 467 deletions

api/handlers/account_handlers.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,7 @@ func GetReferralNetwork(w http.ResponseWriter, r *http.Request) {
3535
func UnlinkReferralNetwork(w http.ResponseWriter, r *http.Request) {
3636
router.WrapRequireAuth(controller.UnlinkReferralNetwork, w, r)
3737
}
38+
39+
func GetNetworkRedeemedBalanceCodes(w http.ResponseWriter, r *http.Request) {
40+
router.WrapRequireAuth(controller.GetNetworkRedeemedBalanceCodes, w, r)
41+
}

api/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ Options:
163163
router.NewRoute("GET", "/account/unlink-referral-network", handlers.UnlinkReferralNetwork),
164164
router.NewRoute("POST", "/account/set-referral", handlers.SetNetworkReferral),
165165
router.NewRoute("GET", "/account/points", handlers.GetAccountPoints),
166+
router.NewRoute("GET", "/account/balance-codes", handlers.GetNetworkRedeemedBalanceCodes),
166167
router.NewRoute("POST", "/referral-code/validate", handlers.ValidateReferralCode),
167168
router.NewRoute("GET", "/transfer/stats", handlers.TransferStats),
168169
router.NewRoute("GET", "/connect", handlers.AuthConnect),
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package controller
2+
3+
import (
4+
"github.com/urnetwork/server/model"
5+
"github.com/urnetwork/server/session"
6+
)
7+
8+
type GetNetworkRedeemedBalanceCodesResult struct {
9+
BalanceCodes []*model.RedeemedBalanceCode `json:"balance_codes"`
10+
Error *GetNetworkRedeemedBalanceCodesError `json:"error,omitempty"`
11+
}
12+
13+
type GetNetworkRedeemedBalanceCodesError struct {
14+
Message string `json:"message"`
15+
}
16+
17+
func GetNetworkRedeemedBalanceCodes(
18+
session *session.ClientSession,
19+
) (*GetNetworkRedeemedBalanceCodesResult, error) {
20+
balanceCodes, err := model.FetchNetworkRedeemedBalanceCodes(session)
21+
if err != nil {
22+
return &GetNetworkRedeemedBalanceCodesResult{
23+
Error: &GetNetworkRedeemedBalanceCodesError{
24+
Message: "Failed to fetch redeemed balance codes",
25+
},
26+
}, err
27+
}
28+
29+
return &GetNetworkRedeemedBalanceCodesResult{
30+
BalanceCodes: balanceCodes,
31+
}, nil
32+
33+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package controller
2+
3+
import (
4+
"context"
5+
"testing"
6+
"time"
7+
8+
"github.com/go-playground/assert/v2"
9+
"github.com/urnetwork/server"
10+
"github.com/urnetwork/server/jwt"
11+
"github.com/urnetwork/server/model"
12+
"github.com/urnetwork/server/session"
13+
)
14+
15+
func TestFetchNetworkRedeemedBalanceCodes(t *testing.T) {
16+
server.DefaultTestEnv().Run(func() {
17+
18+
ctx := context.Background()
19+
20+
networkIdA := server.NewId()
21+
22+
userIdA := server.NewId()
23+
guestMode := false
24+
isPro := false
25+
26+
clientSession := session.Testing_CreateClientSession(
27+
ctx,
28+
jwt.NewByJwt(networkIdA, userIdA, "a", guestMode, isPro),
29+
)
30+
31+
redeemed, err := GetNetworkRedeemedBalanceCodes(
32+
clientSession,
33+
)
34+
assert.Equal(t, err, nil)
35+
assert.Equal(t, len(redeemed.BalanceCodes), 0)
36+
37+
subscriptionYearDuration := 365 * 24 * time.Hour
38+
39+
balanceCode, err := model.CreateBalanceCode(
40+
ctx,
41+
1024,
42+
subscriptionYearDuration,
43+
100,
44+
"",
45+
"",
46+
"",
47+
)
48+
assert.Equal(t, err, nil)
49+
50+
args := &model.RedeemBalanceCodeArgs{
51+
Secret: balanceCode.Secret,
52+
NetworkId: clientSession.ByJwt.NetworkId,
53+
}
54+
55+
_, err = model.RedeemBalanceCode(args, ctx)
56+
assert.Equal(t, err, nil)
57+
58+
redeemed, err = GetNetworkRedeemedBalanceCodes(
59+
clientSession,
60+
)
61+
assert.Equal(t, err, nil)
62+
assert.Equal(t, len(redeemed.BalanceCodes), 1)
63+
assert.Equal(t, redeemed.BalanceCodes[0].BalanceCodeId, balanceCode.BalanceCodeId)
64+
65+
})
66+
}

db_migrations.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2679,4 +2679,13 @@ var migrations = []any{
26792679
newSqlMigration(`
26802680
CREATE UNIQUE INDEX proxy_device_config_client_id_instance_id ON proxy_device_config (client_id, instance_id)
26812681
`),
2682+
2683+
newSqlMigration(`
2684+
ALTER TABLE transfer_balance_code ADD COLUMN network_id uuid NULL;
2685+
`),
2686+
2687+
newSqlMigration(`
2688+
CREATE INDEX transfer_balance_code_network_id_end_time
2689+
ON transfer_balance_code(network_id, end_time);
2690+
`),
26822691
}

0 commit comments

Comments
 (0)