feat: get support chain api
This commit is contained in:
@@ -21,6 +21,20 @@ func AddSupportedAsset(network, token string, status int64) (*mdb.SupportedAsset
|
|||||||
if exist.ID > 0 {
|
if exist.ID > 0 {
|
||||||
return nil, constant.SupportedAssetAlreadyExists
|
return nil, constant.SupportedAssetAlreadyExists
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deleted, err := getSupportedAssetByNetworkAndTokenUnscoped(network, token)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if deleted.ID > 0 && deleted.DeletedAt.Valid {
|
||||||
|
deleted.Status = status
|
||||||
|
deleted.DeletedAt.Valid = false
|
||||||
|
if err := dao.Mdb.Unscoped().Save(deleted).Error; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return deleted, nil
|
||||||
|
}
|
||||||
|
|
||||||
asset := &mdb.SupportedAsset{
|
asset := &mdb.SupportedAsset{
|
||||||
Network: network,
|
Network: network,
|
||||||
Token: token,
|
Token: token,
|
||||||
@@ -30,6 +44,16 @@ func AddSupportedAsset(network, token string, status int64) (*mdb.SupportedAsset
|
|||||||
return asset, err
|
return asset, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getSupportedAssetByNetworkAndTokenUnscoped(network, token string) (*mdb.SupportedAsset, error) {
|
||||||
|
network, token = normalizeNetworkToken(network, token)
|
||||||
|
asset := new(mdb.SupportedAsset)
|
||||||
|
err := dao.Mdb.Unscoped().Model(asset).
|
||||||
|
Where("network = ?", network).
|
||||||
|
Where("token = ?", token).
|
||||||
|
Limit(1).Find(asset).Error
|
||||||
|
return asset, err
|
||||||
|
}
|
||||||
|
|
||||||
func GetSupportedAssetByNetworkAndToken(network, token string) (*mdb.SupportedAsset, error) {
|
func GetSupportedAssetByNetworkAndToken(network, token string) (*mdb.SupportedAsset, error) {
|
||||||
network, token = normalizeNetworkToken(network, token)
|
network, token = normalizeNetworkToken(network, token)
|
||||||
asset := new(mdb.SupportedAsset)
|
asset := new(mdb.SupportedAsset)
|
||||||
|
|||||||
@@ -322,6 +322,17 @@ func TestSupportedAssetCRUD(t *testing.T) {
|
|||||||
if resp["status_code"].(float64) != 200 {
|
if resp["status_code"].(float64) != 200 {
|
||||||
t.Fatalf("delete supported asset failed: %v", resp)
|
t.Fatalf("delete supported asset failed: %v", resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// recreate after delete should restore soft-deleted row, not unique-conflict
|
||||||
|
rec = doPostWithToken(e, "/payments/gmpay/v1/supported-assets/add", map[string]interface{}{
|
||||||
|
"network": "arbitrum",
|
||||||
|
"token": "usdc",
|
||||||
|
"status": 1,
|
||||||
|
})
|
||||||
|
resp = parseResp(t, rec)
|
||||||
|
if resp["status_code"].(float64) != 200 {
|
||||||
|
t.Fatalf("recreate after delete failed: %v", resp)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestWalletAddAndList tests adding wallets via API and listing them.
|
// TestWalletAddAndList tests adding wallets via API and listing them.
|
||||||
|
|||||||
Reference in New Issue
Block a user