#!/usr/bin/env python3
# Test file for price database stuff
# To update the price database call
# $PATH/gnucash-cli --quotes get $PATHTOFILE
# before running this.
# Adding to a calling bash script would be better
# Although calling it from here would be even better!
#  OR:  export PYTHONPATH=<path-to-gnucash-inst-dir>/lib/python3.7/site-packages:$PYTHONPATH
# You may have to adjust the above path to your local system (lib->lib64, python3.7->...)
# Then: ipython3
# The account file is not saved but always use a disposable copy.
# Change, FILE, CURRENCY and STOCK to those defined in your test account.

##  @file
#   @brief Test file for price database stuff
#   @author Mike Evans 
#   @ingroup python_bindings_examples

from gnucash import Session

# FILE should be the path to your existing gnucash file/database
# For a file, simply pass the pathname, for a database you can use
# these forms:
# mysql://user:password@host/dbname
# postgres://user:password@host[:port]/dbname (the port is optional)
#
FILE = "PATH_TO_YOUR_TEST_FILE"  ## Fail is not saved but use a copy anyway

session = Session(FILE, True, False, False)

root = session.book.get_root_account()
book = session.book
pdb = book.get_price_db()
comm_table = book.get_table()
gbp = comm_table.lookup("CURRENCY", "SOME_CURRENCY")
arm = comm_table.lookup("NASDAQ", "SOME_STOCK")
latest = pdb.lookup_latest(arm,gbp) # from the table, NOT live data
value = latest.get_value()
pl = pdb.get_prices(arm,gbp)
for pr in pl:
   source = pr.get_source()
   time = pr.get_time64()
   v=pr.get_value()
   price = float(v.num)/v.denom
   print(time, source, price)

if len(pl) > 0:
   v0 = pl[0].get_value()
   print(arm.get_fullname(), float(v0.num) / float(v0.denom ))

session.end()
session.destroy()
quit()
