Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bridge-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
movabridge
bridge-backend
Commits
b0d6c0b4
Commit
b0d6c0b4
authored
Nov 20, 2025
by
vicotor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update for delete swap token
parent
6ebef55e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
120 additions
and
0 deletions
+120
-0
builder.go
dao/builder.go
+22
-0
dbtx.go
dao/dbtx.go
+8
-0
dbtx_test.go
dao/dbtx_test.go
+90
-0
No files found.
dao/builder.go
View file @
b0d6c0b4
...
...
@@ -433,6 +433,28 @@ func (s *Dao) filterSwapConfigChanged(chain ChainInterface, txLog *types.Log, ct
info
.
TokenName
=
tokenInfo
.
Symbol
}
if
configure
.
Swap
==
(
common
.
Address
{})
&&
len
(
configure
.
Path
)
==
0
{
// delete swap config
err
=
s
.
DeleteSwapToken
(
ctx
,
info
)
if
err
!=
nil
{
log
.
WithFields
(
log
.
Fields
{
"chain"
:
chain
.
Name
(),
"token"
:
configure
.
FromToken
.
Hex
(),
"toToken"
:
configure
.
ToToken
.
Hex
(),
"swap"
:
configure
.
Swap
.
Hex
(),
})
.
WithError
(
err
)
.
Error
(
"db delete swap token config failed"
)
return
err
}
else
{
log
.
WithFields
(
log
.
Fields
{
"chain"
:
chain
.
Name
(),
"token"
:
configure
.
FromToken
.
Hex
(),
"toToken"
:
configure
.
ToToken
.
Hex
(),
"swap"
:
configure
.
Swap
.
Hex
(),
})
.
Info
(
"delete swap token config success"
)
return
nil
}
}
err
=
s
.
CreateSwapTokenInfo
(
ctx
,
info
)
if
err
!=
nil
{
log
.
WithFields
(
log
.
Fields
{
...
...
dao/dbtx.go
View file @
b0d6c0b4
...
...
@@ -241,3 +241,11 @@ func (d *Dao) CreateSwapTokenInfo(ctx context.Context, info *dbModel.SwapTokenIn
_
,
err
:=
collection
.
UpdateOne
(
ctx
,
filter
,
update
,
opts
)
return
err
}
func
(
d
*
Dao
)
DeleteSwapToken
(
ctx
context
.
Context
,
info
*
dbModel
.
SwapTokenInfo
)
error
{
collection
:=
d
.
db
.
Collection
(
info
.
TableName
())
filter
:=
bson
.
M
{
"chain_id"
:
info
.
ChainId
,
"token"
:
info
.
Token
,
"to_token"
:
info
.
ToToken
,
"contract"
:
info
.
Contract
}
_
,
err
:=
collection
.
DeleteOne
(
ctx
,
filter
)
return
err
}
dao/dbtx_test.go
0 → 100644
View file @
b0d6c0b4
package
dao
import
(
"context"
"fmt"
"net/url"
"os"
"testing"
"time"
dbModel
"code.wuban.net.cn/movabridge/bridge-backend/model/db"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func
TestDeleteSwapToken
(
t
*
testing
.
T
)
{
ctx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
10
*
time
.
Second
)
defer
cancel
()
uri
:=
os
.
Getenv
(
"MONGO_TEST_URI"
)
if
uri
==
""
{
user
:=
"root"
pass
:=
"XN2UARuys3zy4Oux"
authSource
:=
"admin"
// Build credentialed URI. url.QueryEscape to safely encode special chars.
uri
=
fmt
.
Sprintf
(
"mongodb://%s:%s@localhost:27017/bridge?authSource=%s&authMechanism=SCRAM-SHA-256"
,
url
.
QueryEscape
(
user
),
url
.
QueryEscape
(
pass
),
url
.
QueryEscape
(
authSource
))
}
client
,
err
:=
mongo
.
Connect
(
ctx
,
options
.
Client
()
.
ApplyURI
(
uri
))
if
err
!=
nil
{
// If credentials are required but missing, surface a clearer message.
if
os
.
Getenv
(
"MONGO_TEST_USER"
)
!=
""
||
os
.
Getenv
(
"MONGO_TEST_PASS"
)
!=
""
{
// Provide hint instead of generic failure.
t
.
Fatalf
(
"mongo connect error with credentials (URI=%s): %v"
,
uri
,
err
)
}
// Generic failure.
t
.
Fatalf
(
"mongo connect error: %v"
,
err
)
}
defer
func
()
{
_
=
client
.
Disconnect
(
ctx
)
}()
dbName
:=
"movabridge_test"
db
:=
client
.
Database
(
dbName
)
d
:=
&
Dao
{
db
:
db
}
// prepare test data
info
:=
&
dbModel
.
SwapTokenInfo
{
ChainId
:
1
,
Token
:
"test-token"
,
Contract
:
"0xdeadbeef"
,
ToToken
:
"to-token"
,
}
// ensure clean state
coll
:=
db
.
Collection
(
info
.
TableName
())
_
,
_
=
coll
.
DeleteMany
(
ctx
,
bson
.
M
{
"chain_id"
:
info
.
ChainId
,
"token"
:
info
.
Token
,
"contract"
:
info
.
Contract
,
})
// insert
if
err
:=
d
.
CreateSwapTokenInfo
(
ctx
,
info
);
err
!=
nil
{
// If insert fails due to auth issues, abort early.
t
.
Fatalf
(
"CreateSwapTokenInfo failed: %v"
,
err
)
}
// verify inserted
var
found
dbModel
.
SwapTokenInfo
filter
:=
bson
.
M
{
"chain_id"
:
info
.
ChainId
,
"token"
:
info
.
Token
,
"contract"
:
info
.
Contract
}
if
err
:=
coll
.
FindOne
(
ctx
,
filter
)
.
Decode
(
&
found
);
err
!=
nil
{
t
.
Fatalf
(
"expected document to exist after insert: %v"
,
err
)
}
// delete via method under test
if
err
:=
d
.
DeleteSwapToken
(
ctx
,
info
);
err
!=
nil
{
t
.
Fatalf
(
"DeleteSwapToken failed: %v"
,
err
)
}
// verify deleted
err
=
coll
.
FindOne
(
ctx
,
filter
)
.
Decode
(
&
found
)
if
err
!=
mongo
.
ErrNoDocuments
{
t
.
Fatalf
(
"expected document to be deleted, got: %v"
,
err
)
}
// cleanup
_
=
coll
.
Drop
(
ctx
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment