# apfscore adapted to work on fk6 objects

from gavo import api

apfscore, _ = api.loadPythonModule("apfscore", relativeTo=__file__)


class Core(apfscore.BaseCore):
	inputTableXML = apfscore.INPUT_TABLE_XML_TEMPLATE.format(
		objectDescription="Enter an FK6 number here, or a (decimal, "
			"comma-seperated) position, or simbad identifier to use "
			"the closest FK6 star.",
		objectDefault="907")
	sourceCatName = "FK6"
	sourceCatId = "apfs/res/apfs_new#fk6apfs"
	useLegacy = False

	def query(self, fk6Number, inputTable):
		with api.getTableConn() as conn:
			return list(
				conn.query(
					"SELECT raj2000 AS alpha, dej2000 AS delta,"
						" pmra*3.6e6 AS mu_alpha, pmde*3.6e6 AS mu_delta, "
						" pres*3600 AS parallax, v_rad AS rv,"
						" period, ecc, tperi, a_major, incl, nodelength,"
						" peraparg, comname"
					" FROM apfs.fk6apfs"
					" WHERE localid=%(id)s",
					{"id": fk6Number}))[0]


def _test():
	import datetime
	from gavo.formats import texttable #noflake: for registration
	import sys

	rd = api.getRD("apfs/res/apfs_new")
	svc = rd.getById("catquery")
	api.formatData("tsv",
		svc.run("form", {
				"startDate": datetime.date(2010, 11, 12),
				"endDate": datetime.date(2010, 11, 17),
				"hrInterval": 12,
				"object": "907",
			}, api.QueryMeta()),
		sys.stdout.buffer)


if __name__=="__main__":
	_test()
