diff --git a/dev.sh b/dev.sh index e62e7b5..646c722 100755 --- a/dev.sh +++ b/dev.sh @@ -1,82 +1,82 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Sidelinja — start alt for lokal utvikling -# Bruk: ./dev.sh [--clean] -# --clean Sletter SpacetimeDB-data og starter blankt - -ROOT="$(cd "$(dirname "$0")" && pwd)" -SPACETIME_URL="http://127.0.0.1:3000" -SPACETIME_MODULE="sidelinja-realtime" -SPACETIME_SERVER="local" - -# === Rens ved behov === -if [[ "${1:-}" == "--clean" ]]; then - echo "=== Renser SpacetimeDB-data ===" - docker compose -f "$ROOT/docker-compose.dev.yml" --env-file "$ROOT/.env.local" \ - rm -sf spacetimedb 2>/dev/null || true - rm -rf "$ROOT/.docker-data/spacetimedb" - mkdir -p "$ROOT/.docker-data/spacetimedb" -fi - -# === 1. Docker-tjenester === -echo "=== Starter Docker-tjenester ===" -docker compose -f "$ROOT/docker-compose.dev.yml" --env-file "$ROOT/.env.local" up -d - -# === 2. Vent på SpacetimeDB === -echo "=== Venter på SpacetimeDB ===" -timeout 30 bash -c "until curl -sf $SPACETIME_URL/v1/ping > /dev/null 2>&1; do sleep 1; done" \ - || { echo "FEIL: SpacetimeDB svarte ikke innen 30s"; exit 1; } -echo "SpacetimeDB klar" - -# === 3. Konfigurer spacetime CLI (håndterer ny fingerprint automatisk) === -echo "=== Konfigurerer SpacetimeDB CLI ===" -spacetime server remove "$SPACETIME_SERVER" 2>/dev/null || true -spacetime server add "$SPACETIME_SERVER" --url "$SPACETIME_URL" --default 2>/dev/null || true - -# === 4. Publiser modul === -echo "=== Publiserer SpacetimeDB-modul ===" -cd "$ROOT/spacetimedb" -spacetime publish "$SPACETIME_MODULE" --server "$SPACETIME_SERVER" 2>&1 \ - | grep -v "wasm-opt\|Would you like\|WARNING.*UNSTABLE" || true -echo "Modul publisert" - -# === 5. Generer TypeScript-bindinger === -echo "=== Genererer TypeScript-bindinger ===" -spacetime generate --lang typescript \ - --out-dir "$ROOT/web/src/lib/chat/module_bindings" \ - --module-path . -echo "Bindinger generert" - -# === 6. Start worker + frontend === -echo "" -echo "=== Starter worker + frontend ===" - -cd "$ROOT/worker" -cargo run -- --spacetimedb-url "$SPACETIME_URL" --sync-interval 1 --warmup-limit 100 2>&1 | sed 's/^/[worker] /' & -WORKER_PID=$! - -cd "$ROOT/web" -npm run dev 2>&1 | sed 's/^/[frontend] /' & -FRONTEND_PID=$! - -cleanup() { - echo "" - echo "Stopper worker og frontend..." - kill $WORKER_PID $FRONTEND_PID 2>/dev/null - wait $WORKER_PID $FRONTEND_PID 2>/dev/null - echo "Stoppet. Docker-tjenester kjører fortsatt (bruk 'docker compose down' for å stoppe)." -} -trap cleanup EXIT INT TERM - -echo "" -echo "Alt kjører:" -echo " Frontend: http://localhost:5173" -echo " SpacetimeDB: $SPACETIME_URL" -echo " PostgreSQL: localhost:5432" -echo " Worker PID: $WORKER_PID" -echo "" -echo "Ctrl+C for å stoppe worker + frontend." -echo "" - -wait +#!/usr/bin/env bash +set -euo pipefail + +# Sidelinja — start alt for lokal utvikling +# Bruk: ./dev.sh [--clean] +# --clean Sletter SpacetimeDB-data og starter blankt + +ROOT="$(cd "$(dirname "$0")" && pwd)" +SPACETIME_URL="http://127.0.0.1:3000" +SPACETIME_MODULE="sidelinja-realtime" +SPACETIME_SERVER="local" + +# === Rens ved behov === +if [[ "${1:-}" == "--clean" ]]; then + echo "=== Renser SpacetimeDB-data ===" + docker compose -f "$ROOT/docker-compose.dev.yml" --env-file "$ROOT/.env.local" \ + rm -sf spacetimedb 2>/dev/null || true + rm -rf "$ROOT/.docker-data/spacetimedb" + mkdir -p "$ROOT/.docker-data/spacetimedb" +fi + +# === 1. Docker-tjenester === +echo "=== Starter Docker-tjenester ===" +docker compose -f "$ROOT/docker-compose.dev.yml" --env-file "$ROOT/.env.local" up -d + +# === 2. Vent på SpacetimeDB === +echo "=== Venter på SpacetimeDB ===" +timeout 30 bash -c "until curl -sf $SPACETIME_URL/v1/ping > /dev/null 2>&1; do sleep 1; done" \ + || { echo "FEIL: SpacetimeDB svarte ikke innen 30s"; exit 1; } +echo "SpacetimeDB klar" + +# === 3. Konfigurer spacetime CLI (håndterer ny fingerprint automatisk) === +echo "=== Konfigurerer SpacetimeDB CLI ===" +spacetime server remove "$SPACETIME_SERVER" 2>/dev/null || true +spacetime server add "$SPACETIME_SERVER" --url "$SPACETIME_URL" --default 2>/dev/null || true + +# === 4. Publiser modul === +echo "=== Publiserer SpacetimeDB-modul ===" +cd "$ROOT/spacetimedb" +spacetime publish "$SPACETIME_MODULE" --server "$SPACETIME_SERVER" 2>&1 \ + | grep -v "wasm-opt\|Would you like\|WARNING.*UNSTABLE" || true +echo "Modul publisert" + +# === 5. Generer TypeScript-bindinger === +echo "=== Genererer TypeScript-bindinger ===" +spacetime generate --lang typescript \ + --out-dir "$ROOT/web/src/lib/chat/module_bindings" \ + --module-path . +echo "Bindinger generert" + +# === 6. Start worker + frontend === +echo "" +echo "=== Starter worker + frontend ===" + +cd "$ROOT/worker" +cargo run -- --spacetimedb-url "$SPACETIME_URL" --sync-interval 1 --warmup-limit 100 2>&1 | sed 's/^/[worker] /' & +WORKER_PID=$! + +cd "$ROOT/web" +npm run dev 2>&1 | sed 's/^/[frontend] /' & +FRONTEND_PID=$! + +cleanup() { + echo "" + echo "Stopper worker og frontend..." + kill $WORKER_PID $FRONTEND_PID 2>/dev/null + wait $WORKER_PID $FRONTEND_PID 2>/dev/null + echo "Stoppet. Docker-tjenester kjører fortsatt (bruk 'docker compose down' for å stoppe)." +} +trap cleanup EXIT INT TERM + +echo "" +echo "Alt kjører:" +echo " Frontend: http://localhost:5173" +echo " SpacetimeDB: $SPACETIME_URL" +echo " PostgreSQL: localhost:5432" +echo " Worker PID: $WORKER_PID" +echo "" +echo "Ctrl+C for å stoppe worker + frontend." +echo "" + +wait diff --git a/worker/src/warmup.rs b/worker/src/warmup.rs index bec8e76..7cb5aa7 100644 --- a/worker/src/warmup.rs +++ b/worker/src/warmup.rs @@ -129,7 +129,7 @@ pub async fn run( SELECT mr.message_id::text, COALESCE(mr.user_id, ''), - COALESCE(u.name, 'Ukjent'), + COALESCE(u.display_name, 'Ukjent'), mr.reaction FROM message_reactions mr JOIN messages m ON m.id = mr.message_id @@ -188,9 +188,9 @@ const MESSAGE_COLUMNS: &str = r#" m.channel_id::text, n.workspace_id::text, COALESCE(m.author_id, ''), - COALESCE(u.name, 'Ukjent'), + COALESCE(u.display_name, 'Ukjent'), COALESCE(m.body, ''), - COALESCE(m.message_type, 'text'), + COALESCE(m.message_type::text, 'text'), m.reply_to::text, m.created_at::text "#;