#!/bin/bash
# Unified Odoo start script for all versions (17 / 18 / 19).
# Called by startContainer with IMAGE_TAG exported, e.g.:
#   IMAGE_TAG=odoo_19 /4server/sbin/start/odoo
#
# Requires (exported by startContainer before this is called):
#   CONTAINER_ID, IMAGE_TAG, SOFTWARE, DB_NAME

_self="$(realpath "${BASH_SOURCE[0]:-$0}")"; SBIN_ROOT="$(dirname "$(dirname "$_self")")"  # parent of start/
source "$SBIN_ROOT/helpers"
source "$SBIN_ROOT/odoo.lib"
load_container_config "$CONTAINER_ID"
get_contract_info

BRANCH="${BRANCH:-release}"
DB_NAME="${DB_NAME:-$CONTAINER_ID}"
ODOO_DB_USER="$DB_NAME"

log "Starting Odoo container: CONTAINER_ID=$CONTAINER_ID IMAGE_TAG=$IMAGE_TAG DB_NAME=$DB_NAME"

BASEURL="/4server/data/$CONTAINER_ID"
DATA_DIR="$BASEURL/odoo"
CUSTOM_DIR="$BASEURL/git/$CONTAINER_ID/custom"
ENTERPRISE_DIR="$BASEURL/git/$CONTAINER_ID/enterprise"
LOGS_DIR="$BASEURL/logs"
CONFIG_DIR="$BASEURL/config"
CC_DIR="$BASEURL/cc"
BACKUP_DIR="/BACKUP/$CONTAINER_ID"
GIT_DIR="$BASEURL/git-server"
INSTALL_DIR="$BASEURL/install"
SSH_DIR="$BASEURL/.ssh"
ETC_DIR="$BASEURL/etc"

PORT=$((CONTAINERDBID + 2200))
log "SSH port: $PORT"

# --- prepare directories ---
find "$BASEURL" -type d -exec chmod 777 {} \;
mkdir -p "$ETC_DIR" "$BACKUP_DIR" "$GIT_DIR/keys" "$INSTALL_DIR" "$SSH_DIR"
chmod 777 "$ETC_DIR" "$BACKUP_DIR" "$GIT_DIR"
touch "$GIT_DIR/keys/id_rsa.pub"
echo "git clone \"ssh://git@${CONTAINER_ID}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "$ETC_DIR/gitpath"

# --- build Traefik domain rule (exports DOMAIN_LABEL) ---
build_traefik_rule

# --- stop and remove any existing container ---
docker stop "$CONTAINER_ID" 2>/dev/null || true
docker rm   "$CONTAINER_ID" 2>/dev/null || true

# --- run ---
docker run -d --name "$CONTAINER_ID" \
    --network 4server_4projects \
    --restart=always \
    -v "$DATA_DIR/odoo-web-data:/home/odoo/.local/share/Odoo" \
    -v "$CUSTOM_DIR:/mnt/addons/custom" \
    -v "$ENTERPRISE_DIR:/mnt/addons/enterprise" \
    -v "$LOGS_DIR:/mnt/logs" \
    -v "$CC_DIR:/mnt/cc" \
    -v "$BACKUP_DIR:/mnt/backup" \
    -v "$GIT_DIR:/git-server" \
    -v "$INSTALL_DIR:/mnt/install" \
    -v "$SSH_DIR:/etc/sshkey" \
    -v "$ETC_DIR:/mnt/etc" \
    -p "$PORT:22" \
    -e HOST="beedb" \
    -e USER="$ODOO_DB_USER" \
    -e PASSWORD="$ODOO_DB_PASSWORD" \
    -e CONTAINER_ID="$CONTAINER_ID" \
    -e DB_NAME="$DB_NAME" \
    -e HDD="$HDD" \
    -e DOMAINS_SLOTS="$DOMAINS_SLOTS" \
    -e BACKUP_SLOTS="$BACKUP_SLOTS" \
    -e WORKER="$WORKER" \
    -e GIT="$GIT" \
    --label "$DOMAIN_LABEL" \
    --label "traefik.http.services.$CONTAINER_ID.loadbalancer.server.port=8069" \
    --label "traefik.http.routers.$CONTAINER_ID.entrypoints=web,websecure" \
    --label "traefik.http.routers.$CONTAINER_ID.tls=true" \
    --label "traefik.http.routers.$CONTAINER_ID.tls.certresolver=production" \
    --label "traefik.http.routers.$CONTAINER_ID.service=$CONTAINER_ID" \
    "docker.odoo4projects.com/4projects/${IMAGE_TAG}:${BRANCH}" \
    || die "docker run failed for $CONTAINER_ID"

# --- fix ownership inside container ---
docker exec "$CONTAINER_ID" chown -R odoo:odoo /home/odoo/.local
docker exec "$CONTAINER_ID" chown -R odoo:odoo /mnt
docker exec "$CONTAINER_ID" chown -R git:git   /git-server
chmod 777 "$CC_DIR"

# --- ensure DB/user exist, restore from default.zip if brand new ---
check_and_create_db
