-
Notifications
You must be signed in to change notification settings - Fork 41
/
payment.go
133 lines (116 loc) · 3.28 KB
/
payment.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package bsdb
import (
"errors"
"time"
"github.com/forbole/juno/v4/common"
"gorm.io/gorm"
)
// GetPaymentByBucketName get payment info by a bucket name
func (b *BsDBImpl) GetPaymentByBucketName(bucketName string, includePrivate bool) (*StreamRecord, error) {
var (
streamRecord *StreamRecord
err error
bucket *Bucket
)
startTime := time.Now()
methodName := currentFunction()
defer func() {
if err != nil {
MetadataDatabaseFailureMetrics(err, startTime, methodName)
} else {
MetadataDatabaseSuccessMetrics(startTime, methodName)
}
}()
bucket, err = b.GetBucketByName(bucketName, includePrivate)
if err != nil {
return nil, err
}
if bucket == nil {
return nil, nil
}
streamRecord, err = b.GetPaymentByPaymentAddress(bucket.PaymentAddress)
return streamRecord, err
}
// GetPaymentByBucketID get payment info by a bucket id
func (b *BsDBImpl) GetPaymentByBucketID(bucketID int64, includePrivate bool) (*StreamRecord, error) {
var (
streamRecord *StreamRecord
err error
bucket *Bucket
)
startTime := time.Now()
methodName := currentFunction()
defer func() {
if err != nil {
MetadataDatabaseFailureMetrics(err, startTime, methodName)
} else {
MetadataDatabaseSuccessMetrics(startTime, methodName)
}
}()
bucket, err = b.GetBucketByID(bucketID, includePrivate)
if err != nil {
return nil, err
}
if bucket == nil {
return nil, nil
}
streamRecord, err = b.GetPaymentByPaymentAddress(bucket.PaymentAddress)
return streamRecord, err
}
// GetPaymentByPaymentAddress get payment info by a payment address
func (b *BsDBImpl) GetPaymentByPaymentAddress(paymentAddress common.Address) (*StreamRecord, error) {
var (
streamRecord *StreamRecord
err error
)
err = b.db.Table((&StreamRecord{}).TableName()).Take(&streamRecord, "account = ?", paymentAddress).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return streamRecord, err
}
// ListUserPaymentAccounts list payment accounts by owner address
func (b *BsDBImpl) ListUserPaymentAccounts(accountID common.Address) ([]*StreamRecordPaymentAccount, error) {
var (
payments []*StreamRecordPaymentAccount
err error
)
startTime := time.Now()
methodName := currentFunction()
defer func() {
if err != nil {
MetadataDatabaseFailureMetrics(err, startTime, methodName)
} else {
MetadataDatabaseSuccessMetrics(startTime, methodName)
}
}()
err = b.db.Table((&PaymentAccount{}).TableName()).
Select("*").
Joins("LEFT JOIN stream_records ON stream_records.account = payment_accounts.addr").
Where(`payment_accounts.owner = ?`, accountID).
Order("stream_records.account").
Find(&payments).Error
return payments, err
}
// ListPaymentAccountStreams list payment account streams
func (b *BsDBImpl) ListPaymentAccountStreams(paymentAccount common.Address) ([]*Bucket, error) {
var (
buckets []*Bucket
err error
)
startTime := time.Now()
methodName := currentFunction()
defer func() {
if err != nil {
MetadataDatabaseFailureMetrics(err, startTime, methodName)
} else {
MetadataDatabaseSuccessMetrics(startTime, methodName)
}
}()
err = b.db.Table((&Bucket{}).TableName()).
Select("*").
Where(`payment_address = ? and removed = false`, paymentAccount).
Order("bucket_id").
Find(&buckets).Error
return buckets, err
}