#!/usr/bin/with-contenv bashio

# shellcheck source=lib.sh
touch /var/scripts/fetch_lib.sh
source /var/scripts/fetch_lib.sh || source <(curl -sL https://raw.githubusercontent.com/nextcloud/vm/master/lib.sh)

# Get all needed variables from the library
ncdb
nc_update
es_install

# Check for errors + debug code and abort if something isn't right
# 1 = ON
# 0 = OFF
DEBUG=0
debug_mode

# Must be root
root_check

# https://raw.githubusercontent.com/nextcloud/vm/master/apps/fulltextsearch.sh
# T&M Hansson IT AB © - 2021, https://www.hanssonit.se/
# SwITNet Ltd © - 2021, https://switnet.net/

if [ bashio::config.is_true 'install_elasticsearch' ] && [ ! is_app_installed "fulltextsearch" ]; then
    echo "Installing Full Text Search"

    true
    SCRIPT_NAME="Full Text Search"
    SCRIPT_EXPLAINER="Full Text Search provides Elasticsearch for Nextcloud, which makes it possible to search for text inside files."
    :
    # Make sure there is an Nextcloud installation
    if ! [ "$(nextcloud_occ -V)" ]; then
        echo "It seems there is no Nextcloud server installed, please check your installation."
        exit 1
    fi

    # Install OCR if requested
    # Reset Full Text Search to be able to index again, and also remove the app to be able to install it again
    nextcloud_occ_no_check fulltextsearch:reset
    APPS=(fulltextsearch fulltextsearch_elasticsearch files_fulltextsearch)
    for app in "${APPS[@]}"; do
        if is_app_installed "$app"; then
            nextcloud_occ app:remove "$app"
        fi
    done

    # Disable and remove Nextant + Solr
    if is_app_installed nextant; then
        # Remove Nextant
        echo "We will now remove Nextant + Solr and replace it with Full Text Search"
        nextcloud_occ app:remove nextant

        # Remove Solr
        systemctl stop solr.service
        rm -rf /var/solr
        rm -rf /opt/solr*
        rm /etc/init.d/solr
        deluser --remove-home solr
        deluser --group solr
    fi

    # Check if the app is compatible with the current Nextcloud version
    if ! install_and_enable_app fulltextsearch; then
        exit 1
    fi

    # Get Full Text Search app for nextcloud
    echo "... installing apps : fulltextsearch"
    install_and_enable_app fulltextsearch
    echo "... installing apps : fulltextsearch_elasticsearch"
    install_and_enable_app fulltextsearch_elasticsearch
    echo "... installing apps : files_fulltextsearch"
    install_and_enable_app files_fulltextsearch
    echo "... updating permissions"
    chown -R abc:abc $NC_APPS_PATH

    # Final setup
    echo "... creating base_config"
    nextcloud_occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
    nextcloud_occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://${INDEX_USER}:${ROREST}@localhost:9200\",\"elastic_index\":\"${INDEX_USER}-index\"}"
    nextcloud_occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
    # Wait further for cache for index to work
    countdown "Waiting for a few seconds before indexing starts..." "10"
    if nextcloud_occ fulltextsearch:index </dev/null; then
        bashio::log.info "Full Text Search was successfully installed!"
    fi
fi
