Sprint 15: Suche, Ausweis, Teilen, Widget
- Volltext-Suche im Tagebuch (LIKE über Titel/Text/Tags, Debounce 350ms)
- Digitaler Heimtierausweis als druckbare HTML-Seite (/ausweis/{dog_id})
Enthält Impfungen, Medikamente, Allergien, Tierärzte, Chip-Nr.
- Hund teilen: Einladungslink-System (dog_shares-Tabelle, /teilen/{token})
Geteilte Hunde erscheinen in der Hundeliste, Tagebuch/Gesundheit lesbar
- Widget-Seite /#widget: zufälliges Tagebuchbild + nächste Erinnerung
Als PWA-Shortcut im Manifest verankert
- SW-Cache by-v144, APP_VER 117
This commit is contained in:
parent
d5f09cd16b
commit
34f29f9d0a
16 changed files with 917 additions and 35 deletions
|
|
@ -630,3 +630,21 @@ def _migrate(conn_factory):
|
|||
SELECT id, dog_id FROM diary
|
||||
""")
|
||||
logger.info("Migration: diary_dogs Backfill abgeschlossen.")
|
||||
|
||||
# Hund-Teilen: Einladungssystem
|
||||
conn.executescript("""
|
||||
CREATE TABLE IF NOT EXISTS dog_shares (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
dog_id INTEGER NOT NULL REFERENCES dogs(id) ON DELETE CASCADE,
|
||||
owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
shared_with_id INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
invite_token TEXT NOT NULL UNIQUE,
|
||||
role TEXT NOT NULL DEFAULT 'editor',
|
||||
accepted_at TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_dog_shares_dog ON dog_shares(dog_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_dog_shares_token ON dog_shares(invite_token);
|
||||
CREATE INDEX IF NOT EXISTS idx_dog_shares_user ON dog_shares(shared_with_id);
|
||||
""")
|
||||
logger.info("Migration: dog_shares Tabelle bereit.")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue