27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
from loguru import logger
|
|
|
|
from custom_decorators import singleton
|
|
from models import User
|
|
from repositories.user import UserRepository
|
|
|
|
|
|
@singleton
|
|
class UserService:
|
|
def __init__(self, config):
|
|
self.config = config
|
|
self.user_repo = UserRepository(config)
|
|
|
|
def get_wallet_addresses(self, name=None, phone=None, email=None, payment_method=None):
|
|
if phone or email:
|
|
logger.debug(f'query wallet addresses by phone {phone} or email {email}')
|
|
users = self.user_repo.get_and_update(User(name=name, phone=phone, email=email,
|
|
payment_method=payment_method))
|
|
addresses = set(user.wallet_address for user in users if user.wallet_address)
|
|
return list(addresses)
|
|
return []
|
|
|
|
def update_or_create(self, name=None, phone=None, email=None, wallet_address=None, payment_method=None):
|
|
self.user_repo.get_and_update(User(name=name, phone=phone, email=email, wallet_address=wallet_address,
|
|
payment_method=payment_method))
|
|
|