#!/usr/bin/ruby

require 'odbc'
require 'csv'

$dsn = ARGV.shift
$uid = ARGV.shift
$pwd = ARGV.shift

conn = ODBC.connect($dsn, $uid, $pwd)

# Dump repinfo
dumpri = conn.prepare("SELECT id, memo, description, prio, descriptor, tablea FROM repinfo")
dumpri.execute.each { |r|
	puts CSV.generate_line(["R"] + r)
}
dumpri.drop

# Prepare the query to look for attributes
dumpattr = conn.proc("SELECT type, value FROM attr WHERE id_context = ? AND id_var = ?") { |stm|
	stm.each { |r|
		puts CSV.generate_line(["A"] + r)
	}
}

# Dump data
dumpdata = conn.prepare("SELECT a.lat, a.lon, a.ident, c.datetime, c.ltype, c.l1, c.l2, c.ptype, c.p1, c.p2, c.id_report, d.id_var, d.value, c.id FROM data d JOIN context c ON d.id_context = c.id JOIN pseudoana a ON c.id_ana = a.id")

dumpdata.execute.each { |r|
	puts CSV.generate_line(["D"] + r[0 .. 12])

	# Dump attributes if any
	dumpattr.call(r[13].to_int, r[11].to_int)
}

dumpdata.drop
dumpattr.statement.drop

# vim:set ts=4 sw=4:
