class Item(db.Model): """ Asset wrapper model for tracking global, in-game items. """ id = db.Column(db.Integer(), primary_key=True) amount = db.Column(db.Integer()) faythe_id = db.Column(db.Integer(), db.ForeignKey("faythe.id")) order_id = db.Column(db.Integer(), db.ForeignKey("order.id")) user_id = db.Column(db.Integer(), db.ForeignKey("user.id")) owner_id = db.Column(db.Integer(), db.ForeignKey("user.id")) asset_id = db.Column(db.Integer(), db.ForeignKey("asset.id")) def amendItem(self, user, action, amount=None, receiver=None): if action == "append": self.owner = user elif action == "delete": pass elif action == "transfer": pass def status(self): if self.botHolder != None: return "secured" elif self.holder != None: return "moving" else: return "unknown" def totalWorth(self): return "{:,}".format(round(self.asset.sellPrice * self.amount), 2)
class Order(db.Model): """ Model containing data on a specific Minance users order. """ id = db.Column(db.Integer(), primary_key=True) status = db.Column(db.String(), nullable=False, default="pending") method = db.Column(db.String(), nullable=False) minimumTrust = db.Column(db.Integer(), nullable=False) fee = db.Column(db.Float(), nullable=False) visibility = db.Column(db.String(), nullable=False, default="private") order_date = db.Column(db.DateTime(), nullable=False, default=datetime.utcnow()) fulfilled_date = db.Column(db.DateTime(), default=datetime.utcnow()) items = db.relationship("Item", backref="order", lazy=True) user_id = db.Column(db.Integer(), db.ForeignKey("user.id")) def calcPrice(self): if self.method == "buy": return "{:,}".format( round(self.items[0].asset.sellPrice * self.items[0].amount, 2)) else: return 0 def calcReturn(self): return "{:,}".format( round((self.items[0].asset.sellPrice * self.items[0].amount) * (self.fee / 100), 2))
class APIKey(db.Model): """ API key model for API access. """ id = db.Column(db.Integer(), primary_key=True) # UUID API Key clearance = db.Column(db.Integer(), nullable=False, default=1) user_id = db.Column(db.Integer(), db.ForeignKey("user.id"))
class Candle(db.Model): """ Candle model for open, high, low, close (OHLC) candles. """ id = db.Column(db.Integer(), primary_key=True) priceType = db.Column(db.String(), nullable=False) timeframe = db.Column(db.Integer(), nullable=False) # Type of candle in minutes creationDate = db.Column(db.DateTime(), nullable=False, default=datetime.utcnow()) # OHLC open = db.Column(db.Float(precision=4), nullable=False) high = db.Column(db.Float(precision=4), nullable=False) low = db.Column(db.Float(precision=4), nullable=False) close = db.Column(db.Float(precision=4), nullable=False) volume = db.Column(db.Integer(), nullable=False) """Relation to allow a specific candle to point to other candle objects.""" contains = db.relationship("Candle", secondary=candles, primaryjoin=(candles.c.containee_id == id), secondaryjoin=(candles.c.container_id == id), backref=db.backref("candles", lazy="dynamic"), lazy="dynamic") asset_id = db.Column(db.Integer(), db.ForeignKey("asset.id"), nullable=False) @property def formattedOHLC(self): return [ self.creationDate.timestamp(), self.open, self.high, self.low, self.close, self.volume ]
import pickle from datetime import datetime from minance import db candles = db.Table( "candles", db.Column("containee_id", db.Integer, db.ForeignKey("candle.id")), db.Column("container_id", db.Integer, db.ForeignKey("candle.id"))) class Candle(db.Model): """ Candle model for open, high, low, close (OHLC) candles. """ id = db.Column(db.Integer(), primary_key=True) priceType = db.Column(db.String(), nullable=False) timeframe = db.Column(db.Integer(), nullable=False) # Type of candle in minutes creationDate = db.Column(db.DateTime(), nullable=False, default=datetime.utcnow()) # OHLC open = db.Column(db.Float(precision=4), nullable=False) high = db.Column(db.Float(precision=4), nullable=False) low = db.Column(db.Float(precision=4), nullable=False) close = db.Column(db.Float(precision=4), nullable=False) volume = db.Column(db.Integer(), nullable=False) """Relation to allow a specific candle to point to other candle objects."""