Beispiel #1
0
def sqlite_lookup(input: str) -> List[Whatis]:
    subquery_base = db_session.query(
        Whatis.whatis_id, func.max(Whatis.version).label("version")
    )
    subquery_filtered = subquery_base.filter(
        Whatis.terminology.ilike(f"%{input}%" if len(input) > 3 else f"{input}")
    )
    subquery_grouped = subquery_filtered.group_by(Whatis.whatis_id).subquery("s2")
    query = db_session.query(Whatis).join(
        subquery_grouped,
        and_(
            Whatis.whatis_id == subquery_grouped.c.whatis_id,
            Whatis.version == subquery_grouped.c.version,
        ),
    )
    return query.all()
Beispiel #2
0
def get_all_whatises() -> List[Whatis]:
    # Return all Whatises to be sent as a CSV
    subquery_base = db_session.query(
        Whatis.whatis_id, func.max(Whatis.version).label("version")
    )
    subquery_grouped = subquery_base.group_by(Whatis.whatis_id).subquery("s2")
    query = (
        db_session.query(Whatis)
        .join(
            subquery_grouped,
            and_(
                Whatis.whatis_id == subquery_grouped.c.whatis_id,
                Whatis.version == subquery_grouped.c.version,
            ),
        )
        .order_by(Whatis.terminology)
    )
    return query.all()
Beispiel #3
0
def postgres_lookup(input: str) -> List[Whatis]:
    subquery_base = db_session.query(
        Whatis.whatis_id, func.max(Whatis.version).label("version")
    )
    subquery_filtered = subquery_base.filter(
        or_(
            func.levenshtein(func.lower(Whatis.terminology), input.lower()) <= 1,
            Whatis.terminology.ilike(f"%{input}%") if len(input) > 3 else false(),
        )
    )
    subquery_grouped = subquery_filtered.group_by(Whatis.whatis_id).subquery("s2")
    query = db_session.query(Whatis).join(
        subquery_grouped,
        and_(
            Whatis.whatis_id == subquery_grouped.c.whatis_id,
            Whatis.version == subquery_grouped.c.version,
        ),
    )
    return query.all()
Beispiel #4
0
def update_whatis(id, definition, notes, links, added_by,
                  point_of_contact) -> Whatis:
    wi: Whatis = db_session.query(Whatis).filter(Whatis.id == id).first()
    # Check to see if a different user updated your terminology
    if added_by != wi.added_by:
        slack_client.chat_postMessage(
            channel=wi.added_by,
            text=
            f"Hey  <@{wi.added_by}>, the user <@{added_by}> has updated your Whatis for *{wi.terminology}*, "
            f"try searching for it again to see what they changed!",
        )
    create_whatis(
        terminology=wi.terminology,
        whatis_id=wi.whatis_id,
        definition=definition,
        notes=notes,
        links=links,
        version=wi.version + 1,
        added_by=added_by,
        point_of_contact=point_of_contact,
    )
    return wi
Beispiel #5
0
def get_whatis(id: int) -> Whatis:
    wi = db_session.query(Whatis).filter(Whatis.id == id).first()
    return wi
Beispiel #6
0
def rollback_whatis(id):
    wi = (db_session.query(Whatis).filter(Whatis.id == id).order_by(
        desc(Whatis.version)).first())
    db_session.delete(wi)
    db_session.commit()
Beispiel #7
0
def delete_whatis(whatis_id):
    wi = db_session.query(Whatis).filter(Whatis.whatis_id == whatis_id).all()
    for w in wi:
        db_session.delete(w)
    db_session.commit()