-
Notifications
You must be signed in to change notification settings - Fork 0
/
transaction.go
79 lines (63 loc) · 2.17 KB
/
transaction.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
package models
import (
"database/sql"
"time"
)
type ITransactionDao interface {
FindTransactionByHash(transactionHash string) *Transaction
InsertTransaction(transaction *Transaction) error
UpdateTransaction(transaction *Transaction) error
UpdateTransactionStatus(status, hash string) error
Count() int
FindTransactionByID(id int64) *Transaction
}
type Transaction struct {
ID int64 `json:"id" db:"id" primaryKey:"true" autoIncrement:"true" gorm:"primary_key"`
MarketID string `json:"marketID" db:"market_id"`
TransactionHash *sql.NullString `json:"transactionHash" db:"transaction_hash"`
Status string `json:"status" db:"status"`
ExecutedAt time.Time `json:"executedAt" db:"executed_at"`
UpdatedAt time.Time `json:"updatedAt" db:"updated_at"`
CreatedAt time.Time `json:"createdAt" db:"created_at"`
}
func (Transaction) TableName() string {
return "transactions"
}
var TransactionDao ITransactionDao
var TransactionDaoPG ITransactionDao
func init() {
TransactionDao = &transactionDaoPG{}
TransactionDaoPG = TransactionDao
}
type transactionDaoPG struct {
}
func (transactionDaoPG) FindTransactionByHash(transactionHash string) *Transaction {
var transaction Transaction
DB.Where("transaction_hash = ?", transactionHash).First(&transaction)
if !transaction.TransactionHash.Valid {
return nil
}
return &transaction
}
func (transactionDaoPG) InsertTransaction(transaction *Transaction) error {
return DB.Create(transaction).Error
}
func (transactionDaoPG) UpdateTransaction(transaction *Transaction) error {
return DB.Save(transaction).Error
}
func (transactionDaoPG) UpdateTransactionStatus(status, hash string) error {
return DB.Exec(`update transactions set "status"=$1 where transaction_hash = $2`, status, hash).Error
}
func (transactionDaoPG) Count() int {
var count int
DB.Model(&Transaction{}).Count(&count)
return count
}
func (transactionDaoPG) FindTransactionByID(id int64) *Transaction {
var transaction Transaction
DB.Where("id = ?", id).Find(&transaction)
if transaction.Status == "" {
return nil
}
return &transaction
}