show the ln to btc swap table and btc to ln swap table
This commit is contained in:
parent
93d6d1279e
commit
57d345c149
4 changed files with 188 additions and 54 deletions
|
|
@ -4,11 +4,27 @@ from typing import List
|
||||||
from . import db
|
from . import db
|
||||||
from .models import (
|
from .models import (
|
||||||
Token,
|
Token,
|
||||||
|
LnToBtcSwap,
|
||||||
|
BtcToLnSwap
|
||||||
)
|
)
|
||||||
|
|
||||||
"""
|
|
||||||
Get Deezy Token
|
async def get_ln_to_btc() -> List[LnToBtcSwap]:
|
||||||
"""
|
|
||||||
|
rows = await db.fetchall(
|
||||||
|
f"SELECT * FROM deezy.ln_to_btc_swap ORDER BY created_at DESC",
|
||||||
|
)
|
||||||
|
|
||||||
|
return [LnToBtcSwap(**row) for row in rows]
|
||||||
|
|
||||||
|
|
||||||
|
async def get_btc_to_ln() -> List[BtcToLnSwap]:
|
||||||
|
|
||||||
|
rows = await db.fetchall(
|
||||||
|
f"SELECT * FROM deezy.btc_to_ln_swap ORDER BY created_at DESC",
|
||||||
|
)
|
||||||
|
|
||||||
|
return [BtcToLnSwap(**row) for row in rows]
|
||||||
|
|
||||||
|
|
||||||
async def get_token() -> Token:
|
async def get_token() -> Token:
|
||||||
|
|
@ -36,3 +52,57 @@ async def save_token(
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
async def save_ln_to_btc(
|
||||||
|
data: LnToBtcSwap,
|
||||||
|
) -> LnToBtcSwap:
|
||||||
|
|
||||||
|
await db.execute(
|
||||||
|
"""
|
||||||
|
INSERT INTO deezy.ln_to_btc_swap (
|
||||||
|
amount_sats,
|
||||||
|
on_chain_address,
|
||||||
|
on_chain_sats_per_vbyte,
|
||||||
|
bolt11_invoice,
|
||||||
|
fee_sats,
|
||||||
|
txid,
|
||||||
|
tx_hex
|
||||||
|
)
|
||||||
|
VALUES (?,?,?,?,?,?,?)
|
||||||
|
""",
|
||||||
|
(
|
||||||
|
data.amount_sats,
|
||||||
|
data.on_chain_address,
|
||||||
|
data.on_chain_sats_per_vbyte,
|
||||||
|
data.bolt11_invoice,
|
||||||
|
data.fee_sats,
|
||||||
|
data.txid,
|
||||||
|
data.tx_hex,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def save_btc_to_ln(
|
||||||
|
data: BtcToLnSwap,
|
||||||
|
) -> BtcToLnSwap:
|
||||||
|
|
||||||
|
await db.execute(
|
||||||
|
"""
|
||||||
|
INSERT INTO deezy.btc_to_ln_swap (
|
||||||
|
ln_address,
|
||||||
|
on_chain_address,
|
||||||
|
secret_access_key,
|
||||||
|
commitment,
|
||||||
|
signature
|
||||||
|
)
|
||||||
|
VALUES (?,?,?,?,?)
|
||||||
|
""",
|
||||||
|
(
|
||||||
|
data.ln_address,
|
||||||
|
data.on_chain_address,
|
||||||
|
data.secret_access_key,
|
||||||
|
data.commitment,
|
||||||
|
data.signature,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,27 @@
|
||||||
|
from typing import Optional
|
||||||
from pydantic.main import BaseModel
|
from pydantic.main import BaseModel
|
||||||
from sqlalchemy.engine import base # type: ignore
|
from sqlalchemy.engine import base # type: ignore
|
||||||
|
|
||||||
|
|
||||||
class Token(BaseModel):
|
class Token(BaseModel):
|
||||||
deezy_token: str
|
deezy_token: str
|
||||||
|
|
||||||
|
|
||||||
|
class LnToBtcSwap(BaseModel):
|
||||||
|
amount_sats: int
|
||||||
|
on_chain_address: str
|
||||||
|
on_chain_sats_per_vbyte: int
|
||||||
|
bolt11_invoice: str
|
||||||
|
fee_sats: int
|
||||||
|
txid: str = ""
|
||||||
|
tx_hex: str = ""
|
||||||
|
created_at: str = ""
|
||||||
|
|
||||||
|
|
||||||
|
class BtcToLnSwap(BaseModel):
|
||||||
|
ln_address: str
|
||||||
|
on_chain_address: str
|
||||||
|
secret_access_key: str
|
||||||
|
commitment: str
|
||||||
|
signature: str
|
||||||
|
created_at: str = ""
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,7 @@
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
</div>
|
</div>
|
||||||
<div class="q-pa-md">
|
<div class="q-pa-md full-width">
|
||||||
<q-table
|
<q-table
|
||||||
title="Swaps Lightning -> BTC"
|
title="Swaps Lightning -> BTC"
|
||||||
:data="rowsLnToBtc"
|
:data="rowsLnToBtc"
|
||||||
|
|
@ -221,6 +221,14 @@
|
||||||
row-key="name"
|
row-key="name"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="q-pa-md full-width">
|
||||||
|
<q-table
|
||||||
|
title="Swaps BTC -> Lightning"
|
||||||
|
:data="rowsBtcToLn"
|
||||||
|
:columns="columnsBtcToLn"
|
||||||
|
row-key="name"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %} {% block scripts %} {{ window_vars(user) }}
|
{% endblock %} {% block scripts %} {{ window_vars(user) }}
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -231,39 +239,24 @@
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
columnsLnToBtc: [
|
columnsLnToBtc: [
|
||||||
{
|
{ name: 'amount_sats',label: 'Amount Sats', align: 'left', field: 'amount_sats', sortable: true},
|
||||||
name: 'Amount Sats',
|
{ name: 'on_chain_address', align: 'left', label: 'On chain address', field: 'on_chain_address' },
|
||||||
required: true,
|
{ name: 'on_chain_sats_per_vbyte', align: 'left', label: 'Onchin sats per vbyte', field: 'on_chain_sats_per_vbyte', sortable: true },
|
||||||
label: 'Amount Sats',
|
{ name: 'fee_sats', label: 'Fee sats', align: 'left',field: 'fee_sats' },
|
||||||
align: 'left',
|
{ name: 'txid', label: 'Tx Id',align: 'left', field: 'txid' },
|
||||||
field: row => row.amount_sats,
|
{ name: 'tx_hex', label: 'Tx Hex',align: 'left', field: 'tx_hex' },
|
||||||
format: val => `${val}`,
|
{ name: 'created_at', label: 'Created at',align: 'left', field: 'created_at', sortable: true, sort: true }
|
||||||
sortable: true
|
|
||||||
},
|
|
||||||
{ name: 'on_chain_address', align: 'center', label: 'On chain address', field: 'on_chain_address' },
|
|
||||||
{ name: 'on_chain_sats_per_vbyte', align: 'center', label: 'Onchin sats per vbyte', field: 'on_chain_sats_per_vbyte', sortable: true },
|
|
||||||
{ name: 'txid', label: 'Tx id)', field: 'txid' },
|
|
||||||
{ name: 'fee_sats', label: 'Fee sats', field: 'fee_sats' },
|
|
||||||
{ name: 'created_at', label: 'Created at', field: 'created_at', sortable: true, sort: true }
|
|
||||||
],
|
],
|
||||||
rowsLnToBtc: [
|
rowsLnToBtc: [],
|
||||||
{
|
columnsBtcToLn: [
|
||||||
amount_sats: 1231232,
|
{ name: 'ln_address', align: 'left', label: 'Ln Address or Invoice', field: 'ln_address' },
|
||||||
on_chain_address: 'btc address goes here',
|
{ name: 'on_chain_address', align: 'left', label: 'Onchain Address', field: 'on_chain_address' },
|
||||||
on_chain_sats_per_vbyte: 6,
|
{ name: 'secret_access_key', align: 'left', label: 'Onchain Address', field: 'secret_access_key' },
|
||||||
txid: 'transaction id',
|
{ name: 'commitment', align: 'left', label: 'Commitment', field: 'commitment' },
|
||||||
fee_sats: 123,
|
{ name: 'signature', align: 'left', label: 'Signature', field: 'signature' },
|
||||||
created_at: '2002-02-01'
|
{ name: 'created_at', label: 'Created at', field: 'created_at', align: 'left', sortable: true, sort: true }
|
||||||
},
|
|
||||||
{
|
|
||||||
amount_sats: 1231232,
|
|
||||||
on_chain_address: 'btc address goes here',
|
|
||||||
on_chain_sats_per_vbyte: 6,
|
|
||||||
txid: 'transaction id',
|
|
||||||
fee_sats: 123,
|
|
||||||
created_at: '2002-02-01'
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
|
rowsBtcToLn: [],
|
||||||
showDeezyTokenForm: false,
|
showDeezyTokenForm: false,
|
||||||
storedDeezyToken: null,
|
storedDeezyToken: null,
|
||||||
deezyToken: null,
|
deezyToken: null,
|
||||||
|
|
@ -288,19 +281,40 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created: function () {
|
created: async function () {
|
||||||
var self = this
|
this.getToken()
|
||||||
axios({
|
this.getLnToBtc()
|
||||||
method: 'GET',
|
this.getBtcToLn()
|
||||||
url: '/deezy/api/v1/token',
|
|
||||||
}).then(function (response) {
|
|
||||||
self.storedDeezyToken = response.data.deezy_token
|
|
||||||
if (!self.storeDeezyToken) {
|
|
||||||
showDeezyTokenForm = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getToken() {
|
||||||
|
var self = this
|
||||||
|
axios({
|
||||||
|
method: 'GET',
|
||||||
|
url: '/deezy/api/v1/token',
|
||||||
|
}).then(function (response) {
|
||||||
|
self.storedDeezyToken = response.data.deezy_token
|
||||||
|
if (!self.storeDeezyToken) {
|
||||||
|
showDeezyTokenForm = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getLnToBtc() {
|
||||||
|
var self = this
|
||||||
|
axios.get('/deezy/api/v1/ln-to-btc').then(function (response) {
|
||||||
|
if (response.data.length) {
|
||||||
|
self.rowsLnToBtc = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getBtcToLn() {
|
||||||
|
var self = this
|
||||||
|
axios.get('/deezy/api/v1/btc-to-ln').then(function (response) {
|
||||||
|
if (response.data.length) {
|
||||||
|
self.rowsBtcToLn = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
showLnToBtcForm() {
|
showLnToBtcForm() {
|
||||||
if (!this.swapLnToBtc.show) {
|
if (!this.swapLnToBtc.show) {
|
||||||
this.getSuggestedOnChainFees()
|
this.getSuggestedOnChainFees()
|
||||||
|
|
@ -360,13 +374,11 @@
|
||||||
response: response.data.bolt11_invoice
|
response: response.data.bolt11_invoice
|
||||||
}
|
}
|
||||||
const payload = {
|
const payload = {
|
||||||
amount_sats: self.swapLnToBtc.data.amount_sats,
|
amount_sats: parseInt(self.swapLnToBtc.data.amount),
|
||||||
on_chain_address: self.swapLnToBtc.data.on_chain_address,
|
on_chain_address: self.swapLnToBtc.data.on_chain_address,
|
||||||
on_chain_sats_per_vbyte: self.swapLnToBtc.data.on_chain_sats_per_vbyte,
|
on_chain_sats_per_vbyte: self.swapLnToBtc.data.on_chain_sats_per_vbyte,
|
||||||
bolt11_invoice: response.data.bolt11_invoice,
|
bolt11_invoice: response.data.bolt11_invoice,
|
||||||
fee_sats: response.data.fee_sats,
|
fee_sats: response.data.fee_sats,
|
||||||
txid: response.data.txid,
|
|
||||||
tx_hex: response.data.tx_hex
|
|
||||||
}
|
}
|
||||||
self.storeLnToBtc(payload)
|
self.storeLnToBtc(payload)
|
||||||
self.checkIfInvoiceIsPaid()
|
self.checkIfInvoiceIsPaid()
|
||||||
|
|
@ -392,7 +404,7 @@
|
||||||
showDetails: true
|
showDetails: true
|
||||||
}
|
}
|
||||||
const payload = {
|
const payload = {
|
||||||
ln_address: selt.swapBtcToLn.data.lnurl_or_lnaddress,
|
ln_address: self.swapBtcToLn.data.lnurl_or_lnaddress,
|
||||||
on_chain_address: response.data.address,
|
on_chain_address: response.data.address,
|
||||||
secret_access_key: response.data.secret_access_key,
|
secret_access_key: response.data.secret_access_key,
|
||||||
commitment:response.data.commitment,
|
commitment:response.data.commitment,
|
||||||
|
|
@ -408,7 +420,7 @@
|
||||||
var self = this
|
var self = this
|
||||||
axios
|
axios
|
||||||
.post('/deezy/api/v1/store-btc-to-ln', {
|
.post('/deezy/api/v1/store-btc-to-ln', {
|
||||||
data: payload
|
...payload
|
||||||
})
|
})
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
console.log('btc to ln is stored', response)
|
console.log('btc to ln is stored', response)
|
||||||
|
|
@ -421,7 +433,7 @@
|
||||||
var self = this
|
var self = this
|
||||||
axios
|
axios
|
||||||
.post('/deezy/api/v1/store-ln-to-btc', {
|
.post('/deezy/api/v1/store-ln-to-btc', {
|
||||||
data: payload
|
...payload
|
||||||
})
|
})
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
console.log('ln to btc is stored', response)
|
console.log('ln to btc is stored', response)
|
||||||
|
|
|
||||||
|
|
@ -10,22 +10,53 @@ from . import deezy_ext
|
||||||
from . import db
|
from . import db
|
||||||
from .models import (
|
from .models import (
|
||||||
Token,
|
Token,
|
||||||
|
LnToBtcSwap,
|
||||||
|
BtcToLnSwap
|
||||||
)
|
)
|
||||||
from .crud import (
|
from .crud import (
|
||||||
get_token,
|
get_token,
|
||||||
save_token
|
get_ln_to_btc,
|
||||||
|
get_btc_to_ln,
|
||||||
|
save_token,
|
||||||
|
save_btc_to_ln,
|
||||||
|
save_ln_to_btc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@deezy_ext.get("/api/v1/token")
|
@deezy_ext.get("/api/v1/token")
|
||||||
async def api_deezy():
|
async def api_deezy():
|
||||||
"""Get token from table."""
|
|
||||||
rows = await get_token()
|
rows = await get_token()
|
||||||
return rows
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
@deezy_ext.get("/api/v1/ln-to-btc")
|
||||||
|
async def api_deezy():
|
||||||
|
rows = await get_ln_to_btc()
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
@deezy_ext.get("/api/v1/btc-to-ln")
|
||||||
|
async def api_deezy():
|
||||||
|
rows = await get_btc_to_ln()
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
@deezy_ext.post("/api/v1/store-token")
|
@deezy_ext.post("/api/v1/store-token")
|
||||||
async def api_deezy(data: Token):
|
async def api_deezy(data: Token):
|
||||||
await save_token(data)
|
await save_token(data)
|
||||||
|
|
||||||
return data.deezy_token
|
return data.deezy_token
|
||||||
|
|
||||||
|
|
||||||
|
@deezy_ext.post("/api/v1/store-ln-to-btc")
|
||||||
|
async def api_deezy(data: LnToBtcSwap):
|
||||||
|
response = await save_ln_to_btc(data)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
@deezy_ext.post("/api/v1/store-btc-to-ln")
|
||||||
|
async def api_deezy(data: BtcToLnSwap):
|
||||||
|
response = await save_btc_to_ln(data)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue