-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmigrations.py
157 lines (143 loc) · 4.68 KB
/
migrations.py
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
async def m001_initial(db):
await db.execute(
f"""
CREATE TABLE boltz.submarineswap (
id TEXT PRIMARY KEY,
wallet TEXT NOT NULL,
payment_hash TEXT NOT NULL,
amount {db.big_int} NOT NULL,
status TEXT NOT NULL,
boltz_id TEXT NOT NULL,
refund_address TEXT NOT NULL,
refund_privkey TEXT NOT NULL,
expected_amount {db.big_int} NOT NULL,
timeout_block_height INT NOT NULL,
address TEXT NOT NULL,
bip21 TEXT NOT NULL,
redeem_script TEXT NOT NULL,
time TIMESTAMP NOT NULL DEFAULT """
+ db.timestamp_now
+ """
);
"""
)
await db.execute(
f"""
CREATE TABLE boltz.reverse_submarineswap (
id TEXT PRIMARY KEY,
wallet TEXT NOT NULL,
onchain_address TEXT NOT NULL,
amount {db.big_int} NOT NULL,
instant_settlement BOOLEAN NOT NULL,
status TEXT NOT NULL,
boltz_id TEXT NOT NULL,
timeout_block_height INT NOT NULL,
redeem_script TEXT NOT NULL,
preimage TEXT NOT NULL,
claim_privkey TEXT NOT NULL,
lockup_address TEXT NOT NULL,
invoice TEXT NOT NULL,
onchain_amount {db.big_int} NOT NULL,
time TIMESTAMP NOT NULL DEFAULT """
+ db.timestamp_now
+ """
);
"""
)
async def m002_auto_swaps(db):
await db.execute(
f"""
CREATE TABLE boltz.auto_reverse_submarineswap (
id TEXT PRIMARY KEY,
wallet TEXT NOT NULL,
onchain_address TEXT NOT NULL,
amount {db.big_int} NOT NULL,
balance {db.big_int} NOT NULL,
instant_settlement BOOLEAN NOT NULL,
time TIMESTAMP NOT NULL DEFAULT """
+ db.timestamp_now
+ """
);
"""
)
async def m003_custom_feerate(db):
await db.execute(
"ALTER TABLE boltz.auto_reverse_submarineswap ADD COLUMN feerate_limit INT NULL"
)
await db.execute(
"ALTER TABLE boltz.reverse_submarineswap ADD COLUMN feerate_value INT NULL"
)
await db.execute(
"ALTER TABLE boltz.reverse_submarineswap "
"ADD COLUMN feerate BOOLEAN NOT NULL DEFAULT false"
)
await db.execute(
"ALTER TABLE boltz.submarineswap ADD COLUMN feerate_value INT NULL"
)
await db.execute(
"ALTER TABLE boltz.submarineswap "
"ADD COLUMN feerate BOOLEAN NOT NULL DEFAULT false"
)
async def m004_add_settings_counter_direction_asset(db):
"""
Add extension settings table
add count column for auto swaps
add direction column for swaps
add asset column for swaps
add blind key column for swaps
"""
# Add settings table
await db.execute(
"""
CREATE TABLE boltz.settings (
boltz_network TEXT NOT NULL,
boltz_url TEXT NOT NULL,
boltz_mempool_space_url TEXT NOT NULL,
boltz_network_liquid TEXT NOT NULL,
boltz_mempool_space_liquid_url TEXT NOT NULL
);
"""
)
# Add count column
await db.execute(
"ALTER TABLE boltz.auto_reverse_submarineswap ADD COLUMN count INT DEFAULT 0"
)
# Add direction column
await db.execute(
"ALTER TABLE boltz.reverse_submarineswap "
"ADD COLUMN direction TEXT NOT NULL DEFAULT 'send'"
)
await db.execute(
"ALTER TABLE boltz.submarineswap "
"ADD COLUMN direction TEXT NOT NULL DEFAULT 'receive'"
)
# Add asset column
await db.execute(
"ALTER TABLE boltz.auto_reverse_submarineswap "
"ADD COLUMN asset TEXT NOT NULL DEFAULT 'BTC/BTC'"
)
await db.execute(
"ALTER TABLE boltz.reverse_submarineswap "
"ADD COLUMN asset TEXT NOT NULL DEFAULT 'BTC/BTC'"
)
await db.execute(
"ALTER TABLE boltz.submarineswap "
"ADD COLUMN asset TEXT NOT NULL DEFAULT 'BTC/BTC'"
)
# add blind key column
await db.execute(
"ALTER TABLE boltz.reverse_submarineswap " "ADD COLUMN blinding_key TEXT NULL"
)
await db.execute(
"ALTER TABLE boltz.submarineswap " "ADD COLUMN blinding_key TEXT NULL"
)
async def m005_fix_settings_table_drop_mempool(db):
await db.execute(
"""
CREATE TABLE boltz.settings_backup AS
SELECT boltz_url, boltz_network, boltz_network_liquid FROM boltz.settings
"""
)
await db.execute("DROP TABLE boltz.settings")
# NOTE using `boltz.settings` for the RENAME TO clause will not work in sqlite
await db.execute("ALTER TABLE boltz.settings_backup RENAME TO settings")