This repository has been archived by the owner on Mar 28, 2023. It is now read-only.
/
Migration025.go
78 lines (69 loc) · 2.24 KB
/
Migration025.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
package migrations
import (
"fmt"
"strings"
)
type Migration025 struct{}
func (Migration025) Up(repoPath, databasePassword string, testnetEnabled bool) error {
db, err := OpenDB(repoPath, databasePassword, testnetEnabled)
if err != nil {
return fmt.Errorf("opening db: %s", err.Error())
}
const (
alterSalesSQL = "alter table sales rename to sales_old;"
createNewSalesSQL = "create table sales (orderID text primary key not null, contract blob, state integer, read integer, timestamp integer, total integer, thumbnail text, buyerID text, buyerHandle text, title text, shippingName text, shippingAddress text, paymentAddr text, funded integer, transactions blob, lastDisputeTimeoutNotifiedAt integer not null default 0, coinType not null default '', paymentCoin not null default '');"
insertSalesSQL = "insert into sales select orderID, contract, state, read, timestamp, total, thumbnail, buyerID, buyerHandle, title, shippingName, shippingAddress, paymentAddr, funded, transactions, lastDisputeTimeoutNotifiedAt, coinType, paymentCoin from sales_old;"
dropSalesTableSQL = "drop table sales_old;"
)
migration := strings.Join([]string{
alterSalesSQL,
createNewSalesSQL,
insertSalesSQL,
dropSalesTableSQL,
}, " ")
tx, err := db.Begin()
if err != nil {
return err
}
if _, err = tx.Exec(migration); err != nil {
err0 := tx.Rollback()
if err0 != nil {
log.Error(err0)
}
return err
}
if err = tx.Commit(); err != nil {
return err
}
if err := writeRepoVer(repoPath, 26); err != nil {
return fmt.Errorf("bumping repover to 26: %s", err.Error())
}
return nil
}
func (Migration025) Down(repoPath, databasePassword string, testnetEnabled bool) error {
db, err := OpenDB(repoPath, databasePassword, testnetEnabled)
if err != nil {
return fmt.Errorf("opening db: %s", err.Error())
}
const (
alterSalesSQL = "alter table sales add needsSync integer;"
)
tx, err := db.Begin()
if err != nil {
return err
}
if _, err = tx.Exec(alterSalesSQL); err != nil {
err0 := tx.Rollback()
if err0 != nil {
log.Error(err0)
}
return err
}
if err = tx.Commit(); err != nil {
return err
}
if err := writeRepoVer(repoPath, 25); err != nil {
return fmt.Errorf("dropping repover to 25: %s", err.Error())
}
return nil
}