def query_sms_send_info(start_time=None, end_time=None, phone=None, restaurant_id=None, card_num_tail=None, status=None): with walis_session() as session: query = session.query(NoticeRecord) if phone: query = query.filter(NoticeRecord.phone == phone) if restaurant_id: query = query.filter(NoticeRecord.restaurant_id == restaurant_id) if card_num_tail: query = query.filter(NoticeRecord.card_num_tail == card_num_tail) if status: query = query.filter(NoticeRecord.status == status) if not start_time: start_time = get_today_begin_time() if not end_time: end_time = get_today_end_time() query = query.filter(NoticeRecord.created_at > start_time).\ filter(NoticeRecord.created_at < end_time) return query.all()
def get_latest_record(cls, restaurant_id, status_to=None): with walis_session() as session: query = session.query(cls).filter( cls.restaurant_id == restaurant_id).order_by( cls.created_at.desc()) if status_to: query.filter(cls.status_to == status_to) return query.first()
def mget_latest_record(cls,restaurant_ids,status_to=None): with walis_session() as session: # subquery order by created_at, the first one of each restaurant will be pick up when group by subquery = session.query(cls).order_by(cls.created_at.desc()).subquery() query = session.query(cls, subquery).group_by(subquery.c.restaurant_id)\ .filter(subquery.c.restaurant_id.in_(restaurant_ids)) if status_to: query.filter(subquery.c.status_to == status_to) return query.all()
def mget_latest_record(cls, restaurant_ids, status_to=None): with walis_session() as session: # subquery order by created_at, the first one of each restaurant will be pick up when group by subquery = session.query(cls).order_by( cls.created_at.desc()).subquery() query = session.query(cls, subquery).group_by(subquery.c.restaurant_id)\ .filter(subquery.c.restaurant_id.in_(restaurant_ids)) if status_to: query.filter(subquery.c.status_to == status_to) return query.all()
def query_sms_send_count(start_time=None, end_time=None, status=None): with walis_session() as session: if not start_time: start_time = get_today_begin_time() if not end_time: end_time = get_today_end_time() query = session.query(func.count(NoticeRecord.record_id)).\ filter(NoticeRecord.created_at > start_time).\ filter(NoticeRecord.created_at < end_time) if status is not None: query = query.filter(NoticeRecord.status == status) return query.scalar()
def get_by_restaurant_id(cls, restaurant_id): with walis_session() as session: return session.query(cls).filter( cls.restaurant_id == restaurant_id). \ order_by(cls.created_at.asc()).all()