#!/bin/sh

RUNASUSER="apache"
SITEPACK=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")

usage()
{
	printf "Usage: %s [argument]\n" $(basename $0) >&2
	printf "       [-a]                                  - apply new migration\n" >&2
	printf "       [-c]                                  - create database\n" >&2
	printf "       [-f]                                  - mark migrations as run without running them\n" >&2
	printf "       [-h]                                  - usage\n" >&2
	printf "       [-l]                                  - list migrations\n" >&2
	printf "       [-m]                                  - create new migration\n" >&2
	printf "       [-o]                                  - apply migrations from other apps\n" >&2
	printf "       [-s] -n <schema name>                 - clear stale login sessions\n" >&2
	printf "       [-x] -n <schema name>                 - just load fixtures\n" >&2
	printf "       [-u] -n <schema name>                 - create superuser\n" >&2
	printf "       [-d] -n <schema name> -f <file path>  - load data from file\n" >&2
	printf "       [-p] -n <schema name> -f <file path>  - dump data to file\n" >&2
	printf "       [-i] -n <schema name>                 - import internal metrics\n" >&2
    exit 2
}

if [[ $# == 0 ]]
then
    usage
fi

while getopts 'cafmlhsoxun:dpi' OPTION
do
    case $OPTION in
        n)
            schema=$OPTARG ;;
        c)
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage migrate_schemas --shared"
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage create_tenant --name all"
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage tenant_command --schema=public loaddata initial_data_public.json "
            ;;
        u)
            while getopts 'n:' OPTION2
            do
                case $OPTION2 in
                    n) schema=$OPTARG ;;
                esac
            done
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage tenant_command --schema=$schema poem_superuser "
             ;;
        m)
            poem-manage makemigrations poem
            ;;
        f)
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage migrate_schemas --tenant --fake"
            ;;
        a)
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage migrate_schemas --shared"
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage migrate_schemas poem --tenant"
            ;;
        l)
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage showmigrations poem poem_super_admin users tenants"
            ;;
        s)
            while getopts 'n:' OPTION2
            do
                case $OPTION2 in
                    n)
                        schema=$OPTARG ;;
                esac
            done
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage tenant_command --schema=$schema clearsessions "
            ;;
        o)
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage makemigrations"
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage migrate_schemas --tenant"
            ;;
        x)
            while getopts 'n:' OPTION2
            do
                case $OPTION2 in
                    n)
                        schema=$OPTARG ;;
                esac
            done
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage tenant_command --schema=$schema loaddata initial_data.json "
            ;;
        d)
            while getopts 'n:f:' OPTION2
            do
                case $OPTION2 in
                    n)
                        schema=$OPTARG ;;
                    f)
                        filename=$OPTARG ;;
                esac
            done
            su -m -s /bin/sh $RUNASUSER -c \
            "poem-manage tenant_command --schema=$schema loaddata $filename"
            ;;
        p)
            while getopts 'n:f:' OPTION2
            do
                case $OPTION2 in
                    n)
                        schema=$OPTARG ;;
                    f)
                        filename=$OPTARG ;;
                esac
            done
            if [[ $schema == 'public' ]]
            then
              poem-manage tenant_command --schema=$schema dumpdata --indent 2 --natural-foreign --natural-primary --exclude tenants.tenant > $filename
            else
              poem-manage tenant_command --schema=$schema dumpdata --indent 2 --natural-foreign --natural-primary  > $filename
            fi
            ;;
        i)
            while getopts 'n:' OPTION2
            do
                case $OPTION2 in
                    n) schema=$OPTARG ;;
                esac
            done
            if [[ $schema == 'public' ]]
            then
              echo "You cannot import metrics to public schema!!"
              exit 1
            else
              su -m -s /bin/sh $RUNASUSER -c \
              "poem-manage tenant_command --schema=$schema import_internal_metrics"
            fi
            ;;
        h)
            usage
            ;;
        ?)
            usage
            ;;
    esac
done
