Skip to content

Commit dddd46b

Browse files
update documents using _id field (#20) (#21)
1 parent 0a01f12 commit dddd46b

File tree

5 files changed

+38
-31
lines changed

5 files changed

+38
-31
lines changed

internal/db/dbclient.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55

66
"go.mongodb.org/mongo-driver/bson"
7+
"go.mongodb.org/mongo-driver/bson/primitive"
78
"go.mongodb.org/mongo-driver/mongo"
89
"go.mongodb.org/mongo-driver/mongo/options"
910

@@ -112,35 +113,35 @@ func (db *Database) FindSendUnbondingDocuments(ctx context.Context) ([]model.Unb
112113

113114
func (db *Database) updateUnbondingDocumentState(
114115
ctx context.Context,
115-
unbondingTxHashHex string,
116+
id primitive.ObjectID,
116117
newState model.UnbondingState) error {
117118
client := db.Client.Database(db.DbName).Collection(model.UnbondingCollection)
118-
filter := bson.M{"unbonding_tx_hash_hex": unbondingTxHashHex}
119+
filter := bson.M{"_id": id}
119120
update := bson.M{"$set": bson.M{"state": newState}}
120121
_, err := client.UpdateOne(ctx, filter, update)
121122
return err
122123
}
123124

124125
func (db *Database) SetUnbondingDocumentSend(
125126
ctx context.Context,
126-
unbondingTxHashHex string) error {
127-
return db.updateUnbondingDocumentState(ctx, unbondingTxHashHex, model.Send)
127+
id primitive.ObjectID) error {
128+
return db.updateUnbondingDocumentState(ctx, id, model.Send)
128129
}
129130

130131
func (db *Database) SetUnbondingDocumentFailed(
131132
ctx context.Context,
132-
unbondingTxHashHex string) error {
133-
return db.updateUnbondingDocumentState(ctx, unbondingTxHashHex, model.Failed)
133+
id primitive.ObjectID) error {
134+
return db.updateUnbondingDocumentState(ctx, id, model.Failed)
134135
}
135136

136137
func (db *Database) SetUnbondingDocumentInputAlreadySpent(
137138
ctx context.Context,
138-
unbondingTxHashHex string) error {
139-
return db.updateUnbondingDocumentState(ctx, unbondingTxHashHex, model.InputAlreadySpent)
139+
id primitive.ObjectID) error {
140+
return db.updateUnbondingDocumentState(ctx, id, model.InputAlreadySpent)
140141
}
141142

142143
func (db *Database) SetUnbondingDocumentFailedToGetCovenantSignatures(
143144
ctx context.Context,
144-
unbondingTxHashHex string) error {
145-
return db.updateUnbondingDocumentState(ctx, unbondingTxHashHex, model.FailedToGetCovenantSignatures)
145+
id primitive.ObjectID) error {
146+
return db.updateUnbondingDocumentState(ctx, id, model.FailedToGetCovenantSignatures)
146147
}

internal/db/model/unbonding.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package model
22

3+
import "go.mongodb.org/mongo-driver/bson/primitive"
4+
35
// TODO Double check with staking-api-service
46
const (
57
UnbondingCollection = "unbonding_queue"
@@ -17,15 +19,17 @@ const (
1719
)
1820

1921
type UnbondingDocument struct {
20-
StakerPkHex string `bson:"staker_pk_hex"`
21-
FinalityPkHex string `bson:"finality_pk_hex"`
22-
UnbondingTxSigHex string `bson:"unbonding_tx_sig_hex"`
23-
State UnbondingState `bson:"state"`
24-
UnbondingTxHashHex string `bson:"unbonding_tx_hash_hex"` // Unique Index
25-
UnbondingTxHex string `bson:"unbonding_tx_hex"`
26-
StakingTxHex string `bson:"staking_tx_hex"`
27-
StakingOutputIndex uint64 `bson:"staking_output_index"`
28-
StakingTimelock uint64 `bson:"staking_timelock"`
29-
StakingAmount uint64 `bson:"staking_amount"`
30-
StakingTxHashHex string `json:"staking_tx_hash_hex"`
22+
// Can be nil only if we are inserting a document
23+
ID *primitive.ObjectID `bson:"_id,omitempty"`
24+
StakerPkHex string `bson:"staker_pk_hex"`
25+
FinalityPkHex string `bson:"finality_pk_hex"`
26+
UnbondingTxSigHex string `bson:"unbonding_tx_sig_hex"`
27+
State UnbondingState `bson:"state"`
28+
UnbondingTxHashHex string `bson:"unbonding_tx_hash_hex"` // Unique Index
29+
UnbondingTxHex string `bson:"unbonding_tx_hex"`
30+
StakingTxHex string `bson:"staking_tx_hex"`
31+
StakingOutputIndex uint64 `bson:"staking_output_index"`
32+
StakingTimelock uint64 `bson:"staking_timelock"`
33+
StakingAmount uint64 `bson:"staking_amount"`
34+
StakingTxHashHex string `json:"staking_tx_hash_hex"`
3135
}

internal/services/expected_interfaces.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/btcsuite/btcd/btcutil"
99
"github.com/btcsuite/btcd/chaincfg/chainhash"
1010
"github.com/btcsuite/btcd/wire"
11+
"go.mongodb.org/mongo-driver/bson/primitive"
1112
)
1213

1314
// Minimal set of data necessary to sign unbonding transaction
@@ -85,6 +86,7 @@ type StakingTransactionData struct {
8586
}
8687

8788
type UnbondingTxData struct {
89+
UnbondingDocID primitive.ObjectID
8890
UnbondingTransaction *wire.MsgTx
8991
UnbondingTransactionHash *chainhash.Hash
9092
UnbondingTransactionSig *schnorr.Signature
@@ -97,13 +99,15 @@ func (u UnbondingTxData) StakingOutput() *wire.TxOut {
9799
}
98100

99101
func NewUnbondingTxData(
102+
id primitive.ObjectID,
100103
tx *wire.MsgTx,
101104
hash *chainhash.Hash,
102105
sig *schnorr.Signature,
103106
info *StakingInfo,
104107
sd *StakingTransactionData,
105108
) *UnbondingTxData {
106109
return &UnbondingTxData{
110+
UnbondingDocID: id,
107111
UnbondingTransaction: tx,
108112
UnbondingTransactionHash: hash,
109113
UnbondingTransactionSig: sig,

internal/services/in_mem_store.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/btcsuite/btcd/btcec/v2/schnorr"
1010
"github.com/btcsuite/btcd/chaincfg/chainhash"
1111
"github.com/btcsuite/btcd/wire"
12+
"go.mongodb.org/mongo-driver/bson/primitive"
1213
)
1314

1415
type state string
@@ -35,8 +36,9 @@ func newUnbondingTxDataWithCounter(
3536
sd *StakingTransactionData,
3637
counter int,
3738
) *unbondingTxDataWithCounter {
39+
nullId := primitive.NilObjectID
3840
return &unbondingTxDataWithCounter{
39-
UnbondingTxData: *NewUnbondingTxData(tx, hash, sig, info, sd),
41+
UnbondingTxData: *NewUnbondingTxData(nullId, tx, hash, sig, info, sd),
4042
Counter: counter,
4143
state: inserted,
4244
}

internal/services/persistent_store.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ func documentToData(d *model.UnbondingDocument) (*UnbondingTxData, error) {
146146
StakingOutputIdx: d.StakingOutputIndex,
147147
}
148148

149-
return NewUnbondingTxData(tx, unbondingTxHash, sig, si, sd), nil
149+
return NewUnbondingTxData(*d.ID, tx, unbondingTxHash, sig, si, sd), nil
150150
}
151151

152152
func (s *PersistentUnbondingStorage) AddTxWithSignature(
@@ -246,21 +246,17 @@ func (s *PersistentUnbondingStorage) GetNotProcessedUnbondingTransactions(ctx co
246246
}
247247

248248
func (s *PersistentUnbondingStorage) SetUnbondingTransactionProcessed(ctx context.Context, utx *UnbondingTxData) error {
249-
txHash := utx.UnbondingTransactionHash.String()
250-
return s.client.SetUnbondingDocumentSend(ctx, txHash)
249+
return s.client.SetUnbondingDocumentSend(ctx, utx.UnbondingDocID)
251250
}
252251

253252
func (s *PersistentUnbondingStorage) SetUnbondingTransactionProcessingFailed(ctx context.Context, utx *UnbondingTxData) error {
254-
txHash := utx.UnbondingTransactionHash.String()
255-
return s.client.SetUnbondingDocumentFailed(ctx, txHash)
253+
return s.client.SetUnbondingDocumentFailed(ctx, utx.UnbondingDocID)
256254
}
257255

258256
func (s *PersistentUnbondingStorage) SetUnbondingTransactionInputAlreadySpent(ctx context.Context, utx *UnbondingTxData) error {
259-
txHash := utx.UnbondingTransactionHash.String()
260-
return s.client.SetUnbondingDocumentFailed(ctx, txHash)
257+
return s.client.SetUnbondingDocumentInputAlreadySpent(ctx, utx.UnbondingDocID)
261258
}
262259

263260
func (s *PersistentUnbondingStorage) SetUnbondingTransactionFailedToGetCovenantSignatures(ctx context.Context, utx *UnbondingTxData) error {
264-
txHash := utx.UnbondingTransactionHash.String()
265-
return s.client.SetUnbondingDocumentFailedToGetCovenantSignatures(ctx, txHash)
261+
return s.client.SetUnbondingDocumentFailedToGetCovenantSignatures(ctx, utx.UnbondingDocID)
266262
}

0 commit comments

Comments
 (0)