#!/bin/sh
#
# mysql
#

MYSQL_LIB="/var/lib/mysql"
MYSQL_RUN="/run/mysql"
MYSQL_PID="$MYSQL_RUN/mysqld.pid"
MYSQL_BIN="/usr/bin"
MYSQL_INSTALL="FALSE"

wait_for_ready() {
	WAIT_DELAY=5
	while [ $WAIT_DELAY -gt 0 ]; do
		if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then
			return 0
		fi
		sleep 1
		: $((WAIT_DELAY -= 1))
	done
	return 1
}

start() {
	if [ `ls -1 $MYSQL_LIB | wc -l` = 0 ] ; then
		printf "Creating mysql system tables ... "

		MYSQL_INSTALL="TRUE"		
		$MYSQL_BIN/mysql_install_db --basedir=/usr --user=mysql \
			--datadir=$MYSQL_LIB > /dev/null 2>&1
		if [ $? != 0 ]; then
			echo "FAIL"
			exit 1
		fi
		echo "OK"
	fi

	# mysqld runs as user mysql, but /run is only writable by root
	# so create a subdirectory for mysql.
	install -d -o mysql -g root -m 0755 $MYSQL_RUN

	# We don't use start-stop-daemon because mysqld has its own
	# wrapper script.
	printf "Starting mysql ... "
	$MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PID --user=mysql \
		> /dev/null 2>&1 &
	wait_for_ready
	[ $? = 0 ] && echo "OK" || echo "FAIL"
	if [ $MYSQL_INSTALL = "TRUE" ]; then
		# creat tzinfo for mysql
		echo "create tzinfo for mysql"
		mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
		[ $? = 0 ] && echo "tzinfo OK" || echo "tzinfo FAIL"
		# create Melasan Database
echo ">>>Create Melasan DB <<<"
(
cat << EOF
set @@session.time_zone=UTC;
create database if not exists Melasan;
create user if not exists 'melasan'@'localhost' identified by 'Melasan2017';
grant all privileges on Melasan.* to 'melasan'@'localhost';
flush privileges;
create table if not exists Melasan.Slid (
Date timestamp not null,
slid char(40) not null,
EnableDone bool default false,
readcnt int not null default 0,
primary key (slid)
) engine=innodb;
EOF
) | mysql -u root
		[ $? = 0 ] && echo "genDB OK" || echo "genDB FAIL"
		# ================
	fi
}

stop() {
	printf "Stopping mysql ... "
	if [ -f $MYSQL_PID ]; then
		kill `cat $MYSQL_PID` > /dev/null 2>&1
		[ $? = 0 ] && echo "OK" || echo "FAIL"
	else
		echo "FAIL"
	fi
}

restart() {
	stop
	sleep 1
	start
}

case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	restart
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	;;
esac
