Mnsory/PharmaCore
0
1#!/bin/bash2set -e3 4MSSQL_MEMORY_LIMIT_MB=256 /opt/mssql/bin/sqlservr &5MSSQL_PID=$!6 7echo "Waiting for SQL Server to be ready..."8for i in $(seq 1 30); do9 if /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -Q "SELECT 1" &>/dev/null; then10 echo "SQL Server is ready."11 break12 fi13 echo " attempt $i/30..."14 sleep 315done16 17configure_sql() {18 /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -Q "19 EXEC sp_configure 'show advanced options', 1; RECONFIGURE;20 EXEC sp_configure 'max server memory (MB)', 512; RECONFIGURE;21 EXEC sp_configure 'clr enabled', 0; RECONFIGURE;"22}23 24upload_to_hf() {25 if [ -z "$HF_TOKEN" ]; then26 echo "WARNING: HF_TOKEN is not set. Skipping upload."27 return 128 fi29 if [ ! -f "/app/backend/PharmaCoreDb.bak" ]; then30 echo "WARNING: Backup file not found. Skipping upload."31 return 132 fi33 python3 -c "34from huggingface_hub import HfApi35import os36api = HfApi(token=os.environ['HF_TOKEN'])37api.upload_file(38 path_or_fileobj='/app/backend/PharmaCoreDb.bak',39 path_in_repo='PharmaCoreDb.bak',40 repo_id=os.environ['REPO_ID'],41 repo_type='dataset'42)43print('Upload complete.')44"45}46 47if [ "$MIGRATE_ONLY" = "true" ]; then48 configure_sql49 50 cd /app/backend51 MIGRATE_ONLY=true dotnet PharmaCore.API.dll52 53 /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -Q "54 BACKUP DATABASE PharmaCoreDb55 TO DISK = '/app/backend/PharmaCoreDb.bak'56 WITH FORMAT, INIT;"57 58 upload_to_hf59 60 kill $MSSQL_PID61 exit 062fi63 64configure_sql65 66BACKUP_URL="https://huggingface.co/datasets/${REPO_ID}/resolve/main/PharmaCoreDb.bak"67HTTP_STATUS=$(curl -s -L -o /dev/null -w "%{http_code}" \68 -H "Authorization: Bearer ${HF_TOKEN}" "$BACKUP_URL")69 70if [ "$HTTP_STATUS" -eq 200 ]; then71 curl -L -H "Authorization: Bearer ${HF_TOKEN}" \72 -o /app/backend/PharmaCoreDb.bak "$BACKUP_URL"73 74 /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -Q "75 RESTORE DATABASE PharmaCoreDb76 FROM DISK = '/app/backend/PharmaCoreDb.bak'77 WITH MOVE 'PharmaCoreDb' TO '/var/opt/mssql/data/PharmaCoreDb.mdf',78 MOVE 'PharmaCoreDb_log' TO '/var/opt/mssql/data/PharmaCoreDb_log.ldf',79 REPLACE;"80else81 echo "No remote backup found. Starting with empty database."82fi83 84cd /app/backend && dotnet PharmaCore.API.dll --urls "http://localhost:8080" &85 86caddy run --config /app/Caddyfile --adapter caddyfile &87 88while true; do89 sleep 30090 91 /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -Q "92 BACKUP DATABASE PharmaCoreDb93 TO DISK = '/app/backend/PharmaCoreDb.bak'94 WITH FORMAT, INIT;" || true95 96 upload_to_hf || true97done98 