Source code for pydarkstar.auction.browser

from ..tables.auctionhouse import AuctionHouse
from .worker import Worker
import sqlalchemy


[docs]class Browser(Worker): """ Auction House browser. :param db: database object """ def __init__(self, db, **kwargs): super(Browser, self).__init__(db, **kwargs)
[docs] def count(self): """ Get the number of rows. """ with self.scopped_session() as session: return session.query(AuctionHouse).count()
[docs] def get_stock(self, itemid, stack=False, seller=None): """ Get stock of item. :param itemid: item number :param stack: consider stacks :param seller: consider seller :type itemid: int :type stack: int :type seller: int """ with self.capture(fail=self.fail): # validate itemid = AuctionHouse.validate_itemid(itemid) stack = AuctionHouse.validate_stack(stack) # perform query with self.scopped_session() as session: # ignore seller if seller is None: n = session.query(AuctionHouse).filter( AuctionHouse.itemid == itemid, AuctionHouse.stack == stack, AuctionHouse.sale == 0, ).count() return n # consider seller else: seller = AuctionHouse.validate_seller(seller) n = session.query(AuctionHouse).filter( AuctionHouse.itemid == itemid, AuctionHouse.seller == seller, AuctionHouse.stack == stack, AuctionHouse.sale == 0, ).count() return n
[docs] def get_price(self, itemid, stack=False, seller=None, func=sqlalchemy.func.min): """ Get price of item. :param itemid: item number :param stack: consider stacks :param seller: consider seller :param func: sqlalchemy function :type itemid: int :type stack: int :type seller: int """ with self.capture(fail=self.fail): # validate itemid = AuctionHouse.validate_itemid(itemid) stack = AuctionHouse.validate_stack(stack) # perform query with self.scopped_session() as session: # ignore seller if seller is None: n = session.query(func(AuctionHouse.sale)).filter( AuctionHouse.itemid == itemid, AuctionHouse.stack == stack, AuctionHouse.sale != 0, ).scalar() return n # consider seller else: seller = AuctionHouse.validate_seller(seller) n = session.query(func(AuctionHouse.sale)).filter( AuctionHouse.itemid == itemid, AuctionHouse.seller == seller, AuctionHouse.stack == stack, AuctionHouse.sale != 0, ).scalar() return n
if __name__ == '__main__': pass