#!/usr/bin/env bash
set -e

# This scipt converts a SQLite3 to a MySQL database. It assumes both
# old and new databases live on the same host and are accessable by the same 
# user.

SCHEMA=../src/db/schema.mysql

DB_IN=""
DB_OUT=""
DB_HOST="localhost"
DB_USR="test"
DB_PWD="test"

while getopts "i:o:h:u:p:" arg; do
	case $arg in
	i) DB_IN=$OPTARG ;;
	o) DB_OUT=$OPTARG ;;
	h) DB_HOST=$OPTARG ;;
	u) DB_USR=$OPTARG ;;
	p) DB_PWD=$OPTARG ;;
	*)
		echo "usage: "$0" -i DATABASE_SQLITE -o DATABASE_MYSQL [-h HOST] [-u USER] [-p PASSWORD]"
		exit 1
	;;
	esac
done

if [ -z $DB_IN ]; then
	echo "ERROR: No input database specified (-i DB_FILE)"
	exit 1
fi

if [ -z $DB_OUT ]; then
	echo "ERROR: No output database specified (-o DB_NAME)"
	exit 1
fi

echo "Creating database $DB_OUT (as user $DB_USR)"
echo "DROP DATABASE IF EXISTS $DB_OUT;CREATE DATABASE $DB_OUT;" | 
	mysql -u $DB_USR -p$DB_PWD -h $DB_HOST

echo "Creating tables in $DB_OUT (as user $DB_USR)"
mysql -u $DB_USR -p$DB_PWD -h $DB_HOST $DB_OUT < $SCHEMA

echo "Converting database"

sqlite3 $DB_IN .dump | awk '/INSERT INTO/,/;/' | grep -v sqlite_sequence | sed -r 's/^INSERT INTO "([^"]+)"/INSERT INTO `\1`/' > tmp
mysql -u $DB_USR -p$DB_PWD -h $DB_HOST $DB_OUT < tmp
rm tmp
