#!/bin/sh

# for MSYS to disable path conversion in command line argument
export MSYS2_ARG_CONV_EXCL="*"


if [ $# -ne 1 ]
then
    echo "Usage : mkdb <TS>,<TS>,.."
    exit 1
fi

TSLIST=`echo $1 | sed 's/,/ /g'`

###############
# database defs
###############
DBXML=./db/chkdb.xml
DBNAME=chkdb
# PAGESIZE=1024
# PAGESIZE=131072
# PAGESIZE=65536
# PAGESIZE=32768
PAGESIZE=16384
# PAGESIZE=8192
# PAGESIZE=4096
# PAGESIZE=2048
# PAGESIZE=1024
# PAGESIZE=512
DBHOST=`hostname`
ADMPORT=2000
DBPORT=2200
LOGPORT=3000
PIDFILE=./db/pid
LOCKFILE=./cego.lock
ADMINUSER=cgadm
ADMINPWD=cgadm

DEBUGLEVEL=DEBUG
# DEBUGLEVEL=NOTICE

### end of customizing ###

rm -rf db
mkdir db
rm -f $DBXML

# echo "Creating xml ..."
# cat > $DBXML <<EOF
# <?xml version="1.0" ?>
# <!DOCTYPE CEGO_DB_SPEC>
# <DATABASE NAME="$DBNAME" PAGESIZE="$PAGESIZE" HOSTNAME="$DBHOST" ADMINPORT="$ADMPORT" LOGPORT="$LOGPORT" DATAPORT="$DBPORT"
# PIDFILE="$PIDFILE"
# NUMRECSEMA="2141" NUMSYSPAGESEMA="441" NUMDATAPAGESEMA="41" 
# NUMIDXPAGESEMA="41" NUMRBPAGESEMA="2141" NUMDATAFILESEMA="11" NUMBUFFERPOOLSEMA="11"
# MAXFIXTRIES="30" 
# CSMODE="ON" QESCMODE="ON" LOGMNGPROG="./cglogmng">
# <MODULE NAME="ALL" LEVEL="$DEBUGLEVEL"></MODULE>
# </DATABASE> 
# EOF

# <MODULE NAME="CegoTableManager" LEVEL="NOTICE"></MODULE>
# <MODULE NAME="CegoAdminThreadPool" LEVEL="NOTICE"></MODULE>
# <MODULE NAME="CegoSelect" LEVEL="NOTICE"></MODULE>

CEGOPROG=../../src/cego
ECHO="/bin/echo -n"
ECHONL="/bin/echo"

$ECHO "Init database xml ..."
$CEGOPROG --mode=init --dbxml=${DBXML} --dbname=$DBNAME --hostname=$DBHOST --pgsize=$PAGESIZE --dbport=$DBPORT --admport=$ADMPORT --logport=$LOGPORT --pidfile=$PIDFILE --csmode=ID --qescmode=OFF --loglevel=$DEBUGLEVEL --lockfile=$LOCKFILE

if [ $? -eq 0 ]
then
    $ECHONL "... operation ok"
else
    $ECHONL "... operation failed"
    exit 1
fi


$ECHO "Creating admin user ..."
$CEGOPROG --mode=adduser --dbxml=${DBXML} --user=${ADMINUSER}/${ADMINPWD} --role=admin --lockfile=$LOCKFILE

if [ $? -eq 0 ]
then
    $ECHONL "... operation ok"
else
    $ECHONL "... operation failed"
    exit 1
fi

$ECHO "Creating role ..."
$CEGOPROG --mode=addrole --dbxml=${DBXML} --role=ALL --lockfile=$LOCKFILE

if [ $? -eq 0 ]
then
    $ECHONL "... operation ok"
else
    $ECHONL "... operation failed"
    exit 1
fi

for TS in $TSLIST
do
    
    $ECHO "Creating role ..."
    $CEGOPROG --mode=addperm --dbxml=${DBXML} --permid=${TS}_P --role=ALL --tableset=$TS --filter="ALL" --perm="ALL" --lockfile=$LOCKFILE 
    
    if [ $? -eq 0 ]
    then
	$ECHONL "... operation ok"
    else
	$ECHONL "... operation failed"
	exit 1
    fi
done


for TS in $TSLIST
do

    TSROOT=./db
    TSTICKET=$TSROOT/${TS}ticket.xml
    SYSSIZE=100
    TMPSIZE=1000
    LOGFILESIZE=1000000
    LOGFILENUM=3
    APPSIZE=10000
    SORTAREASIZE=10000000
    DBUSER=lemke
    DBPWD=lemke


    $ECHO "Defining tableset $TS..."
    $CEGOPROG --mode=define --tableset=${TS} -dbxml=${DBXML} --tsdef="tsroot:${TSROOT},tsticket:${TSTICKET},syssize:${SYSSIZE},tmpsize:${TMPSIZE},appsize:${APPSIZE},logfilesize:${LOGFILESIZE},logfilenum:${LOGFILENUM},sortareasize:${SORTAREASIZE}" --lockfile=$LOCKFILE
    if [ $? -eq 0 ]
    then
	$ECHONL "... operation ok"
    else
	$ECHONL "... operation failed"
	exit 1
    fi

    $ECHO "Creating database user for $TS ..."
    $CEGOPROG --mode=adduser --dbxml=${DBXML} --user=${DBUSER}/${DBPWD} --role=ALL --lockfile=$LOCKFILE
    if [ $? -eq 0 ]
    then
	$ECHONL "... operation ok"
    else
	$ECHONL "... operation failed"
	exit 1
    fi

    $ECHO "Creating tableset $TS..."
    $CEGOPROG --mode=create --dbxml=${DBXML} --tableset=${TS} --lockfile=$LOCKFILE
    if [ $? -eq 0 ]
    then
	$ECHONL "... operation ok"
    else
	$ECHONL "... operation failed"
	exit 1
    fi
done
