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 {
|
||||
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{
|
||||
Network: network,
|
||||
Token: token,
|
||||
@@ -30,6 +44,16 @@ func AddSupportedAsset(network, token string, status int64) (*mdb.SupportedAsset
|
||||
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) {
|
||||
network, token = normalizeNetworkToken(network, token)
|
||||
asset := new(mdb.SupportedAsset)
|
||||
|
||||
@@ -322,6 +322,17 @@ func TestSupportedAssetCRUD(t *testing.T) {
|
||||
if resp["status_code"].(float64) != 200 {
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user