Exemplo n.º 1
0
def get_fact(fact_id: int) -> models.ChuckNorrisFactDb:
    try:
        fact = db.get_fact(fact_id=fact_id)
    except db.ObjectNotFoundError as e:
        raise HTTPException(status_code=sc.HTTP_404_NOT_FOUND, detail=str(e))
    except Exception as e:
        raise HTTPException(
            status_code=sc.HTTP_500_INTERNAL_SERVER_ERROR,
            detail=f'Error while retrieving fact with id {fact_id}: {e}')
    if fact:
        return models.ChuckNorrisFactDb(id=fact_id, fact=fact)
    else:
        raise HTTPException(status_code=sc.HTTP_404_NOT_FOUND,
                            detail=f'Fact with id {fact_id} not found.')
Exemplo n.º 2
0
async def create_item(fact: str):
    try:
        id, fact = db.insert_fact(fact)
    except Exception as e:
        logger.error(e)
        raise HTTPException(status_code=sc.HTTP_500_INTERNAL_SERVER_ERROR,
                            detail=str(e))
    chuck_norris_fact_db = lambda id, fact: models.ChuckNorrisFactDb(id=id,
                                                                     fact=fact)
    if id:
        return chuck_norris_fact_db(id, fact)
    else:
        raise HTTPException(status_code=sc.HTTP_403_FORBIDDEN,
                            detail=f'Cannot insert fact')
Exemplo n.º 3
0
def get_facts(ids: List[int] = Query(
    default=None, title='ids', description='The list of ids to retrieve')) -> List[models.ChuckNorrisFactDb]:
    try:
        facts: Optional[List[Tuple[int, str]]] = db.get_facts(ids=ids)
    except db.ObjectNotFoundError as err:
        raise HTTPException(status_code=sc.HTTP_404_NOT_FOUND, detail=str(err))
    except Exception as e:
        logger.error(e)
        raise HTTPException(status_code=sc.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e))
    chuck_norris_fact_db = lambda id, fact: models.ChuckNorrisFactDb(id=id, fact=fact)
    if facts:
        return [chuck_norris_fact_db(id=id, fact=fact) for (id, fact) in facts]
    else:
        raise HTTPException(status_code=sc.HTTP_404_NOT_FOUND,
                            detail=f'Facts with ids {",".join(map(str, ids))} not found')