Add a payments page for admin (#2910)

This commit is contained in:
Tiago Vasconcelos
2025-02-06 14:48:54 +02:00
committed by GitHub
parent c1d26bb274
commit 34a959f0bc
20 changed files with 1416 additions and 54 deletions
+10
View File
@@ -14,10 +14,15 @@ from .payments import (
DecodePayment,
PayInvoice,
Payment,
PaymentCountField,
PaymentCountStat,
PaymentDailyStats,
PaymentExtra,
PaymentFilters,
PaymentHistoryPoint,
PaymentsStatusCount,
PaymentState,
PaymentWalletStats,
)
from .tinyurl import TinyURL
from .users import (
@@ -63,6 +68,11 @@ __all__ = [
"DecodePayment",
"PayInvoice",
"Payment",
"PaymentCountField",
"PaymentCountStat",
"PaymentDailyStats",
"PaymentsStatusCount",
"PaymentWalletStats",
"PaymentExtra",
"PaymentFilters",
"PaymentHistoryPoint",
+50 -12
View File
@@ -2,7 +2,7 @@ from __future__ import annotations
from datetime import datetime, timezone
from enum import Enum
from typing import Optional
from typing import Literal, Optional
from fastapi import Query
from pydantic import BaseModel, Field, validator
@@ -125,22 +125,60 @@ class Payment(BaseModel):
class PaymentFilters(FilterModel):
__search_fields__ = ["memo", "amount"]
__search_fields__ = ["memo", "amount", "wallet_id", "tag"]
status: str
checking_id: str
__sort_fields__ = ["created_at", "amount", "fee", "memo", "time", "tag"]
status: Optional[str]
tag: Optional[str]
checking_id: Optional[str]
amount: int
fee: int
memo: Optional[str]
time: datetime
bolt11: str
preimage: str
payment_hash: str
expiry: Optional[datetime]
extra: dict = {}
wallet_id: str
webhook: Optional[str]
webhook_status: Optional[int]
preimage: Optional[str]
payment_hash: Optional[str]
wallet_id: Optional[str]
class PaymentDataPoint(BaseModel):
date: datetime
count: int
max_amount: int
min_amount: int
average_amount: int
total_amount: int
max_fee: int
min_fee: int
average_fee: int
total_fee: int
PaymentCountField = Literal["status", "tag", "extension", "wallet_id"]
class PaymentCountStat(BaseModel):
field: str = ""
total: float = 0
class PaymentWalletStats(BaseModel):
wallet_id: str = ""
wallet_name: str = ""
user_id: str = ""
payments_count: int
balance: float = 0
class PaymentDailyStats(BaseModel):
date: datetime
balance: float = 0
balance_in: Optional[float] = 0
balance_out: Optional[float] = 0
payments_count: int = 0
count_in: Optional[int] = 0
count_out: Optional[int] = 0
fee: float = 0
class PaymentHistoryPoint(BaseModel):