diff --git a/crud.py b/crud.py
index bf85351..43e4030 100644
--- a/crud.py
+++ b/crud.py
@@ -309,9 +309,9 @@ async def create_lamassu_config(data: CreateLamassuConfigData) -> LamassuConfig:
await db.execute(
"""
INSERT INTO myextension.lamassu_config
- (id, host, port, database_name, username, password, source_wallet_id, is_active, created_at, updated_at,
+ (id, host, port, database_name, username, password, source_wallet_id, commission_wallet_id, is_active, created_at, updated_at,
use_ssh_tunnel, ssh_host, ssh_port, ssh_username, ssh_password, ssh_private_key)
- VALUES (:id, :host, :port, :database_name, :username, :password, :source_wallet_id, :is_active, :created_at, :updated_at,
+ VALUES (:id, :host, :port, :database_name, :username, :password, :source_wallet_id, :commission_wallet_id, :is_active, :created_at, :updated_at,
:use_ssh_tunnel, :ssh_host, :ssh_port, :ssh_username, :ssh_password, :ssh_private_key)
""",
{
@@ -322,6 +322,7 @@ async def create_lamassu_config(data: CreateLamassuConfigData) -> LamassuConfig:
"username": data.username,
"password": data.password,
"source_wallet_id": data.source_wallet_id,
+ "commission_wallet_id": data.commission_wallet_id,
"is_active": True,
"created_at": datetime.now(),
"updated_at": datetime.now(),
diff --git a/migrations.py b/migrations.py
index 3d3435d..39379a3 100644
--- a/migrations.py
+++ b/migrations.py
@@ -200,3 +200,15 @@ async def m010_add_source_wallet_to_lamassu_config(db):
ADD COLUMN source_wallet_id TEXT;
"""
)
+
+
+async def m011_add_commission_wallet_to_lamassu_config(db):
+ """
+ Add commission wallet ID to Lamassu configuration table for commission earnings.
+ """
+ await db.execute(
+ """
+ ALTER TABLE myextension.lamassu_config
+ ADD COLUMN commission_wallet_id TEXT;
+ """
+ )
diff --git a/models.py b/models.py
index 928e9a6..77dac12 100644
--- a/models.py
+++ b/models.py
@@ -111,6 +111,8 @@ class CreateLamassuConfigData(BaseModel):
password: str
# Source wallet for DCA distributions
source_wallet_id: Optional[str] = None
+ # Commission wallet for storing commission earnings
+ commission_wallet_id: Optional[str] = None
# SSH Tunnel settings
use_ssh_tunnel: bool = False
ssh_host: Optional[str] = None
@@ -134,6 +136,8 @@ class LamassuConfig(BaseModel):
updated_at: datetime
# Source wallet for DCA distributions
source_wallet_id: Optional[str] = None
+ # Commission wallet for storing commission earnings
+ commission_wallet_id: Optional[str] = None
# SSH Tunnel settings
use_ssh_tunnel: bool = False
ssh_host: Optional[str] = None
@@ -155,6 +159,8 @@ class UpdateLamassuConfigData(BaseModel):
is_active: Optional[bool] = None
# Source wallet for DCA distributions
source_wallet_id: Optional[str] = None
+ # Commission wallet for storing commission earnings
+ commission_wallet_id: Optional[str] = None
# SSH Tunnel settings
use_ssh_tunnel: Optional[bool] = None
ssh_host: Optional[str] = None
diff --git a/static/js/index.js b/static/js/index.js
index f7065a2..2620c7c 100644
--- a/static/js/index.js
+++ b/static/js/index.js
@@ -72,6 +72,7 @@ window.app = Vue.createApp({
username: '',
password: '',
selectedWallet: null,
+ selectedCommissionWallet: null,
// SSH Tunnel settings
use_ssh_tunnel: false,
ssh_host: '',
@@ -156,6 +157,20 @@ window.app = Vue.createApp({
this.g.user.wallets[0].inkey
)
this.lamassuConfig = data
+
+ // When opening config dialog, populate the selected wallets if they exist
+ if (data && data.source_wallet_id) {
+ const wallet = this.g.user.wallets.find(w => w.id === data.source_wallet_id)
+ if (wallet) {
+ this.configDialog.data.selectedWallet = wallet
+ }
+ }
+ if (data && data.commission_wallet_id) {
+ const commissionWallet = this.g.user.wallets.find(w => w.id === data.commission_wallet_id)
+ if (commissionWallet) {
+ this.configDialog.data.selectedCommissionWallet = commissionWallet
+ }
+ }
} catch (error) {
// It's OK if no config exists yet
this.lamassuConfig = null
@@ -171,6 +186,7 @@ window.app = Vue.createApp({
username: this.configDialog.data.username,
password: this.configDialog.data.password,
source_wallet_id: this.configDialog.data.selectedWallet?.id,
+ commission_wallet_id: this.configDialog.data.selectedCommissionWallet?.id,
// SSH Tunnel settings
use_ssh_tunnel: this.configDialog.data.use_ssh_tunnel,
ssh_host: this.configDialog.data.ssh_host,
@@ -209,6 +225,7 @@ window.app = Vue.createApp({
username: '',
password: '',
selectedWallet: null,
+ selectedCommissionWallet: null,
// SSH Tunnel settings
use_ssh_tunnel: false,
ssh_host: '',
diff --git a/templates/myextension/index.html b/templates/myextension/index.html
index 1e22471..a7ad3b8 100644
--- a/templates/myextension/index.html
+++ b/templates/myextension/index.html
@@ -580,6 +580,16 @@
hint="Wallet that holds Bitcoin for distribution to DCA clients"
>
+