#!/bin/bash

# Define your environment variables here
APP_NAME="online-energieausweis"
APP_PORT=3000
DB_CONTAINER_NAME="database"
DB_NAME="main"
DB_USER="main"
DB_PASSWORD="hHMP8cd^N3SnzGRR"
DB_PORT=5432

# Wir gehen davon aus, dass die Änderungen bereits von GitHub gepullt wurden
# Dieses Skript ist nur dafür gedacht, von GitHub bei einer Automation
# ausgeführt zu werden. Außerdem würde es nicht wirklich Sinn ergeben, wenn das
# Build Skript sich die Änderungen am build Skript holen würde...
# Wir müssen alle lokalen Pakete verlinken

# --------------------------------- Database --------------------------------- #

cd ../database
bun link
bun install

# ------------------------------------ API ----------------------------------- #

cd ../api
bun install
bun link @ibcornelsen/database

# ------------------------------------ APP ----------------------------------- #

cd ../$APP_NAME
bun install
bun link @ibcornelsen/database

# Jeder unserer Applikationen hat ein Verzeichnis in dem alle Dateien dauerhaft,
# Versionsunabhängig gespeichert werden. Dieses legen wir hier an, falls es noch
# nicht existiert.
PERSISTENT_DIR="${HOME}/persistent/${APP_NAME}";
mkdir -p $PERSISTENT_DIR;

# Wir legen hier die .env Datei an, die die SSL Zertifikate enthält.
rm -f ~/$APP_NAME/.env;
touch ~/$APP_NAME/.env;
echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;

# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
if [ ! $((docker ps | grep $DB_CONTAINER_NAME) | wc -l) -gt 0 ]; then
	cd ../database;
	bash build.sh;
	cd ../$APP_NAME;
fi

# Auch die API sollte bereits laufen
if [ $(pm2 pid api) -eq "0" ]; then
	cd ../api;
	make prod;
	cd ../$APP_NAME;
fi

# Jetzt wo wir alle Vorbereitungen getroffen haben, starten wir das Docker Image und linken es mit der Datenbank.
# docker run -d --name $APP_NAME --link $DB_CONTAINER_NAME \
# 	-v "${PERSISTENT_DIR}:/persistent" \
# 	-v "./node_modules/@ibcornelsen/database:/${APP_NAME}/node_modules/@ibcornelsen/database" \
# 	-v "./node_modules/@ibcornelsen/api:/${APP_NAME}/node_modules/@ibcornelsen/api" \
# 	-v "./node_modules/@ibcornelsen/ui:/${APP_NAME}/node_modules/@ibcornelsen/ui" \
# 	-p "${APP_PORT}:3000" \
# 	$APP_NAME;

make prod