#!/usr/bin/env bash # # Schreibt 8 Tagebuch-Einträge mit zurückdatierten Datums über die # letzten ~10 Wochen. 6 davon passen örtlich/zeitlich zu den vorher # generierten Routen, 2 sind „Alltag" (Milestone + Tierarzt). # # Routen-Daten (passen zu den vorigen 6 Demo-Routen): # 2026-04-05 Hamburg Stadtpark # 2026-04-12 Berlin Tempelhofer Feld # 2026-04-22 Köln Stadtwald # 2026-05-02 Stuttgart Schlossgarten # 2026-05-12 Dresden Großer Garten # 2026-05-25 München Englischer Garten # # Plus: # 2026-03-15 Milestone „Erster Tag bei uns" # 2026-04-28 Tierarzt-Check # # Aufruf: # ./AppStore/scripts/generate_demo_diary.sh set -euo pipefail BASE="https://banyaro.app" command -v jq >/dev/null || { echo "❌ jq fehlt"; exit 1; } command -v curl >/dev/null || { echo "❌ curl fehlt"; exit 1; } echo "📓 Demo-Tagebuch: 8 Einträge über die letzten ~10 Wochen" echo "" read -r -p "E-Mail: " EMAIL read -r -s -p "Passwort: " PASS; echo "" echo "" LOGIN_RESP=$(curl -s -X POST "$BASE/api/auth/login" \ -H "Content-Type: application/json" \ -d "$(jq -nc --arg e "$EMAIL" --arg p "$PASS" '{email:$e,password:$p}')") TOKEN=$(echo "$LOGIN_RESP" | jq -r '.token // empty') if [ -z "$TOKEN" ]; then echo "❌ Login fehlgeschlagen:"; echo "$LOGIN_RESP" | jq .; exit 1 fi echo "✓ Eingeloggt" DOG_ID=$(curl -s "$BASE/api/dogs" -H "Authorization: Bearer $TOKEN" | jq -r '.[0].id // empty') if [ -z "$DOG_ID" ]; then echo "❌ Kein Hund am Account"; exit 1 fi echo "✓ Hund-ID $DOG_ID" echo "" # datum|typ|titel|text|tags_json|lat|lon|location_name|milestone ENTRIES=( "2026-03-15|meilenstein|Erster Tag bei uns|Heute ist es so weit — Luna ist eingezogen. Schaut sich alles aufgeregt an, hat schon zweimal das Sofa erobert.|[\"milestone\",\"einzug\"]|||| true" "2026-04-05|eintrag|Hamburg Stadtpark|Wochenend-Trip in den Norden. Erstes Frühlings-Gassi im Stadtpark, Luna hat eine Stunde geschnüffelt und sich danach in der Sonne ausgestreckt.|[\"spaziergang\",\"park\",\"reise\"]|53.5905|10.0144|Hamburger Stadtpark|false" "2026-04-12|eintrag|Tempelhofer Feld|Mega weiter Himmel und Wind unter den Pfoten. Luna findet das große Freilauffeld klasse, hat anderen Hunden Hallo gesagt ohne Drama.|[\"spaziergang\",\"freilauf\",\"reise\"]|52.4734|13.4023|Tempelhofer Feld|false" "2026-04-22|eintrag|Erste Zecke im Jahr|Heute im Kölner Stadtwald die erste Zecke entdeckt — beim Auskämmen am Abend gefunden, sauber rausgezogen. Spot-on jetzt für die Saison.|[\"gesundheit\",\"zecken\"]|50.9290|6.9094|Kölner Stadtwald|false" "2026-04-28|eintrag|Tierarzt-Check|Jahres-Untersuchung war fällig. Gewicht passt, Zähne ok, Impfung Tollwut+Lepto erneuert. Nächster Termin in 12 Monaten.|[\"tierarzt\",\"impfung\"]||||false" "2026-05-02|eintrag|Stuttgart Schlossgarten|Brückentag genutzt, kurzer Schwabenausflug. Schlossgarten mittendrin in der Stadt, viele Menschen aber Luna bleibt cool.|[\"spaziergang\",\"reise\"]|48.7796|9.1822|Stuttgart Schlossgarten|false" "2026-05-12|eintrag|Dresden Großer Garten|Verlängertes Maiwochenende in Dresden. Der Große Garten ist riesig, die kleine Bahn fährt sogar noch — Luna fand sie unbeeindruckend.|[\"spaziergang\",\"park\",\"reise\"]|51.0354|13.7607|Dresden Großer Garten|false" "2026-05-25|eintrag|Sommer im Englischen Garten|Erster richtiger Sommertag in München. Englischer Garten ab 8 Uhr früh, danach im Eisbach abgekühlt. Luna hat alle Pfoten ins Wasser gehalten.|[\"spaziergang\",\"sommer\",\"reise\"]|48.1641|11.6053|Englischer Garten München|false" ) saved=0 for entry in "${ENTRIES[@]}"; do IFS='|' read -r datum typ titel text tags lat lon loc milestone <<< "$entry" printf "→ %-32s %s ... " "$datum" "$titel" BODY=$(jq -nc \ --arg datum "$datum" \ --arg typ "$typ" \ --arg titel "$titel" \ --arg text "$text" \ --argjson tags "$tags" \ --argjson dog "$DOG_ID" \ --argjson ms "$milestone" \ --arg lat "$lat" \ --arg lon "$lon" \ --arg loc "$loc" \ '{ datum:$datum, typ:$typ, titel:$titel, text:$text, tags:$tags, dog_ids:[$dog], is_milestone:$ms, gps_lat: (if $lat == "" then null else ($lat|tonumber) end), gps_lon: (if $lon == "" then null else ($lon|tonumber) end), location_name: (if $loc == "" then null else $loc end) }') RESP=$(curl -s -X POST "$BASE/api/dogs/$DOG_ID/diary" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d "$BODY") ID=$(echo "$RESP" | jq -r '.id // empty') if [ -n "$ID" ] && [ "$ID" != "null" ]; then echo "✓ #$ID" saved=$((saved + 1)) else echo "✗" echo "$RESP" | jq . | sed 's/^/ /' fi done echo "" echo "Fertig: $saved von ${#ENTRIES[@]} Tagebuch-Einträge gespeichert." echo "" echo "ROUTEN AUCH ZURÜCKDATIEREN (auf der DS):" cat <<'SQL' ssh -t ds 'sudo sqlite3 /volume1/docker/banyaro/data/banyaro.db <