make get_user better
This commit is contained in:
+11
-43
@@ -1,7 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from time import time
|
from time import time
|
||||||
from typing import Literal, Optional, Union
|
from typing import Literal, Optional
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
import shortuuid
|
import shortuuid
|
||||||
@@ -161,15 +161,18 @@ async def get_account_by_username_or_email(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def get_user_by_id(
|
||||||
|
user_id: str, conn: Optional[Connection] = None
|
||||||
|
) -> Optional[User]:
|
||||||
|
account = await get_account(user_id, conn)
|
||||||
|
if not account:
|
||||||
|
return None
|
||||||
|
return await get_user(account, conn)
|
||||||
|
|
||||||
|
|
||||||
async def get_user(
|
async def get_user(
|
||||||
account_or_id: Union[Account, str], conn: Optional[Connection] = None
|
account: Account, conn: Optional[Connection] = None
|
||||||
) -> Optional[User]:
|
) -> Optional[User]:
|
||||||
if isinstance(account_or_id, str):
|
|
||||||
account = await get_account(account_or_id, conn)
|
|
||||||
if not account:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
account = account_or_id
|
|
||||||
extensions = await get_user_active_extensions_ids(account.id, conn)
|
extensions = await get_user_active_extensions_ids(account.id, conn)
|
||||||
wallets = await get_wallets(account.id, False, conn=conn)
|
wallets = await get_wallets(account.id, False, conn=conn)
|
||||||
return User(
|
return User(
|
||||||
@@ -756,41 +759,6 @@ async def update_payment_details(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# TODO: should not be needed use update_payment instead
|
|
||||||
async def update_payment_extra(
|
|
||||||
payment_hash: str,
|
|
||||||
extra: dict,
|
|
||||||
outgoing: bool = False,
|
|
||||||
conn: Optional[Connection] = None,
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Only update the `extra` field for the payment.
|
|
||||||
Old values in the `extra` JSON object will be kept
|
|
||||||
unless the new `extra` overwrites them.
|
|
||||||
"""
|
|
||||||
|
|
||||||
amount_clause = "AND amount < 0" if outgoing else "AND amount > 0"
|
|
||||||
|
|
||||||
row: dict = await (conn or db).fetchone(
|
|
||||||
f"""
|
|
||||||
SELECT payment_hash, extra from apipayments
|
|
||||||
WHERE payment_hash = :hash {amount_clause}
|
|
||||||
""",
|
|
||||||
{"hash": payment_hash},
|
|
||||||
)
|
|
||||||
if not row:
|
|
||||||
return
|
|
||||||
db_extra = json.loads(row["extra"] if row["extra"] else "{}")
|
|
||||||
db_extra.update(extra)
|
|
||||||
|
|
||||||
await (conn or db).execute(
|
|
||||||
f"""
|
|
||||||
UPDATE apipayments SET extra = :extra WHERE payment_hash = :hash {amount_clause}
|
|
||||||
""",
|
|
||||||
{"extra": json.dumps(db_extra), "hash": payment_hash},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
DateTrunc = Literal["hour", "day", "month"]
|
DateTrunc = Literal["hour", "day", "month"]
|
||||||
sqlite_formats = {
|
sqlite_formats = {
|
||||||
"hour": "%Y-%m-%d %H:00:00",
|
"hour": "%Y-%m-%d %H:00:00",
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ from ..crud import (
|
|||||||
create_wallet,
|
create_wallet,
|
||||||
get_dbversions,
|
get_dbversions,
|
||||||
get_installed_extensions,
|
get_installed_extensions,
|
||||||
get_user,
|
get_user_by_id,
|
||||||
get_wallet,
|
get_wallet,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ async def service_worker(request: Request):
|
|||||||
@generic_router.get("/manifest/{usr}.webmanifest")
|
@generic_router.get("/manifest/{usr}.webmanifest")
|
||||||
async def manifest(request: Request, usr: str):
|
async def manifest(request: Request, usr: str):
|
||||||
host = urlparse(str(request.url)).netloc
|
host = urlparse(str(request.url)).netloc
|
||||||
user = await get_user(usr)
|
user = await get_user_by_id(usr)
|
||||||
if not user:
|
if not user:
|
||||||
raise HTTPException(status_code=HTTPStatus.NOT_FOUND)
|
raise HTTPException(status_code=HTTPStatus.NOT_FOUND)
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user