def update_item(id: int):
    item = Item.query.filter_by(id=id).first()
    if item is None:
        return not_found('item não encontrado')

    data = request.get_json() or {}

    error = Item.check_data(data=data)
    if 'registry' in data and data['registry'] is not None \
            and data['registry'] != item.registry and \
            Item.query.filter_by(registry=data['registry']).first() is not None:
        error = 'tombo já existe'
    if 'category_id' in data and data['category_id'] is not None and \
            Category.query.get(data['category_id']) is None:
        error = 'category_id não existe'
    if error:
        return bad_request(error)

    item.from_dict(data)
    try:
        db.session.commit()
    except Exception:
        return internal_server()

    return jsonify(item.to_dict())
def create_item():
    data = request.get_json() or {}

    error = Item.check_data(data=data, new=True)
    if 'registry' in data and data['registry'] is not None and \
            Item.query.filter_by(registry=data['registry']).first():
        error = 'tombo já existe'
    if 'category_id' in data and data['category_id'] is not None and \
            Category.query.get(data['category_id']) is None:
        error = 'categoria não existe'
    if error:
        return bad_request(error)

    item = Item()
    item.from_dict(data)

    try:
        db.session.add(item)
        db.session.commit()
    except Exception:
        return internal_server()

    return jsonify(item.to_dict()), 201