#!/bin/bash

# This script gives an interactive SQL monitor for Sybase/MSSQL servers.
# It uses the bsqldb program from FreeTDS.

test "X$1" = X && rlwrap $0 --interactive && exit 0
test "X$DBHOST" = X && echo "Please specify DBHOST in environment" && exit 1
test "X$DBUSER" = X && echo "Please specify DBUSER in environment" && exit 1
test "X$DBDB" = X && echo "Please specify DBDB in environment" && exit 1

read -p "Give DB password: " -s PASSWORD && echo

exec_sql() {
	echo "$*" | \
	bsqldb -h -t '|-|' -S "$DBHOST" -D "$DBDB" -U "$DBUSER" -P "$PASSWORD"
}

to_html() {
	echo '<table>'
	sed 's#&#\&amp;#g;s#<#\&lt;#g;s#>#\&gt;#g' | \
	sed 's#^#<tr><td>#;s#$#</td></tr>#;s#|-|#</td><td>#g' | \
	sed '/<tr>\(<td>-*<\/td>\)*<\/tr>/{;s#.*#</table><table>#p;d;};${;x;p;};x'
	echo '</table>'
}

while true; do
	read -p "sql> " QUERY
	exec_sql "$QUERY" | to_html | w3m -dump -T text/html
done

