feat: add new column and delete old

This commit is contained in:
2026-05-13 11:23:59 +03:00
parent caa84525b1
commit 7019f14af2
14 changed files with 71 additions and 71 deletions

View File

@@ -1,8 +1,8 @@
from src.presentation.dependencies.commands import (
get_get_me_command,
get_set_phone_command,
get_set_crypto_wallet_start_command,
get_set_crypto_wallet_complete_command,
get_set_encrypted_mnemonic_start_command,
get_set_encrypted_mnemonic_complete_command,
get_update_bank_details_start_command,
get_update_bank_details_complete_command,
get_change_password_start_command,

View File

@@ -1,6 +1,6 @@
from fastapi import Depends
from src.application.abstractions import IUnitOfWork
from src.application.commands import GetMeCommand, SetPhoneCommand, SetCryptoWalletStartCommand, SetCryptoWalletCompleteCommand, UpdateBankDetailsStartCommand, UpdateBankDetailsCompleteCommand, ChangePasswordStartCommand, ChangePasswordCompleteCommand, ChangeEmailStartCommand, ChangeEmailConfirmOldCommand, ChangeEmailCompleteCommand
from src.application.commands import GetMeCommand, SetPhoneCommand, SetEncryptedMnemonicStartCommand, SetEncryptedMnemonicCompleteCommand, UpdateBankDetailsStartCommand, UpdateBankDetailsCompleteCommand, ChangePasswordStartCommand, ChangePasswordCompleteCommand, ChangeEmailStartCommand, ChangeEmailConfirmOldCommand, ChangeEmailCompleteCommand
from src.application.contracts import ILogger, ICache, IQueueMessanger, IHashService
from src.presentation.dependencies.cache import get_cache
from src.presentation.dependencies.logger import get_logger
@@ -25,14 +25,14 @@ def get_set_phone_command(
return SetPhoneCommand(logger=logger, unit_of_work=unit_of_work, cache=cache)
def get_set_crypto_wallet_start_command(
def get_set_encrypted_mnemonic_start_command(
logger: ILogger = Depends(get_logger),
unit_of_work: IUnitOfWork = Depends(get_unit_of_work),
cache: ICache = Depends(get_cache),
messanger: IQueueMessanger = Depends(get_rabbit),
hash_service: IHashService = Depends(get_hash_service),
) -> SetCryptoWalletStartCommand:
return SetCryptoWalletStartCommand(
) -> SetEncryptedMnemonicStartCommand:
return SetEncryptedMnemonicStartCommand(
logger=logger,
unit_of_work=unit_of_work,
cache=cache,
@@ -41,13 +41,13 @@ def get_set_crypto_wallet_start_command(
)
def get_set_crypto_wallet_complete_command(
def get_set_encrypted_mnemonic_complete_command(
logger: ILogger = Depends(get_logger),
unit_of_work: IUnitOfWork = Depends(get_unit_of_work),
cache: ICache = Depends(get_cache),
hash_service: IHashService = Depends(get_hash_service),
) -> SetCryptoWalletCompleteCommand:
return SetCryptoWalletCompleteCommand(
) -> SetEncryptedMnemonicCompleteCommand:
return SetEncryptedMnemonicCompleteCommand(
logger=logger,
unit_of_work=unit_of_work,
cache=cache,

View File

@@ -30,7 +30,7 @@ async def me(
'middle_name': user.middle_name,
'last_name': user.last_name,
'birth_date': str(user.birth_date) if user.birth_date else None,
'crypto_wallet': user.crypto_wallet,
'encrypted_mnemonic': user.encrypted_mnemonic,
'phone': user.phone,
'passport_data': user.passport_data,
'inn': user.inn,

View File

@@ -1,13 +1,13 @@
from fastapi import APIRouter, Request, Depends
from fastapi.responses import ORJSONResponse
from starlette import status
from src.application.commands import SetPhoneCommand, SetCryptoWalletStartCommand, SetCryptoWalletCompleteCommand, UpdateBankDetailsStartCommand, UpdateBankDetailsCompleteCommand, ChangePasswordStartCommand, ChangePasswordCompleteCommand, ChangeEmailStartCommand, ChangeEmailConfirmOldCommand, ChangeEmailCompleteCommand
from src.application.commands import SetPhoneCommand, SetEncryptedMnemonicStartCommand, SetEncryptedMnemonicCompleteCommand, UpdateBankDetailsStartCommand, UpdateBankDetailsCompleteCommand, ChangePasswordStartCommand, ChangePasswordCompleteCommand, ChangeEmailStartCommand, ChangeEmailConfirmOldCommand, ChangeEmailCompleteCommand
from src.application.domain.dto import AuthContext
from src.presentation.decorators import require_access_token
from src.presentation.dependencies import (
get_set_phone_command,
get_set_crypto_wallet_start_command,
get_set_crypto_wallet_complete_command,
get_set_encrypted_mnemonic_start_command,
get_set_encrypted_mnemonic_complete_command,
get_update_bank_details_start_command,
get_update_bank_details_complete_command,
get_change_password_start_command,
@@ -16,7 +16,7 @@ from src.presentation.dependencies import (
get_change_email_confirm_old_command,
get_change_email_complete_command,
)
from src.presentation.schemas import SetPhoneRequest, CryptoWalletConfirmRequest, BankConfirmRequest, ChangePasswordConfirmRequest, ChangeEmailConfirmOldRequest, ChangeEmailCompleteRequest
from src.presentation.schemas import SetPhoneRequest, EncryptedMnemonicConfirmRequest, BankConfirmRequest, ChangePasswordConfirmRequest, ChangeEmailConfirmOldRequest, ChangeEmailCompleteRequest
account_settings_router = APIRouter(prefix='/settings')
@@ -33,29 +33,29 @@ async def set_phone(
return ORJSONResponse(status_code=status.HTTP_200_OK, content={'phone': user.phone})
@account_settings_router.post(path='/crypto-wallet/start', response_class=ORJSONResponse, status_code=status.HTTP_200_OK)
async def crypto_wallet_start(
@account_settings_router.post(path='/encrypted-mnemonic/start', response_class=ORJSONResponse, status_code=status.HTTP_200_OK)
async def encrypted_mnemonic_start(
request: Request,
auth: AuthContext = Depends(require_access_token),
command: SetCryptoWalletStartCommand = Depends(get_set_crypto_wallet_start_command),
command: SetEncryptedMnemonicStartCommand = Depends(get_set_encrypted_mnemonic_start_command),
):
result = await command(user_id=auth.user_id)
return {'success': result}
@account_settings_router.post(path='/crypto-wallet/complete', response_class=ORJSONResponse, status_code=status.HTTP_200_OK)
async def crypto_wallet_complete(
@account_settings_router.post(path='/encrypted-mnemonic/complete', response_class=ORJSONResponse, status_code=status.HTTP_200_OK)
async def encrypted_mnemonic_complete(
request: Request,
body: CryptoWalletConfirmRequest,
body: EncryptedMnemonicConfirmRequest,
auth: AuthContext = Depends(require_access_token),
command: SetCryptoWalletCompleteCommand = Depends(get_set_crypto_wallet_complete_command),
command: SetEncryptedMnemonicCompleteCommand = Depends(get_set_encrypted_mnemonic_complete_command),
):
user = await command(
user_id=auth.user_id,
code=body.code,
wallet_address=body.wallet_address,
encrypted_mnemonic=body.encrypted_mnemonic,
)
return {'crypto_wallet': user.crypto_wallet}
return {'encrypted_mnemonic': user.encrypted_mnemonic}
@account_settings_router.post(path='/email/start', response_class=ORJSONResponse, status_code=status.HTTP_200_OK)

View File

@@ -1,5 +1,5 @@
from src.presentation.schemas.phone import SetPhoneRequest
from src.presentation.schemas.bank import BankUpdateRequest, BankConfirmRequest
from src.presentation.schemas.crypto_wallet import CryptoWalletConfirmRequest
from src.presentation.schemas.encrypted_mnemonic import EncryptedMnemonicConfirmRequest
from src.presentation.schemas.password import ChangePasswordConfirmRequest
from src.presentation.schemas.email import ChangeEmailConfirmOldRequest, ChangeEmailCompleteRequest

View File

@@ -2,9 +2,9 @@ import re
from pydantic import BaseModel, field_validator
class CryptoWalletConfirmRequest(BaseModel):
class EncryptedMnemonicConfirmRequest(BaseModel):
code: str
wallet_address: str
encrypted_mnemonic: str
@field_validator('code')
@classmethod
@@ -14,10 +14,10 @@ class CryptoWalletConfirmRequest(BaseModel):
raise ValueError('Code must be exactly 6 digits')
return v
@field_validator('wallet_address')
@field_validator('encrypted_mnemonic')
@classmethod
def validate_tron_address(cls, v: str) -> str:
def validate_encrypted_mnemonic(cls, v: str) -> str:
v = v.strip()
if not re.match(r'^T[1-9A-HJ-NP-Za-km-z]{33}$', v):
raise ValueError('Invalid TRON wallet address')
if not v:
raise ValueError('encrypted_mnemonic must not be empty')
return v