#!/bin/bash
set -e

JINAGA_ADMIN_CONNECTION_STRING=postgresql://$JINAGA_POSTGRES_ADMIN_USER:$JINAGA_POSTGRES_ADMIN_PASSWORD@$JINAGA_POSTGRES_HOST:$JINAGA_POSTGRES_PORT/$JINAGA_POSTGRES_APP_DATABASE

psql -v ON_ERROR_STOP=1 $JINAGA_ADMIN_CONNECTION_STRING <<-EOSQL
    CREATE USER $JINAGA_POSTGRES_APP_USER WITH
        LOGIN
        ENCRYPTED PASSWORD '$JINAGA_POSTGRES_APP_PASSWORD'
        NOSUPERUSER
        INHERIT
        NOCREATEDB
        NOCREATEROLE
        NOREPLICATION
        VALID UNTIL 'infinity';
    CREATE DATABASE $JINAGA_POSTGRES_APP_DATABASE;
EOSQL

cat ./setup.sql | psql -v ON_ERROR_STOP=1 $JINAGA_ADMIN_CONNECTION_STRING

psql -v ON_ERROR_STOP=1 $JINAGA_ADMIN_CONNECTION_STRING <<-EOSQL
    GRANT SELECT,INSERT ON TABLE public.fact_type TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT, USAGE ON SEQUENCE fact_type_fact_type_id_seq TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT ON TABLE public.role TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT, USAGE ON SEQUENCE role_role_id_seq TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT,DELETE ON TABLE public.fact TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT, USAGE ON SEQUENCE fact_fact_id_seq TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT,DELETE ON TABLE public.edge TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT,DELETE ON TABLE public.ancestor TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT ON TABLE public.public_key TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT, USAGE ON SEQUENCE public_key_public_key_id_seq TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT,DELETE ON TABLE public.signature TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT ON TABLE public.user TO $JINAGA_POSTGRES_APP_USER;
    GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE public.bookmark TO $JINAGA_POSTGRES_APP_USER;
EOSQL
