- Create scripts/init-db.sql for DB schema initialization - Enhance start-services.sh to auto-initialize DB if needed - Fix users admin handler: change root route from '/users' to '/' to avoid double prefix - Remove deprecated handlers (departments/designations/employees) from users service - Add missing admin route mappings for users and approval/case endpoints in gateway - Update gateway to correctly handle /api/admin/users, /api/admin/approvals, etc. - Update .env.example and docs These changes enable running the stack without Docker and fix admin panel routing.
66 lines
2.5 KiB
Bash
Executable file
66 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
set -a
|
|
source .env
|
|
set +a
|
|
|
|
# ── Initialize PostgreSQL database if needed ────────────────────────────────────
|
|
echo "Initializing database..."
|
|
|
|
# Use DATABASE_URL from .env to run init script
|
|
export PGPASSWORD=${POSTGRES_PASSWORD:-nxtgauge_dev}
|
|
|
|
# Check if database is accessible and if the 'roles' table exists as a heuristic
|
|
if psql "${DATABASE_URL:-postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@localhost:5432/nxtgauge_db}" -c '\q' 2>/dev/null; then
|
|
# Try to see if the schema is already initialized (check for 'roles' table)
|
|
if ! psql "${DATABASE_URL:-postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@localhost:5432/nxtgauge_db}" -t -c "SELECT to_regname('roles');" 2>/dev/null | grep -q '^roles$'; then
|
|
echo "Applying database schema..."
|
|
psql "${DATABASE_URL:-postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@localhost:5432/nxtgauge_db}" -f scripts/init-db.sql
|
|
else
|
|
echo "Database schema already initialized."
|
|
fi
|
|
else
|
|
echo "ERROR: Cannot connect to PostgreSQL. Make sure PostgreSQL is running on localhost:5432."
|
|
echo "Start PostgreSQL and try again."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Building workspace..."
|
|
cargo build --workspace
|
|
|
|
echo "Stopping any previously running services..."
|
|
pkill -f "target/debug/gateway" || true
|
|
pkill -f "target/debug/users" || true
|
|
pkill -f "target/debug/companies" || true
|
|
pkill -f "target/debug/job_seekers" || true
|
|
pkill -f "target/debug/customers" || true
|
|
pkill -f "target/debug/photographers" || true
|
|
pkill -f "target/debug/makeup_artists" || true
|
|
pkill -f "target/debug/tutors" || true
|
|
pkill -f "target/debug/developers" || true
|
|
pkill -f "target/debug/video_editors" || true
|
|
pkill -f "target/debug/graphic_designers" || true
|
|
pkill -f "target/debug/social_media_managers" || true
|
|
pkill -f "target/debug/fitness_trainers" || true
|
|
pkill -f "target/debug/catering_services" || true
|
|
pkill -f "target/debug/ugc_content_creators" || true
|
|
pkill -f "target/debug/employees" || true
|
|
|
|
apps=(
|
|
"gateway" "users" "companies" "job_seekers" "customers"
|
|
"photographers" "makeup_artists" "tutors" "developers" "video_editors"
|
|
"graphic_designers" "social_media_managers" "fitness_trainers" "catering_services"
|
|
"ugc_content_creators" "employees"
|
|
)
|
|
|
|
for app in "${apps[@]}"; do
|
|
if [[ -x "./target/debug/$app" ]]; then
|
|
echo "Starting $app..."
|
|
nohup ./target/debug/$app > "$app.log" 2>&1 &
|
|
else
|
|
echo "Skipping $app (binary not found at ./target/debug/$app)"
|
|
fi
|
|
done
|
|
|
|
echo "All available services booted up!"
|