Add Lamassu database configuration: implement CRUD operations, polling tasks, and UI components for managing database settings. Introduce hourly transaction polling and manual poll functionality.
This commit is contained in:
parent
c9f7140d95
commit
1f7999a556
9 changed files with 870 additions and 5 deletions
95
crud.py
95
crud.py
|
|
@ -11,7 +11,8 @@ from .models import (
|
|||
CreateDcaClientData, DcaClient, UpdateDcaClientData,
|
||||
CreateDepositData, DcaDeposit, UpdateDepositStatusData,
|
||||
CreateDcaPaymentData, DcaPayment,
|
||||
ClientBalanceSummary
|
||||
ClientBalanceSummary,
|
||||
CreateLamassuConfigData, LamassuConfig, UpdateLamassuConfigData
|
||||
)
|
||||
|
||||
db = Database("ext_myextension")
|
||||
|
|
@ -292,3 +293,95 @@ async def get_fixed_mode_clients() -> List[DcaClient]:
|
|||
"SELECT * FROM myextension.dca_clients WHERE dca_mode = 'fixed' AND status = 'active'",
|
||||
model=DcaClient,
|
||||
)
|
||||
|
||||
|
||||
# Lamassu Configuration CRUD Operations
|
||||
async def create_lamassu_config(data: CreateLamassuConfigData) -> LamassuConfig:
|
||||
config_id = urlsafe_short_hash()
|
||||
|
||||
# Deactivate any existing configs first (only one active config allowed)
|
||||
await db.execute(
|
||||
"UPDATE myextension.lamassu_config SET is_active = false, updated_at = :updated_at",
|
||||
{"updated_at": datetime.now()}
|
||||
)
|
||||
|
||||
await db.execute(
|
||||
"""
|
||||
INSERT INTO myextension.lamassu_config
|
||||
(id, host, port, database_name, username, password, is_active, created_at, updated_at)
|
||||
VALUES (:id, :host, :port, :database_name, :username, :password, :is_active, :created_at, :updated_at)
|
||||
""",
|
||||
{
|
||||
"id": config_id,
|
||||
"host": data.host,
|
||||
"port": data.port,
|
||||
"database_name": data.database_name,
|
||||
"username": data.username,
|
||||
"password": data.password,
|
||||
"is_active": True,
|
||||
"created_at": datetime.now(),
|
||||
"updated_at": datetime.now()
|
||||
}
|
||||
)
|
||||
return await get_lamassu_config(config_id)
|
||||
|
||||
|
||||
async def get_lamassu_config(config_id: str) -> Optional[LamassuConfig]:
|
||||
return await db.fetchone(
|
||||
"SELECT * FROM myextension.lamassu_config WHERE id = :id",
|
||||
{"id": config_id},
|
||||
LamassuConfig,
|
||||
)
|
||||
|
||||
|
||||
async def get_active_lamassu_config() -> Optional[LamassuConfig]:
|
||||
return await db.fetchone(
|
||||
"SELECT * FROM myextension.lamassu_config WHERE is_active = true ORDER BY created_at DESC LIMIT 1",
|
||||
model=LamassuConfig,
|
||||
)
|
||||
|
||||
|
||||
async def get_all_lamassu_configs() -> List[LamassuConfig]:
|
||||
return await db.fetchall(
|
||||
"SELECT * FROM myextension.lamassu_config ORDER BY created_at DESC",
|
||||
model=LamassuConfig,
|
||||
)
|
||||
|
||||
|
||||
async def update_lamassu_config(config_id: str, data: UpdateLamassuConfigData) -> Optional[LamassuConfig]:
|
||||
update_data = {k: v for k, v in data.dict().items() if v is not None}
|
||||
if not update_data:
|
||||
return await get_lamassu_config(config_id)
|
||||
|
||||
update_data["updated_at"] = datetime.now()
|
||||
set_clause = ", ".join([f"{k} = :{k}" for k in update_data.keys()])
|
||||
update_data["id"] = config_id
|
||||
|
||||
await db.execute(
|
||||
f"UPDATE myextension.lamassu_config SET {set_clause} WHERE id = :id",
|
||||
update_data
|
||||
)
|
||||
return await get_lamassu_config(config_id)
|
||||
|
||||
|
||||
async def update_config_test_result(config_id: str, success: bool) -> None:
|
||||
await db.execute(
|
||||
"""
|
||||
UPDATE myextension.lamassu_config
|
||||
SET test_connection_last = :test_time, test_connection_success = :success, updated_at = :updated_at
|
||||
WHERE id = :id
|
||||
""",
|
||||
{
|
||||
"id": config_id,
|
||||
"test_time": datetime.now(),
|
||||
"success": success,
|
||||
"updated_at": datetime.now()
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
async def delete_lamassu_config(config_id: str) -> None:
|
||||
await db.execute(
|
||||
"DELETE FROM myextension.lamassu_config WHERE id = :id",
|
||||
{"id": config_id}
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue