#!/bin/bash

[[ -z $3 ]] && echo "No username given! Abort..." && exit 1

case $1 in
    --ma|--maria|--maria-db)
        db=mariadb
    ;;

    --po|--postgre|--postgresql)
        db=postgresql
    ;;

    --mo|--mongo|--mongodb)
        db=mongodb

        if [[ -f /usr/bin/mongod ]]; then
            sed -i 's/security:/# security:/g' /etc/mongod.conf
            sed -i 's/    authorization: enabled/#    authorization: enabled/g' /etc/mongod.conf

            systemctl restart mongodb

            sleep 1
        fi
    ;;
esac

case $2 in
    -c|--create)
        pass=$4
        [[ -z $4 ]] && pass=$(grs 64)

        case $db in
            mariadb)
                mariadb << EOF
                DROP USER IF EXISTS $3@localhost;
                DROP USER IF EXISTS $3;
                CREATE USER $3@localhost IDENTIFIED BY '$pass';
                GRANT ALL PRIVILEGES ON *.* TO $3@localhost WITH GRANT OPTION;
                CREATE USER $3 IDENTIFIED BY '$pass';
                GRANT ALL PRIVILEGES ON *.* TO $3 WITH GRANT OPTION;
EOF
            ;;

            postgresql)
                sudo -u postgres psql << EOF
                DROP ROLE $3;
EOF

                sudo -u postgres psql << EOF
                CREATE USER $3 \
                SUPERUSER \
                CREATEDB \
                CREATEROLE \
                INHERIT \
                LOGIN \
                REPLICATION \
                BYPASSRLS \
                PASSWORD \
                '$pass'
EOF
            ;;

            mongodb)
                mongosh << EOF
                    use admin
                    db.dropUser("$3")
                    db.createUser(
                      {
                        user: "$3",
                        pwd: "$pass",
                        roles: [ { role: "root", db: "admin" } ]
                      }
                    )
EOF
            ;;
        esac

        echo "Username: $3"
        echo "Password: $pass"
    ;;

    -d|--del|--delete)
        mariadb << EOF
        DROP USER IF EXISTS $3@localhost;
        DROP USER IF EXISTS $3;
EOF
    ;;

    *)
        echo "Unknown argument"
        sleep 1.5

        exit 1
    ;;
esac

sleep 2

[[ $db == "mongodb" ]] && if [[ -f /usr/bin/mongod ]]; then
    sed -i 's/# security:/security:/g' /etc/mongod.conf
    sed -i 's/#    authorization: enabled/     authorization: enabled/g' /etc/mongod.conf

    systemctl restart mongodb
fi