uploader-bot/app/core/models/wallet_connection.py

38 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, JSON, Boolean
from sqlalchemy.orm import relationship
from .base import AlchemyBase
class WalletConnection(AlchemyBase):
__tablename__ = 'wallet_connections'
id = Column(Integer, autoincrement=True, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
network = Column(String(32), nullable=False)
wallet_key = Column(String(256), nullable=False)
connection_id = Column(String(2048), nullable=False, unique=True)
wallet_address = Column(String(1024), nullable=False)
keys = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default={})
created = Column(DateTime, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=0)
invalidated = Column(Boolean, nullable=False, default=True)
without_pk = Column(Boolean, nullable=False, default=False)
user = relationship('User', uselist=False, back_populates='wallet_connections', foreign_keys=[user_id])
@property
def ton_balance(self):
return round(int(self.meta.get('wallet_ton_balance', 0)) / 1e9, 9)
def json_format(self):
return {
'version': self.meta.get('wallet_contract_version', 'uv'), # uv = unknown version
'address': self.wallet_address,
'ton_balance': self.meta.get('wallet_ton_balance', 0),
}