bitforge-me / beryllium

1 stars 9 forks source link

add fee breakdown to broker order model #118

Closed djpnewton closed 1 year ago

djpnewton commented 1 year ago

This give extra info so the UI can give a fee breakdown.

New example response from broker_order_validate/create API:

{
  "broker_order": {
    "base_amount": 10354, 
    "base_amount_dec": "0.00010354", 
    "base_asset": "BTC", 
    "date": "2022-10-26T03:31:26.343295", 
    "expiry": "2022-10-26T03:46:26.343314", 
    "market": "BTC-NZD", 
    "quote_amount": 3, 
    "quote_amount_dec": "0.03", 
    "quote_asset": "NZD", 
    "quote_fee": 1,             // see here
    "quote_fee_dec": "0.01", 
    "quote_fee_fixed": 100,     // and here
    "quote_fee_fixed_dec": "1", 
    "side": "ask", 
    "status": "created", 
    "token": "R0H4LE73Z4"
  }
}
eoliveros commented 1 year ago

tried running this but im getting an error when im clicking the "order history" in alloy.

[app_core ERROR] Exception on /apiv1/broker_orders [POST]
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1519, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.10/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/app/src/api_endpoint.py", line 997, in broker_orders
    orders = [order.to_json() for order in orders]
  File "/app/src/api_endpoint.py", line 997, in <listcomp>
    orders = [order.to_json() for order in orders]
  File "/app/src/models.py", line 444, in to_json
    return ref_schema.dump(self)
  File "/usr/local/lib/python3.10/site-packages/marshmallow/schema.py", line 552, in dump
    result = self._serialize(processed_obj, many=many)
  File "/usr/local/lib/python3.10/site-packages/marshmallow/schema.py", line 520, in _serialize
    value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute)
  File "/usr/local/lib/python3.10/site-packages/marshmallow/fields.py", line 338, in serialize
    return self._serialize(value, attr, obj, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/marshmallow/fields.py", line 1870, in _serialize
    return self._serialize_method(obj)
  File "/app/src/models.py", line 394, in get_quote_fee_fixed_dec
    return str(assets.asset_int_to_dec(obj.quote_asset, obj.quote_fee_fixed))
  File "/app/src/assets.py", line 145, in asset_int_to_dec
    return Dec(value) / Dec(10**decimals)
TypeError: conversion from NoneType to Decimal is not supported

I've also run "flask-cli.sh db upgrade", would i need to run another script?

djpnewton commented 1 year ago

forgot to push updates it fix handling old orders without fee information - fixed

djpnewton commented 1 year ago

deployed to be-test.bitforge.me

djpnewton commented 1 year ago

cool, will squash and merge