from minibase.app import db from sqlalchemy import case class table_printable: def __init__(self, table, link_for_item, item_to_be_linked): self.titles = table.__table__.columns.keys() self.lines = table.query.all() self.link_for_item = link_for_item self.item_to_be_linked = item_to_be_linked self.paginate = 0 # https://www.youtube.com/watch?v=PSWf2TjTGNY&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=9 class table_printable_paginate: def __init__(self, table, current_page, per_page, link_for_item, item_to_be_linked): self.titles = table.__table__.columns.keys() self.lines = table.query.paginate(page=current_page, per_page=per_page) self.link_for_item = link_for_item self.item_to_be_linked = item_to_be_linked self.paginate = 1 def queryNameWithDefaultId(table,defId): return table.query.order_by(case((table.id == defId, 0),else_=1),table.name.asc()) def queryWithDefaultAttrOrderBy(table, attribute, default, order_by): return table.query.order_by(case((attribute == default, 0),else_=1),order_by.asc()) def queryItemWithId(table,defId): return table.query.order_by(case((table.id == defId, 0),else_=1),table.name.asc()) def queryIlikeFromTable(table, attribute, data): return table.query.filter(attribute.ilike(f'%{data}%')).first() # Queries Items from table using an attribute, and ordered by the attribute, ascenting or descending def queryWithAttrOrder(table, attribute, desc=0): if desc: return table.query.order_by(attribute.desc()).all() else: return table.query.order_by(attribute.asc()).all() #return table.query.filter_by(attribute=data).order_by(order_by.asc()).all() def queryItemFromTableDateDesc(table, attribute): return table.query.order_by(attribute.asc()) def dbAdd(dbClass): db.session.add(dbClass) def dbCommit(): db.session.commit() def dbAddAndCommit(dbClass): db.session.add(dbClass) db.session.commit()