40 lines
1 KiB
Python
40 lines
1 KiB
Python
|
from typing import Set
|
||
|
|
||
|
from sqlalchemy import func
|
||
|
|
||
|
from ereuse_devicehub.db import db
|
||
|
from ereuse_devicehub.resources.device.models import Device
|
||
|
from ereuse_devicehub.resources.event.models import Price, Event, Trade
|
||
|
|
||
|
ids = {1,2,3}
|
||
|
|
||
|
|
||
|
def export(devices_id: Set[str]):
|
||
|
# todo get the last event of device
|
||
|
last_event = Event.end_time.
|
||
|
|
||
|
devices = Device.id.in_(ids)
|
||
|
|
||
|
total_value_query = db.session.query(Price, func.sum(Price.price).label('total'))\
|
||
|
.filter(devices)\
|
||
|
.join(Price.device)\
|
||
|
.filter(last_event)
|
||
|
|
||
|
# todo hacer query para obtener el price
|
||
|
|
||
|
query(func.max(end_time)).join(Price.devices).filter(Device_id==id).ordey_by(Price.end_time).limit()
|
||
|
|
||
|
total_price_query = query()
|
||
|
|
||
|
value = total_value_query.one()
|
||
|
value['total']
|
||
|
|
||
|
#
|
||
|
db.session.query(Price, (Price.price / total_value_query).label('asdfas'))
|
||
|
|
||
|
trade_orgs_q = db.session.query(Trade, func.sum(Trade.org_id)).filter(devices).join(Trade.devices).filter(last_event)
|
||
|
|
||
|
# execute query
|
||
|
value = trade_orgs_q.scalar()
|
||
|
|