diff --git a/deployment/restart_frontend.sh b/deployment/restart_frontend.sh new file mode 100755 index 0000000..01dc15d --- /dev/null +++ b/deployment/restart_frontend.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# +# Restart IDS Frontend (Node.js/Express/Vite) +# Utility per restart manuale del server frontend +# + +set -e + +echo "πŸ”„ Restart Frontend Node.js..." + +# Kill processi Vite esistenti +echo "⏸️ Stopping existing processes..." +pkill -f "vite" 2>/dev/null || true +pkill -f "npm run dev" 2>/dev/null || true +sleep 2 + +# Verifica porta 5000 libera +if lsof -Pi :5000 -sTCP:LISTEN -t >/dev/null 2>&1; then + echo "⚠️ Porta 5000 occupata, killing processo..." + lsof -ti:5000 | xargs kill -9 2>/dev/null || true + sleep 1 +fi + +# Restart usando check_frontend.sh +echo "πŸš€ Starting frontend..." +/opt/ids/deployment/check_frontend.sh + +# Attendi avvio +sleep 3 + +# Verifica +if pgrep -f "vite" > /dev/null; then + PID=$(pgrep -f "vite") + echo "βœ… Frontend avviato con PID: $PID" + echo "πŸ“‘ Server disponibile su: http://localhost:5000" +else + echo "❌ Errore: Frontend non avviato!" + echo "πŸ“‹ Controlla log: tail -f /var/log/ids/frontend.log" + exit 1 +fi diff --git a/shared/schema.ts b/shared/schema.ts index 7fbdc43..0c711a6 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -1,5 +1,5 @@ import { sql, relations } from "drizzle-orm"; -import { pgTable, text, varchar, integer, timestamp, decimal, boolean, index, bigint } from "drizzle-orm/pg-core"; +import { pgTable, text, varchar, integer, timestamp, decimal, boolean, index, bigint, unique } from "drizzle-orm/pg-core"; import { createInsertSchema } from "drizzle-zod"; import { z } from "zod"; @@ -121,6 +121,8 @@ export const networkAnalytics = pgTable("network_analytics", { }, (table) => ({ dateHourIdx: index("network_analytics_date_hour_idx").on(table.date, table.hour), dateIdx: index("network_analytics_date_idx").on(table.date), + // CRITICAL: Vincolo UNIQUE per ON CONFLICT in aggregator + dateHourUnique: unique("network_analytics_date_hour_key").on(table.date, table.hour), })); // Schema version tracking for database migrations