Source code for BinanceWatch.storage.tables

from typing import List, Optional


[docs]class Table: """ This class represent a table in a database. All columns names are dynamic attributes @DynamicAttrs This class is used to describe the tables that will be used to in the database """
[docs] def __init__(self, name: str, columns_names: List[str], columns_sql_types: List[str], primary_key: Optional[str] = None, primary_key_sql_type: Optional[str] = None): """ Initialise a Table instance :param name: name of the table :type name: str :param columns_names: names of the columns (except primary column) :type columns_names: List[str] :param columns_sql_types: sql types of the previous columns :type columns_sql_types: List[str] :param primary_key: name of the primary key (None, if no primary key is needed) :type primary_key: Optional[str] :param primary_key_sql_type: sql type of the primary key (None, if no primary key is needed) :type primary_key_sql_type: Optional[str] """ self.name = name self.columns_names = columns_names self.columns_sql_types = columns_sql_types self.primary_key = primary_key self.primary_key_sql_type = primary_key_sql_type for column_name in self.columns_names: try: value = getattr(self, column_name) raise ValueError(f"the name {column_name} conflicts with an existing attribute of value {value}") except AttributeError: setattr(self, column_name, column_name) if self.primary_key is not None: setattr(self, self.primary_key, self.primary_key)
SPOT_TRADE_TABLE = Table( 'spot_trade', [ 'tradeId', 'tdTime', 'asset', 'refAsset', 'qty', 'price', 'fee', 'feeAsset', 'isBuyer' ], [ 'INTEGER', 'INTEGER', 'TEXT', 'TEXT', 'REAL', 'REAL', 'REAL', 'TEXT', 'INTEGER' ] ) SPOT_DEPOSIT_TABLE = Table( 'spot_deposit', [ 'insertTime', 'asset', 'amount', ], [ 'INTEGER', 'TEXT', 'REAL' ], primary_key='txId', primary_key_sql_type='TEXT' ) SPOT_WITHDRAW_TABLE = Table( 'spot_withdraw', [ 'txId', 'applyTime', 'asset', 'amount', 'fee' ], [ 'TEXT', 'INTEGER', 'TEXT', 'REAL', 'REAL' ], primary_key='withdrawId', primary_key_sql_type='TEXT' ) SPOT_DIVIDEND_TABLE = Table( 'spot_dividend_table', [ 'divTime', 'asset', 'amount' ], [ 'INTEGER', 'TEXT', 'REAL' ], primary_key='divId', primary_key_sql_type='INTEGER' ) SPOT_DUST_TABLE = Table( 'spot_dust_table', [ 'tranId', 'dustTime', 'asset', 'assetAmount', 'bnbAmount', 'bnbFee', ], [ 'INTEGER', 'INTEGER', 'TEXT', 'REAL', 'REAL', 'REAL' ] ) LENDING_INTEREST_TABLE = Table( 'lending_interest_table', [ 'interestTime', 'lendingType', 'asset', 'amount', ], [ 'INTEGER', 'TEXT', 'TEXT', 'REAL', ] ) LENDING_PURCHASE_TABLE = Table( 'lending_purchase_history', [ 'purchaseTime', 'lendingType', 'asset', 'amount' ], [ 'INTEGER', 'TEXT', 'TEXT', 'INTEGER' ], primary_key='purchaseId', primary_key_sql_type='INTEGER' ) LENDING_REDEMPTION_TABLE = Table( 'lending_redemption_history', [ 'redemptionTime', 'lendingType', 'asset', 'amount' ], [ 'INTEGER', 'TEXT', 'TEXT', 'INTEGER' ] ) CROSS_MARGIN_TRADE_TABLE = Table( 'cross_margin_trade', [ 'tradeId', 'tdTime', 'asset', 'refAsset', 'qty', 'price', 'fee', 'feeAsset', 'isBuyer' ], [ 'INTEGER', 'INTEGER', 'TEXT', 'TEXT', 'REAL', 'REAL', 'REAL', 'TEXT', 'INTEGER' ] ) CROSS_MARGIN_LOAN_TABLE = Table( "cross_margin_loan_table", [ 'loanTime', 'asset', 'principal', ], [ 'INTEGER', 'TEXT', 'REAL' ], primary_key='txId', primary_key_sql_type='INTEGER' ) CROSS_MARGIN_REPAY_TABLE = Table( "cross_margin_repay_table", [ 'repayTime', 'asset', 'principal', 'interest', ], [ 'INTEGER', 'TEXT', 'REAL', 'REAL' ], primary_key='txId', primary_key_sql_type='INTEGER' ) CROSS_MARGIN_INTEREST_TABLE = Table( "cross_margin_interest_table", [ 'interestTime', 'asset', 'interest', 'interestType' ], [ 'INTEGER', 'TEXT', 'REAL', 'TEXT' ] ) ISOLATED_MARGIN_TRADE_TABLE = Table( 'isolated_margin_trade', [ 'tradeId', 'tdTime', 'symbol', 'asset', 'refAsset', 'qty', 'price', 'fee', 'feeAsset', 'isBuyer' ], [ 'INTEGER', 'INTEGER', 'TEXT', 'TEXT', 'TEXT', 'REAL', 'REAL', 'REAL', 'TEXT', 'INTEGER' ] ) ISOLATED_MARGIN_LOAN_TABLE = Table( "isolated_margin_loan_table", [ 'loanTime', 'symbol', 'asset', 'principal', ], [ 'INTEGER', 'TEXT', 'TEXT', 'REAL' ], primary_key='txId', primary_key_sql_type='INTEGER' ) ISOLATED_MARGIN_REPAY_TABLE = Table( "isolated_margin_repay_table", [ 'repayTime', 'symbol', 'asset', 'principal', 'interest', ], [ 'INTEGER', 'TEXT', 'TEXT', 'REAL', 'REAL' ], primary_key='txId', primary_key_sql_type='INTEGER' ) ISOLATED_MARGIN_INTEREST_TABLE = Table( "isolated_margin_interest_table", [ 'interestTime', 'symbol', 'asset', 'interest', 'interestType' ], [ 'INTEGER', 'TEXT', 'TEXT', 'REAL', 'TEXT' ] ) ISOLATED_MARGIN_TRANSFER_TABLE = Table( "isolated_margin_table", [ 'trfType', 'trfTime', 'symbol', 'asset', 'amount' ], [ 'TEXT', 'INTEGER', 'TEXT', 'TEXT', 'REAL' ], primary_key='tranId', primary_key_sql_type='INTEGER' ) UNIVERSAL_TRANSFER_TABLE = Table( "universal_transfer_table", [ 'trfType', 'trfTime', 'asset', 'amount' ], [ 'TEXT', 'INTEGER', 'TEXT', 'REAL' ], primary_key='tranId', primary_key_sql_type='INTEGER' )