Sprint 8: Events + Hundesitting
Events: - Backend events.py: CRUD, Typen (ausstellung/training/treffen/markt/wettkampf/sonstiges) Haversine-Filter, Monats-Gruppierung in der Liste - Frontend events.js: Liste/Karte-Toggle, Typ-Filter-Chips, farbige Marker, Detail-Modal, Erstellen/Bearbeiten-Formular mit GPS-Button Hundesitting: - Backend sitting.py: Sitter-Profile (create/update/me), Anfragen (send/accept/decline/cancel), Inbox für Sitter, Haversine-Sortierung, Service-Filter - Frontend sitting.js: 3 Tabs (Suchen/Profil/Anfragen), Sitter-Karten mit Distanz, Detail-Modal + Anfrage-Formular, Profil-Verwaltung DB: events, sitters, sitting_requests Tabellen hinzugefügt SW-Cache: by-v21 → by-v22
This commit is contained in:
parent
ec17dfb029
commit
5f8fd3bd51
9 changed files with 1680 additions and 2 deletions
|
|
@ -249,6 +249,52 @@ def init_db():
|
|||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
-- EVENTS (Hundeveranstaltungen)
|
||||
CREATE TABLE IF NOT EXISTS events (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
titel TEXT NOT NULL,
|
||||
datum TEXT NOT NULL, -- YYYY-MM-DD
|
||||
uhrzeit TEXT,
|
||||
lat REAL,
|
||||
lon REAL,
|
||||
ort_name TEXT,
|
||||
typ TEXT NOT NULL DEFAULT 'sonstiges',
|
||||
beschreibung TEXT,
|
||||
link TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'aktiv',
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_events_datum ON events(datum ASC);
|
||||
|
||||
-- SITTING — Sitter-Profile
|
||||
CREATE TABLE IF NOT EXISTS sitters (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL UNIQUE REFERENCES users(id) ON DELETE CASCADE,
|
||||
beschreibung TEXT,
|
||||
preis_pro_tag REAL DEFAULT 0,
|
||||
max_hunde INTEGER DEFAULT 1,
|
||||
lat REAL,
|
||||
lon REAL,
|
||||
radius_km INTEGER DEFAULT 20,
|
||||
services TEXT DEFAULT '[]', -- JSON: ['tagesbetreuung','uebernachtung','gassi','hausbesuch']
|
||||
aktiv INTEGER NOT NULL DEFAULT 1,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
-- SITTING — Anfragen
|
||||
CREATE TABLE IF NOT EXISTS sitting_requests (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id), -- Anfragender
|
||||
sitter_id INTEGER NOT NULL REFERENCES sitters(id),
|
||||
dog_ids TEXT DEFAULT '[]', -- JSON Array
|
||||
von TEXT NOT NULL, -- YYYY-MM-DD
|
||||
bis TEXT NOT NULL,
|
||||
nachricht TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'offen', -- offen|angenommen|abgelehnt|abgebrochen
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
-- TIERÄRZTE (user-level, nie löschen — Historien-Erhalt bei Umzug)
|
||||
CREATE TABLE IF NOT EXISTS tieraerzte (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue