AppStore-Scripts: generate_demo_diary.sh — 8 zurückdatierte Tagebuch-Einträge

6 Einträge passen örtlich + zeitlich zu den vorigen Demo-Routen
(Hamburg, Berlin, Köln, Stuttgart, Dresden, München), plus
Meilenstein 'Erster Tag bei uns' (2026-03-15) und Tierarzt-Check
(2026-04-28). Mit Tags, GPS und Location-Name.

Ende des Skripts ist ein SQL-Block für die DS, der die Routen
auf die passenden Daten setzt (Routes haben keine API-Felder für
created_at).
This commit is contained in:
rene 2026-05-30 18:36:50 +02:00
parent d7c7fe58e2
commit 55b65195af

View file

@ -0,0 +1,114 @@
#!/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 <<EOF
UPDATE routes SET created_at = '2026-04-05T10:00:00' WHERE name LIKE 'Hamburg%';
UPDATE routes SET created_at = '2026-04-12T11:00:00' WHERE name LIKE 'Berlin%';
UPDATE routes SET created_at = '2026-04-22T14:00:00' WHERE name LIKE 'Köln%';
UPDATE routes SET created_at = '2026-05-02T09:30:00' WHERE name LIKE 'Stuttgart%';
UPDATE routes SET created_at = '2026-05-12T16:00:00' WHERE name LIKE 'Dresden%';
UPDATE routes SET created_at = '2026-05-25T08:00:00' WHERE name LIKE 'München%';
EOF'
SQL