#!/bin/sh

#Delete existing database and
#Create sqlite3 database for vasa using the schema provided
#in /etc/mcp/templates/vasa_schema.sql
#On updating from version 1 to version 2 of VASA current data
#in vasa.db will be migrated
DATABASE=$1
DATABASE_NEW=$1.new
SCHEMA=$2
SQLITE3='/usr/local/bin/sqlite3'
DATABASE_TMP=$3
MIGRATE='false'

remove_db() {
    local database=$1
    if [ -f $database ]; then
	rm -rf $database
    fi
}

remove_and_create_db() {
    local database=$1
    local schema=$2
    local database_tmp=$3
    local migrate=$4
    local dump=$database_tmp.dump
    if [ "$migrate" = "true" ] ; then
	echo .dump | $SQLITE3 $database > $dump
	cat $dump | grep "^INSERT INTO" > $dump.ins
    fi
    remove_db $database
    $SQLITE3 $database_tmp < $schema
    if [ "$migrate" = "true" ] ; then
	$SQLITE3 $database_tmp < $dump.ins
	(echo 'delete from version;'  | $SQLITE3 $database_tmp 2>/dev/null)
	(echo 'insert into version values(2);'  | $SQLITE3 $database_tmp 2>/dev/null)
	(echo 'delete from session;'  | $SQLITE3 $database_tmp 2>/dev/null)
	(echo 'delete from storage_port;'  | $SQLITE3 $database_tmp 2>/dev/null)
	(echo 'delete from storage_lun;'  | $SQLITE3 $database_tmp 2>/dev/null)
	(echo 'delete from alternate_value;'  | $SQLITE3 $database_tmp 2>/dev/null)
	(echo 'delete from host_initiator;'  | $SQLITE3 $database_tmp 2>/dev/null)
	remove_db $dump
	remove_db $dump.ins
    fi
    mv $database_tmp $database
}

remove_and_create_db $DATABASE_NEW $SCHEMA $DATABASE_TMP
CURRENT_VERSION=$(echo 'select * from version;'  | $SQLITE3 $DATABASE 2>/dev/null)
if [ "$?" != "0" ] ; then
    remove_and_create_db $DATABASE $SCHEMA $DATABASE_TMP $MIGRATE
    remove_db $DATABASE_NEW
    exit
fi

LATEST_VERSION=$(echo 'select * from version;' | $SQLITE3 $DATABASE_NEW)
if [ "$?" != "0" ] ; then
    remove_and_create_db $DATABASE $SCHEMA $DATABASE_TMP $MIGRATE
    remove_db $DATABASE_NEW
    exit
fi

#Version 2 of VASA includes another table called edition to determine 
#if VASA on Isilon supports NFS, ISCSI or BOTH flavors 
if [ "$CURRENT_VERSION" -eq 1 ] && [ "$LATEST_VERSION" -eq 2 ] ; then
    MIGRATE='true'
fi
if [ "$LATEST_VERSION" != "$CURRENT_VERSION" ] ; then
    remove_and_create_db $DATABASE $SCHEMA $DATABASE_TMP $MIGRATE
    remove_db $DATABASE_NEW
    exit
fi
remove_db $DATABASE_NEW
