mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-25 23:21:21 +01:00
* refactor: fix duplicate keychecker - refactor KeyChecker to be more approachable - only 1 sql query needed even if you use `get_key_type` - rename `WalletType` to `KeyType` wallet type was misleading fix test sorting * fixup! * revert 404
77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import (
|
|
APIRouter,
|
|
Body,
|
|
Depends,
|
|
)
|
|
|
|
from lnbits.core.models import (
|
|
CreateWallet,
|
|
KeyType,
|
|
Wallet,
|
|
)
|
|
from lnbits.decorators import (
|
|
WalletTypeInfo,
|
|
get_key_type,
|
|
require_admin_key,
|
|
)
|
|
|
|
from ..crud import (
|
|
create_wallet,
|
|
delete_wallet,
|
|
update_wallet,
|
|
)
|
|
|
|
wallet_router = APIRouter(prefix="/api/v1/wallet", tags=["Wallet"])
|
|
|
|
|
|
@wallet_router.get("")
|
|
async def api_wallet(wallet: WalletTypeInfo = Depends(get_key_type)):
|
|
if wallet.key_type == KeyType.admin:
|
|
return {
|
|
"id": wallet.wallet.id,
|
|
"name": wallet.wallet.name,
|
|
"balance": wallet.wallet.balance_msat,
|
|
}
|
|
else:
|
|
return {"name": wallet.wallet.name, "balance": wallet.wallet.balance_msat}
|
|
|
|
|
|
@wallet_router.put("/{new_name}")
|
|
async def api_update_wallet_name(
|
|
new_name: str, wallet: WalletTypeInfo = Depends(require_admin_key)
|
|
):
|
|
await update_wallet(wallet.wallet.id, new_name)
|
|
return {
|
|
"id": wallet.wallet.id,
|
|
"name": wallet.wallet.name,
|
|
"balance": wallet.wallet.balance_msat,
|
|
}
|
|
|
|
|
|
@wallet_router.patch("", response_model=Wallet)
|
|
async def api_update_wallet(
|
|
name: Optional[str] = Body(None),
|
|
currency: Optional[str] = Body(None),
|
|
wallet: WalletTypeInfo = Depends(require_admin_key),
|
|
):
|
|
return await update_wallet(wallet.wallet.id, name, currency)
|
|
|
|
|
|
@wallet_router.delete("")
|
|
async def api_delete_wallet(
|
|
wallet: WalletTypeInfo = Depends(require_admin_key),
|
|
) -> None:
|
|
await delete_wallet(
|
|
user_id=wallet.wallet.user,
|
|
wallet_id=wallet.wallet.id,
|
|
)
|
|
|
|
|
|
@wallet_router.post("", response_model=Wallet)
|
|
async def api_create_wallet(
|
|
data: CreateWallet,
|
|
wallet: WalletTypeInfo = Depends(require_admin_key),
|
|
) -> Wallet:
|
|
return await create_wallet(user_id=wallet.wallet.user, wallet_name=data.name)
|