39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, JSON, Boolean
|
|
from sqlalchemy.orm import relationship
|
|
from datetime import datetime
|
|
|
|
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=dict)
|
|
meta = Column(JSON, nullable=False, default=dict)
|
|
|
|
created = Column(DateTime, nullable=False, default=datetime.utcnow)
|
|
updated = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
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),
|
|
}
|